QueryTable

QueryTable是一种结构化的hql语句的描述方式,可以通过它描述table、aliasName、relation、where、order by 、join等常见的数据库查询概念,然后通过QueryBuilder自动转换成hql,从而进行数据库查询操作

数据过滤

在画面上表现为工具栏筛选器 具体用法见 查询器

undefined

在代码层面主要是对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;
}

results matching ""

    No results matching ""