QueryTable
QueryTable是一种结构化的hql语句的描述方式,可以通过它描述table、aliasName、relation、where、order by 、join等常见的数据库查询概念,然后通过QueryBuilder自动转换成hql,从而进行数据库查询操作
数据过滤
在画面上表现为工具栏筛选器 具体用法见 查询器
在代码层面主要是对QueryTable 构造QueryWhere 并且 setValue
构造方法
createWhereItem(String)
在QueryTable 对象里面 增加一个指定表字段的where条件
方法签名
gongqi.erp.gotmodel.query.QueryTable.createWhereItem(String)
方法入参
- String filed:字段名称 一般写法是 用 表字段引用 如 SysUser._UserId
示例代码
@CommandArgOption(groups="all(fq)")
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
//在buttonOK 方法内 获取到当前数据源的 FormQuery
QueryTable queryTable = arg.getFormQuery();
//使用createWhereItem方法创建一个userId字段的过滤条件
queryTable.createWhereItem(SysUser._UserId);
//使用updateQuery更新FormQuery 并重新执行查询
result.updateQuery(queryTable);
return result;
}
createWhereItem(String, QueryWhereStatus)
与createWhereItem 方法作用相同 增加QueryWhereStatus 参数 用于控制该条件开发性
方法签名
gongqi.erp.gotmodel.query.QueryTable.createWhereItem(String,QueryWhereStatus)
方法入参
- String filed:字段名称 一般写法是 用 表字段引用 如 SysUser._UserId
- QueryWhereStatus status:控制该条件开发性
- QueryWhereStatus.Open:公开 可在客户端筛选器内查看和修改删除
- QueryWhereStatus.Lock:可见但是锁定 可在客户端筛选器内查看不能修改删除
- QueryWhereStatus.Hide:隐藏 不在客户端筛选器内查看不能修改
- QueryWhereStatus.OnlyUpdate:仅可以修改 可在客户端筛选器内查看能修改 不能删除
示例代码
@CommandArgOption(groups="all(fq)")
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
//在buttonOK 方法内 获取到当前数据源的 FormQuery
QueryTable queryTable = arg.getFormQuery();
//使用createWhereItem方法创建CreatedDate字段的过滤条件 并且开放出来
queryTable.createWhereItem(SysUser._CreatedDate,QueryWhereStatus.Open);
//使用updateQuery更新FormQuery 并重新执行查询
result.updateQuery(queryTable);
return result;
}
createWhereItem(String, String)
与createWhereItem 方法作用相同 增加String tag 参数 用于区分相同字段的不同where 条件
方法签名
gongqi.erp.gotmodel.query.QueryTable.createWhereItem(String,String)
方法入参
- String filed:字段名称 一般写法是 用 表字段引用 如 SysUser._UserId
- String tag:自定义tag 用于区分相同字段的不同where 条件
示例代码
@CommandArgOption(groups="all(fq)")
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
//在buttonOK 方法内 获取到当前数据源的 FormQuery
QueryTable queryTable = arg.getFormQuery();
//使用createWhereItem方法创建两个CreatedDate字段的过滤条件
queryTable.createWhereItem(SysUser._CreatedDate,"fdate");
queryTable.createWhereItem(SysUser._CreatedDate,"tdate");
//使用updateQuery更新FormQuery 并重新执行查询
result.updateQuery(queryTable);
return result;
}
createWhereItem(String, QueryWhereStatus, String)
与createWhereItem 方法作用相同 增加QueryWhereStatus 参数 用于控制该条件开发性
方法签名
gongqi.erp.gotmodel.query.QueryTable.createWhereItem(String,QueryWhereStatus,String)
方法入参
- String filed:字段名称 一般写法是 用 表字段引用 如 SysUser._UserId
QueryWhereStatus status:控制该条件开发性
- QueryWhereStatus.Open:公开 可在客户端筛选器内查看和修改删除
- QueryWhereStatus.Lock:可见但是锁定 可在客户端筛选器内查看不能修改删除
- QueryWhereStatus.Hide:隐藏 不在客户端筛选器内查看不能修改
- QueryWhereStatus.OnlyUpdate:仅可以修改 可在客户端筛选器内查看能修改 不能删除
String tag:自定义tag 用于区分相同字段的不同where 条件
示例代码
@CommandArgOption(groups="all(fq)")
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
//在buttonOK 方法内 获取到当前数据源的 FormQuery
QueryTable queryTable = arg.getFormQuery();
//使用createWhereItem方法创建两个CreatedDate字段的过滤条件 并且开放出来
queryTable.createWhereItem(SysUser._CreatedDate,QueryWhereStatus.Open,"fdate");
queryTable.createWhereItem(SysUser._CreatedDate,QueryWhereStatus.Open,"tdate");
//使用updateQuery更新FormQuery 并重新执行查询
result.updateQuery(queryTable);
return result;
}
findOrCreateWhereItem(String)
在QueryTable 对象里面 找到对应字段的查询条件如果存在则进行覆盖 如果不存在则新建条件
方法签名
gongqi.erp.gotmodel.query.QueryTable.findOrCreateWhereItem(String)
方法入参
- String filed:字段名称 一般写法是 用 表字段引用 如 SysUser._UserId
示例代码
@CommandArgOption(groups="all(fq)")
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
//在buttonOK 方法内 获取到当前数据源的 FormQuery
QueryTable queryTable = arg.getFormQuery();
//使用findOrCreateWhereItem方法创建一个userId字段的过滤条件
queryTable.findOrCreateWhereItem(SysUser._UserId);
//使用updateQuery更新FormQuery 并重新执行查询
result.updateQuery(queryTable);
return result;
}
findOrCreateWhereItem(String, QueryWhereStatus)
与findOrCreateWhereItem方法作用相同 增加QueryWhereStatus 参数 用于控制该条件开发性
方法签名
gongqi.erp.gotmodel.query.QueryTable.createWhereItem(String,QueryWhereStatus)
方法入参
- String filed:字段名称 一般写法是 用 表字段引用 如 SysUser._UserId
- QueryWhereStatus status:控制该条件开发性
- QueryWhereStatus.Open:公开 可在客户端筛选器内查看和修改删除
- QueryWhereStatus.Lock:可见但是锁定 可在客户端筛选器内查看不能修改删除
- QueryWhereStatus.Hide:隐藏 不在客户端筛选器内查看不能修改
- QueryWhereStatus.OnlyUpdate:仅可以修改 可在客户端筛选器内查看能修改 不能删除
示例代码
@CommandArgOption(groups="all(fq)")
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
//在buttonOK 方法内 获取到当前数据源的 FormQuery
QueryTable queryTable = arg.getFormQuery();
//使用createWhereItem方法创建CreatedDate字段的过滤条件 并且开放出来
queryTable.findOrCreateWhereItem(SysUser._CreatedDate,QueryWhereStatus.Open);
//使用updateQuery更新FormQuery 并重新执行查询
result.updateQuery(queryTable);
return result;
}
findOrCreateWhereItem(String, String)
与findOrCreateWhereItem方法作用相同 增加String tag 参数 用于区分相同字段的不同where 条件
方法签名
gongqi.erp.gotmodel.query.QueryTable.findOrCreateWhereItem(String, String)
方法入参
- String filed:字段名称 一般写法是 用 表字段引用 如 SysUser._UserId
- String tag:自定义tag 用于区分相同字段的不同where 条件
示例代码
@CommandArgOption(groups="all(fq)")
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
//在buttonOK 方法内 获取到当前数据源的 FormQuery
QueryTable queryTable = arg.getFormQuery();
//使用findOrCreateWhereItem方法创建两个CreatedDate字段的过滤条件
queryTable.findOrCreateWhereItem(SysUser._CreatedDate,"fdate");
queryTable.findOrCreateWhereItem(SysUser._CreatedDate,"tdate");
//使用updateQuery更新FormQuery 并重新执行查询
result.updateQuery(queryTable);
return result;
}
findOrCreateWhereItem(String, QueryWhereStatus, String)
与findOrCreateWhereItem方法作用相同 增加String tag 参数 用于区分相同字段的不同where 条件
方法签名
gongqi.erp.gotmodel.query.QueryTable.findOrCreateWhereItem(String, QueryWhereStatus, String)
方法入参
- String filed:字段名称 一般写法是 用 表字段引用 如 SysUser._UserId
- QueryWhereStatus status:控制该条件开发性
- QueryWhereStatus.Open:公开 可在客户端筛选器内查看和修改删除
- QueryWhereStatus.Lock:可见但是锁定 可在客户端筛选器内查看不能修改删除
- QueryWhereStatus.Hide:隐藏 不在客户端筛选器内查看不能修改
- QueryWhereStatus.OnlyUpdate:仅可以修改 可在客户端筛选器内查看能修改 不能删除
- String tag:自定义tag 用于区分相同字段的不同where 条件
示例代码
@CommandArgOption(groups="all(fq)")
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
//在buttonOK 方法内 获取到当前数据源的 FormQuery
QueryTable queryTable = arg.getFormQuery();
//使用findOrCreateWhereItem方法创建两个CreatedDate字段的过滤条件
queryTable.findOrCreateWhereItem(SysUser._CreatedDate,QueryWhereStatus.Lock,"fdate");
queryTable.findOrCreateWhereItem(SysUser._CreatedDate,QueryWhereStatus.Lock,"tdate");
//使用updateQuery更新FormQuery 并重新执行查询
result.updateQuery(queryTable);
return result;
}
findWhereItem(String)
寻找QueryTable里面的查询条件根据传入的 字段名称
方法签名
gongqi.erp.gotmodel.query.QueryTable.findWhereItem(String)
方法入参
- String filed:字段名称 一般写法是 用 表字段引用 如 SysUser._UserId
示例代码
@CommandArgOption(groups="all(fq)")
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
//在buttonOK 方法内 获取到当前数据源的 FormQuery
QueryTable queryTable = arg.getFormQuery();
//findWhereItem方法获取到对应whereItem对象
QueryWhereItem findWhereItem = queryTable.findWhereItem(SysUser._CreatedDate);
//使用updateQuery更新FormQuery 并重新执行查询
result.updateQuery(queryTable);
return result;
}
findWhereItem(String, String)
与findWhereItem方法作用相同 增加String tag 参数 用于区分相同字段的不同where 条件
方法签名
gongqi.erp.gotmodel.query.QueryTable.findWhereItem(String, String)
方法入参
- String filed:字段名称 一般写法是 用 表字段引用 如 SysUser._UserId
- String tag:自定义tag 用于区分相同字段的不同where 条件
示例代码
@CommandArgOption(groups="all(fq)")
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
//在buttonOK 方法内 获取到当前数据源的 FormQuery
QueryTable queryTable = arg.getFormQuery();
//findWhereItem方法获取到对应whereItem对象
QueryWhereItem findWhereItem = queryTable.findWhereItem(SysUser._CreatedDate,"fdate");
//使用updateQuery更新FormQuery 并重新执行查询
result.updateQuery(queryTable);
return result;
}
findWhereItem(String, QueryWhereStatus)
与findWhereItem方法作用相同 增加QueryWhereStatus 参数
gongqi.erp.gotmodel.query.QueryTable.findWhereItem(String, QueryWhereStatus)
方法入参
String filed:字段名称 一般写法是 用 表字段引用 如 SysUser._UserId
QueryWhereStatus status:控制该条件开发性
- QueryWhereStatus.Open:公开 可在客户端筛选器内查看和修改删除
- QueryWhereStatus.Lock:可见但是锁定 可在客户端筛选器内查看不能修改删除
- QueryWhereStatus.Hide:隐藏 不在客户端筛选器内查看不能修改
- QueryWhereStatus.OnlyUpdate:仅可以修改 可在客户端筛选器内查看能修改 不能删除
示例代码
@CommandArgOption(groups="all(fq)")
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
//在buttonOK 方法内 获取到当前数据源的 FormQuery
QueryTable queryTable = arg.getFormQuery();
//findWhereItem方法获取到对应whereItem对象
QueryWhereItem findWhereItem = queryTable.findWhereItem(SysUser._CreatedDate,QueryWhereStatus.Open);
//使用updateQuery更新FormQuery 并重新执行查询
result.updateQuery(queryTable);
return result;
}
findWhereItem(String, QueryWhereStatus,String)
与findWhereItem方法作用相同 增加QueryWhereStatus 参数
gongqi.erp.gotmodel.query.QueryTable.findWhereItem(String, QueryWhereStatus,String)
方法入参
- String filed:字段名称 一般写法是 用 表字段引用 如 SysUser._UserId
- QueryWhereStatus status:控制该条件开发性
- QueryWhereStatus.Open:公开 可在客户端筛选器内查看和修改删除
- QueryWhereStatus.Lock:可见但是锁定 可在客户端筛选器内查看不能修改删除
- QueryWhereStatus.Hide:隐藏 不在客户端筛选器内查看不能修改
- QueryWhereStatus.OnlyUpdate:仅可以修改 可在客户端筛选器内查看能修改 不能删除
- String tag:自定义tag 用于区分相同字段的不同where 条件
示例代码
@CommandArgOption(groups="all(fq)")
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
//在buttonOK 方法内 获取到当前数据源的 FormQuery
QueryTable queryTable = arg.getFormQuery();
//findWhereItem方法获取到对应whereItem对象
QueryWhereItem findWhereItem = queryTable.findWhereItem(SysUser._CreatedDate,QueryWhereStatus.Open,"fdate");
//使用updateQuery更新FormQuery 并重新执行查询
result.updateQuery(queryTable);
return result;
}
removeWhereItem(QueryWhereItem)
移除QueryTable里面的查询条件根据传入的 QueryWhereItem
方法签名
gongqi.erp.gotmodel.query.QueryTable.removeWhereItem(QueryWhereItem)
方法入参
- QueryWhereItem item:QueryWhereItem对象
示例代码
@CommandArgOption(groups="all(fq)")
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
//在buttonOK 方法内 获取到当前数据源的 FormQuery
QueryTable queryTable = arg.getFormQuery();
//findWhereItem方法获取到对应whereItem对象
QueryWhereItem findWhereItem = queryTable.findWhereItem(SysUser._CreatedDate);
queryTable.removeWhereItem(findWhereItem);
//使用updateQuery更新FormQuery 并重新执行查询
result.updateQuery(queryTable);
return result;
}
removeWhereItems()
移除QueryTable里面的查询条件
方法签名
gongqi.erp.gotmodel.query.QueryTable.removeWhereItems()
方法入参
- 无
示例代码
@CommandArgOption(groups="all(fq)")
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
//在buttonOK 方法内 获取到当前数据源的 FormQuery
QueryTable queryTable = arg.getFormQuery();
queryTable.removeWhereItems();
//使用updateQuery更新FormQuery 并重新执行查询
result.updateQuery(queryTable);
return result;
}
addWhereItem_And()
在QueryTable 中 设置一个 设置and条件 使得两个查询条件取交集
方法签名
gongqi.erp.gotmodel.query.QueryTable.addWhereItem_And()
方法入参
- 无
示例代码
@CommandArgOption(groups="all(fq)")
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
//在buttonOK 方法内 获取到当前数据源的 FormQuery
QueryTable queryTable = arg.getFormQuery();
queryTable.findOrCreateWhereItem(SysUser._CreatedDate,QueryWhereStatus.Lock);
//默认两个条件之后就为and 这里可以不加 如果 既存在or 且需要 and 的场景下 需要添加
//queryTable.addWhereItem_And();
queryTable.findOrCreateWhereItem(SysUser._CreatedTime,QueryWhereStatus.Lock);
//使用updateQuery更新FormQuery 并重新执行查询
result.updateQuery(queryTable);
return result;
}
addWhereItem_Or()
在QueryTable 中 设置一个 设置OR条件 使得两个查询条件取并集
方法签名
gongqi.erp.gotmodel.query.QueryTable.addWhereItem_Or()
方法入参
- 无
示例代码
@CommandArgOption(groups="all(fq)")
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
//在buttonOK 方法内 获取到当前数据源的 FormQuery
QueryTable queryTable = arg.getFormQuery();
queryTable.findOrCreateWhereItem(SysUser._CreatedDate,QueryWhereStatus.Lock);
//设置两个条件取并集 最好配合 addWhereItem_LeftBracket() 和 addWhereItem_RightBracket()使用 增加条件准确性
queryTable.addWhereItem_Or();
queryTable.findOrCreateWhereItem(SysUser._CreatedTime,QueryWhereStatus.Lock);
//使用updateQuery更新FormQuery 并重新执行查询
result.updateQuery(queryTable);
return result;
}
addWhereItem_LeftBracket()
在QueryTable 中 设置一个 设置一个左括号 和 addWhereItem_RightBracket() 并行使用
方法签名
gongqi.erp.gotmodel.query.QueryTable.addWhereItem_LeftBracket()
方法入参
- 无
示例代码
@CommandArgOption(groups="all(fq)")
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
//在buttonOK 方法内 获取到当前数据源的 FormQuery
QueryTable queryTable = arg.getFormQuery();
//增加一个左括号
queryTable.addWhereItem_LeftBracket();
queryTable.findOrCreateWhereItem(SysUser._CreatedDate,QueryWhereStatus.Lock);
//设置两个条件取并集 最好配合 addWhereItem_LeftBracket() 和 addWhereItem_RightBracket()使用 增加条件准确性
queryTable.addWhereItem_Or();
queryTable.findOrCreateWhereItem(SysUser._CreatedTime,QueryWhereStatus.Lock);
//增加一个右括号 把 上述两个条件 包起来
queryTable.addWhereItem_RightBracket()
//在增加一个条件 和上述两个条件取交集 默认是 and 可以不写
//queryTable.addWhereItem_And();
queryTable.findOrCreateWhereItem(SysUser._UserId,QueryWhereStatus.Lock);
//使用updateQuery更新FormQuery 并重新执行查询
result.updateQuery(queryTable);
return result;
}
addWhereItem_RightBracket()
在QueryTable 中 设置一个 设置一个左括号 和 addWhereItem_LeftBracket() 并行使用
方法签名
gongqi.erp.gotmodel.query.QueryTable.addWhereItem_RightBracket()
方法入参
- 无
示例代码
@CommandArgOption(groups="all(fq)")
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
//在buttonOK 方法内 获取到当前数据源的 FormQuery
QueryTable queryTable = arg.getFormQuery();
//增加一个左括号
queryTable.addWhereItem_LeftBracket();
queryTable.findOrCreateWhereItem(SysUser._CreatedDate,QueryWhereStatus.Lock);
//设置两个条件取并集 最好配合 addWhereItem_LeftBracket() 和 addWhereItem_RightBracket()使用 增加条件准确性
queryTable.addWhereItem_Or();
queryTable.findOrCreateWhereItem(SysUser._CreatedTime,QueryWhereStatus.Lock);
//增加一个右括号 把 上述两个条件 包起来
queryTable.addWhereItem_RightBracket()
//在增加一个条件 和上述两个条件取交集 默认是 and 可以不写
//queryTable.addWhereItem_And();
queryTable.findOrCreateWhereItem(SysUser._UserId,QueryWhereStatus.Lock);
//使用updateQuery更新FormQuery 并重新执行查询
result.updateQuery(queryTable);
return result;
}
值形式
每个QueryTable 里的字段查询条件都可以设置 值 如果 不设置 默认为不对该字段查询
setValue(Object)
方法签名
gongqi.erp.gotmodel.query.QueryWhereItem.setValue(Object)
方法入参
- Object value :fieldValue是一个字符串,是对同一个字段的查询条件的描述以逗号,分隔,互相之间为or关系 以逗号分隔的各单项过滤条件可以加引号,也可以不加引号 如果加引号,则引号必须配对,单引号配对、双引号配对 如果逗号在引号中,则不作为分隔符,而是字符串 在引号外的括号必须配对,否则报错 如果逗号在括号中,则不作为分隔符,而是特殊用途的结构
<>、=、>、<、>=、<=、!=
常见符号#not()
不是#null()
空#notNull()
非空#in(,)
在列表内#notIn(,)
不在列表内a..b
a和b之间 常用于日期 如 2024-01-01..2024-12-31!(a..b
) 不在 a和b之间#like(a%)
像 例如 以a开头#notlike(a%)
不像 例如 不是 a开头#(fieldName)
本记录的字段引用#(methodName, arg1, arg2...)
预先指定的QueryWhereMethod方法名,以及参数,参数限定为String 返回也为String 目前默认支持的QueryWhereMethod有:#today()、#dataNull()、#beginMth(date)、#endMth(date)、#beginYear(date)、#endYear(date)、#currentUser()、#currentUserGroup()
示例代码
@CommandArgOption(groups="all(fq)")
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
//在buttonOK 方法内 获取到当前数据源的 FormQuery
QueryTable queryTable = arg.getFormQuery();
//增加一个左括号
queryTable.addWhereItem_LeftBracket();
//增加一个 创建日期
queryTable.findOrCreateWhereItem(SysUser._CreatedDate,QueryWhereStatus.Lock).setValue(">'2023-10-10'");
//设置两个条件取并集 最好配合 addWhereItem_LeftBracket() 和 addWhereItem_RightBracket()使用 增加条件准确性
queryTable.addWhereItem_Or();
queryTable.findOrCreateWhereItem(SysUser._CreatedTime,QueryWhereStatus.Lock).setValue("<'10:00:00'");
//增加一个右括号 把 上述两个条件 包起来
queryTable.addWhereItem_RightBracket()
//在增加一个条件 和上述两个条件取交集 默认是 and 可以不写
//queryTable.addWhereItem_And();
queryTable.findOrCreateWhereItem(SysUser._UserId,QueryWhereStatus.Lock).setValue("<>'admin'");
//使用updateQuery更新FormQuery 并重新执行查询
result.updateQuery(queryTable);
return result;
}
数据分组
QueryTable里可以创建GroupBy分组条件 对应 数据源的 group by
createGroupByItem(String)
在QueryTable 对象里面 增加一个指定表字段的group by条件
方法签名
gongqi.erp.gotmodel.query.QueryTable.createGroupByItem(String)
方法入参
- String filed:字段名称 一般写法是 用 表字段引用 如 SysUser._UserId
示例代码
@CommandArgOption(groups="all(fq)")
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
//在buttonOK 方法内 获取到当前数据源的 FormQuery
QueryTable queryTable = arg.getFormQuery();
//使用createGroupByItem方法创建一个userId分组
queryTable.createGroupByItem(SysUser._UserId);
//使用updateQuery更新FormQuery 并重新执行查询
result.updateQuery(queryTable);
return result;
}
findOrCreateGroupByItem(String)
在QueryTable 对象里面 增加一个指定表字段的group by条件
方法签名
gongqi.erp.gotmodel.query.QueryTable.findOrCreateGroupByItem(String)
方法入参
- String filed:字段名称 一般写法是 用 表字段引用 如 SysUser._UserId
示例代码
@CommandArgOption(groups="all(fq)")
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
//在buttonOK 方法内 获取到当前数据源的 FormQuery
QueryTable queryTable = arg.getFormQuery();
//使用createGroupByItem方法创建一个userId分组
queryTable.findOrCreateGroupByItem(SysUser._UserId);
//使用updateQuery更新FormQuery 并重新执行查询
result.updateQuery(queryTable);
return result;
}
findGroupByItem(String)
在QueryTable 对象里面 查找一个字段的groupby
方法签名
gongqi.erp.gotmodel.query.QueryTable.findGroupByItem(String)
方法入参
- String filed:字段名称 一般写法是 用 表字段引用 如 SysUser._UserId
示例代码
@CommandArgOption(groups="all(fq)")
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
//在buttonOK 方法内 获取到当前数据源的 FormQuery
QueryTable queryTable = arg.getFormQuery();
//使用createGroupByItem方法创建一个userId分组
QueryGroupByItem findGroupByItem = queryTable.findGroupByItem(SysUser._UserId);
//使用updateQuery更新FormQuery 并重新执行查询
result.updateQuery(queryTable);
return result;
}
removeGroupByItem(QueryGroupByItem)
移除QueryTable里面的Groupby条件根据传入的 QueryGroupByItem
方法签名
gongqi.erp.gotmodel.query.QueryTable.removeGroupByItem(QueryGroupByItem)
方法入参
- QueryGroupByItem item:QueryGroupByItem对象
示例代码
@CommandArgOption(groups="all(fq)")
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
//在buttonOK 方法内 获取到当前数据源的 FormQuery
QueryTable queryTable = arg.getFormQuery();
//findWhereItem方法获取到对应whereItem对象
QueryGroupByItem findItem = queryTable.findGroupByItem(SysUser._CreatedDate);
queryTable.removeGroupByItem(findItem);
//使用updateQuery更新FormQuery 并重新执行查询
result.updateQuery(queryTable);
return result;
}
removeWhereItems()
移除QueryTable里面的查询条件
方法签名
gongqi.erp.gotmodel.query.QueryTable.removeWhereItems()
方法入参
- 无
示例代码
@CommandArgOption(groups="all(fq)")
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
//在buttonOK 方法内 获取到当前数据源的 FormQuery
QueryTable queryTable = arg.getFormQuery();
queryTable.removeWhereItems();
//使用updateQuery更新FormQuery 并重新执行查询
result.updateQuery(queryTable);
return result;
}
数据排序
对QueryTable增加排序条件
createOrderByItem(String)
在QueryTable 对象里面 增加一个指定表字段的group by条件
方法签名
gongqi.erp.gotmodel.query.QueryTable.createOrderByItem(String)
方法入参
- String filed:字段名称 一般写法是 用 表字段引用 如 SysUser._UserId
示例代码
@CommandArgOption(groups="all(fq)")
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
//在buttonOK 方法内 获取到当前数据源的 FormQuery
QueryTable queryTable = arg.getFormQuery();
//使用createOrderByItem方法创建一个userId 倒序条件
queryTable.createOrderByItem(SysUser._UserId).orderBy = QueryOrderByType.DESC;;
//使用updateQuery更新FormQuery 并重新执行查询
result.updateQuery(queryTable);
return result;
}
findOrCreateOrderByItem(String)
在QueryTable 对象里面 增加一个指定表字段的group by条件
方法签名
gongqi.erp.gotmodel.query.QueryTable.findOrCreateOrderByItem(String)
方法入参
- String filed:字段名称 一般写法是 用 表字段引用 如 SysUser._UserId
示例代码
@CommandArgOption(groups="all(fq)")
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
//在buttonOK 方法内 获取到当前数据源的 FormQuery
QueryTable queryTable = arg.getFormQuery();
//使用createOrderByItem方法创建一个userId 倒序条件
queryTable.findOrCreateOrderByItem(SysUser._UserId).orderBy = QueryOrderByType.DESC;
//使用updateQuery更新FormQuery 并重新执行查询
result.updateQuery(queryTable);
return result;
}
findOrderByItem(String)
在QueryTable 对象里面 查找一个字段的groupby
方法签名
gongqi.erp.gotmodel.query.QueryTable.findOrderByItem(String)
方法入参
- String filed:字段名称 一般写法是 用 表字段引用 如 SysUser._UserId
示例代码
@CommandArgOption(groups="all(fq)")
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
//在buttonOK 方法内 获取到当前数据源的 FormQuery
QueryTable queryTable = arg.getFormQuery();
//使用findOrderByItem 返回 QueryOrderByItem
QueryOrderByItem findGroupByItem = queryTable.findOrderByItem(SysUser._UserId);
//使用updateQuery更新FormQuery 并重新执行查询
result.updateQuery(queryTable);
return result;
}
removeOrderByItem(QueryOrderByItem)
移除QueryTable里面的Groupby条件根据传入的 QueryGroupByItem
方法签名
gongqi.erp.gotmodel.query.QueryTable.removeOrderByItem(QueryOrderByItem)
方法入参
- QueryOrderByItem item:QueryOrderByItem对象
示例代码
@CommandArgOption(groups="all(fq)")
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
//在buttonOK 方法内 获取到当前数据源的 FormQuery
QueryTable queryTable = arg.getFormQuery();
//使用findOrderByItem 返回 QueryOrderByItem 对象 然后移除
QueryOrderByItem findItem = queryTable.findOrderByItem(SysUser._UserId);
queryTable.removeOrderByItem(findItem);
//使用updateQuery更新FormQuery 并重新执行查询
result.updateQuery(queryTable);
return result;
}
removeOrderByItems()
移除QueryTable里面的查询条件
方法签名
gongqi.erp.gotmodel.query.QueryTable.removeOrderByItems()
方法入参
- 无
示例代码
@CommandArgOption(groups="all(fq)")
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
//在buttonOK 方法内 获取到当前数据源的 FormQuery
QueryTable queryTable = arg.getFormQuery();
queryTable.removeOrderByItems();
//使用updateQuery更新FormQuery 并重新执行查询
result.updateQuery(queryTable);
return result;
}
多表关联
QueryTable对象支持通过JoinQuery属性进行多QueryTable对象嵌套 各个QueryTable之间 可存在多种关联关系如 LeftJoin ,InnerJoin
joinQueryTable(String, QueryRelation1N, QueryRelationJoinMode)
对QueryTable 增加一个JoinQueryTable 从而达到多表关联
方法签名
gongqi.erp.gotmodel.query.QueryTable.joinQueryTable(String, QueryRelation1N, QueryRelationJoinMode)
方法入参
- String tableName :关联表的名字
QueryRelation1N 1n:表与表之间的关联关系
- QueryRelation1N.OneToMany:一对多
- QueryRelation1N.ManyToOne:多对一
QueryRelationJoinMode mode:表与表之间的关联关系
- QueryRelationJoinMode.LeftJoin
- QueryRelationJoinMode.InnerJoin
- QueryRelationJoinMode.ExistJoin
- QueryRelationJoinMode.None
- QueryRelationJoinMode.NotExistJoin
示例代码
@CommandArgOption(groups="all(fq)")
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
//在buttonOK 方法内 获取到当前数据源的 FormQuery
QueryTable queryTable = arg.getFormQuery();
//关联SysUser表 leftJoin
QueryTable joinqueryTable = queryTable.joinQueryTable("SysUser", QueryRelation1N.OneToMany, QueryRelationJoinMode.LeftJoin);
//需要配合 createRelationItem(String, String) 创建两表之间的关联字段关系
//joinqueryTable.createRelationItem(SysUser._UserId, A_TablE._CreatedBy);
//使用updateQuery更新FormQuery 并重新执行查询
result.updateQuery(queryTable);
return result;
}
createRelationItem(String, String)
对QueryTable 增加一个与主表之间的关联字段关系
方法签名
gongqi.erp.gotmodel.query.QueryTable.createRelationItem(String, String)
方法入参
- String fieldName:当前表的关联字段
- String relatedFieldName:主表的关联字段
示例代码
@CommandArgOption(groups="all(fq)")
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
//在buttonOK 方法内 获取到当前数据源的 FormQuery
QueryTable queryTable = arg.getFormQuery();
//关联SysUser表 leftJoin
QueryTable joinqueryTable = queryTable.joinQueryTable("SysUser", QueryRelation1N.OneToMany, QueryRelationJoinMode.LeftJoin);
// createRelationItem(String, String) 创建两表之间的关联字段关系
joinqueryTable.createRelationItem(SysUser._UserId, A_TablE._CreatedBy);
//使用updateQuery更新FormQuery 并重新执行查询
result.updateQuery(queryTable);
return result;
}
findOrCreateRelationItem(String, String)
对QueryTable 增加一个与主表之间的关联字段关系 如果已存在则覆盖 没用就新建
方法签名
gongqi.erp.gotmodel.query.QueryTable.findOrCreateRelationItem(String, String)
方法入参
- String fieldName:当前表的关联字段
- String relatedFieldName:主表的关联字段
示例代码
@CommandArgOption(groups="all(fq)")
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
//在buttonOK 方法内 获取到当前数据源的 FormQuery
QueryTable queryTable = arg.getFormQuery();
//关联SysUser表 leftJoin
QueryTable joinqueryTable = queryTable.joinQueryTable("SysUser", QueryRelation1N.OneToMany, QueryRelationJoinMode.LeftJoin);
// createRelationItem(String, String) 创建两表之间的关联字段关系
joinqueryTable.findOrCreateRelationItem(SysUser._UserId, A_TablE._CreatedBy);
//使用updateQuery更新FormQuery 并重新执行查询
result.updateQuery(queryTable);
return result;
}
findRelationItem(String, String)
对QueryTable 增加一个与主表之间的关联字段关系 如果已存在则覆盖 没用就新建
方法签名
gongqi.erp.gotmodel.query.QueryTable.findRelationItem(String, String)
方法入参
- String fieldName:当前表的关联字段
- String relatedFieldName:主表的关联字段
示例代码
@CommandArgOption(groups="all(fq)")
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
//在buttonOK 方法内 获取到当前数据源的 FormQuery
QueryTable queryTable = arg.getFormQuery();
QueryRelationItem findRelationItem = queryTable.findRelationItem(SysUser._UserId, A_TablE._CreatedBy);
//根据 findRelationItem 继续执行逻辑
//使用updateQuery更新FormQuery 并重新执行查询
result.updateQuery(queryTable);
return result;
}
findInnerJoinedQueryTable(String)
对QueryTable 寻找InnerJoin 的子QueryTable
方法签名
gongqi.erp.gotmodel.query.QueryTable.findInnerJoinedQueryTable(String)
方法入参
- String tableName:当前表名称
示例代码
@CommandArgOption(groups="all(fq)")
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
//在buttonOK 方法内 获取到当前数据源的 FormQuery
QueryTable queryTable = arg.getFormQuery();
QueryTable findQuery = queryTable.findInnerJoinedQueryTable("SysUser")
//根据 findQuery 继续执行逻辑
result.updateQuery(queryTable);
return result;
}
findLeftJoinedQueryTable(String)
对QueryTable 寻找InnerJoin 的子QueryTable
方法签名
gongqi.erp.gotmodel.query.QueryTable.findLeftJoinedQueryTable(String)
方法入参
- String tableName:当前表名称
示例代码
@CommandArgOption(groups="all(fq)")
public CommandResult buttonOK_Button(CommandArg arg) {
CommandResult result = new CommandResult();
//在buttonOK 方法内 获取到当前数据源的 FormQuery
QueryTable queryTable = arg.getFormQuery();
QueryTable findQuery = queryTable.findLeftJoinedQueryTable("SysUser")
//根据 findQuery 继续执行逻辑
result.updateQuery(queryTable);
return result;
}