zoukankan      html  css  js  c++  java
  • com.apache.dc.query.Query所属包名apache-common-sid.jar

    com.apache.dc.query.Query所属包名apache-common-sid.jar

    首先这个类是基于HQL的,好多方法里面要传String clzz, 刚开始我真不知道这个参数传什么,后来看别人的代码才知道

    要填 Entity.class.getName() 当然了这是一个字符串,你当然也可以直接拼好,"cn.angelshelter.utils.User"

    并不推荐用手动拼好的字符串,因为一旦你拼错了,它方法里面的检查机制就会发现找不到这个类,然后

    就报空指针错误,这个也只有在运行时才暴露出来,隐蔽性很强,如果用 User.class.getName()就没有这个问题了。

    queryMapWithoutSelect(Map<String, Object> map, String clzz) 根据Map里面的条件参数去查找数据。

    组装成的HQL例子: from cn.angelshelter.utils.User t where 1=1 and t.userid= 'value'


    (它这里设计得不错,如果Map里有存在的字段,它会自动过滤掉,这样就不容易出错,但不过好像

    不太容易排查问题了,你可能拼错一个字段,最后它没生效,它也没报错,你以为它生效了,因为程序员的

    直觉,只是不报错,我的程序就是ok,这个潜在的bug发现任务可能就交给测试员了,呵呵,如果测试员也马虎的

    话,那这个bug就一直隐藏在那里了,随时都有可能爆发的哦,好危险的感觉)

    sort(String fieldName, boolean isAsc) 排序
    这里没对非法字段名过滤。

    select()  只是在HQL里面append了一个select

    Query.update(String clzz) 更新
    组装成的HQL例子: update cn.angelshelter.utils.User

    Query.clzz(String className) 产生一个表的查询语句
    组装成的HQL例子: from cn.angelshelter.utils.User t

    set(Map<String, String> param) 在现有的HQL的基础上append "set xxx=xxx , xxx=xxx"

    组装成的HQL例子:set userid3='value' , userid='value'

    queryMapFullJoinWher(Map<String, Object> map, String clzz) 也是条件查询,不过它用了一个Map

    组装成的HQL例子: select new map( t.name as name , t.pwd as pwd , t.userid as userid ) from cn.angelshelter.utils.User t where 1=1 and t.pwd= 'value' and t.userid= 'value'

    queryMapFullJoinWhereForSql(Map<String, String> fields, Map<String, Object> map, String clzz) 第一个参数,控制字段,第一个参数,控制条件

    组装成的HQL例子:select t.userid as userid from t_CdnSwitchover t where 1=1 and t.userid= 'value'

    fullJoinWhere(String clzz) 全查询

    组装成的HQL例子:select new map( t.name as name , t.pwd as pwd , t.userid as userid ) from cn.angelshelter.utils.User t where 1=1

    fullJoinWhereForSql(Map<String, String> fieldNames, String clzz) 第一个参数控制字段

    select t.pwd as pwd , t.userid as userid from t_CdnSwitchover t where 1=1

    where()

    组装成的HQL例子:where 1=1

    .leftBracket()
    HQL末尾追加 (

    rightBracket();

    HQL末尾追加 )

    and();
    HQL末尾追加 and

    count()
    注意,它本身不改变HQL,而是以返回字符串的形式select count(*) ...

    toHql()
    返回HQL

    or()

    HQL末尾追加 or

    eq(String fieldName, String value)  等于
    组装成的HQL例子: t.ff= 'dfdf'

    eqNumber(String fieldName, String value) 名不符实
    组装成的HQL例子:t.dfd= '55'

    eqNumber(String fieldName, String value) 没啥用,还不如直接用eq
    组装成的HQL例子:t.dfd= 'dfd'

    period(Period period)  设置时间区间

    Period period = new Period();
    period.setBegin(new Date());
    period.setEnd(new Date());
    period.setKeyField("userid");
    query.period(period);

    组装成的HQL例子:t.userid>='2016-03-05 22:38:06' and  t.userid<='2016-03-05 22:38:07'

     periodForSql(Period period) 感觉没有什么不同

    ne(String fieldName, String value) 不等于

    组装成的HQL例子:t.dd<> 'dfd'

    lt(String fieldName, String value) 小于
    组装成的HQL例子:t.fieldName< 'value'

    le(String fieldName, String value) 小于或等于
    组装成的HQL例子:t.fieldName<= 'value'

    gt(String fieldName, String value) 小于
    组装成的HQL例子:t.fieldName> 'value'

    ge(String fieldName, String value) 大于或等于

    组装成的HQL例子:t.fieldName>= 'value'

    bw(String fieldName, String value) 包含

    组装成的HQL例子:t.fieldName like '%value%'

    in(String fieldName, String value) 在里面
    组装成的HQL例子:t.fieldName in ( 'dfd,ll' )

    in(String fieldName, Integer... values) 在里面
    组装成的HQL例子:t.fieldName in (12,56 )

    in(String fieldName, Long... values) 在里面

    in(String fieldName, String... values)  在里面

    ni(String fieldName, String value) 不在里面
    组装成的HQL例子:t.fieldName not in ( 'd' )

    isnull(String fieldName) 为空
    组装成的HQL例子:t.fieldName is null

    isnotnull(String fieldName) 不为空
    组装成的HQL例子:t.fieldName is not null

    orderBy() HQL append " order by "

    forupdate() HQL append " for update"

    limitOne()
    组装成的HQL例子:limit 0,1

    limit(int m, int n)
    组装成的HQL例子:limit m,n

    queryMap(Map<String, String> map, String clzz) 不知道是不是一个bug
    select from cn.angelshelter.utils.User t where 1=1 and t.pwde= 'null' and t.userid= 'null' value部分都显示为Null

    queryForMap(Map<String, Object> map, String clzz) 增加参询条件
    组装成的HQL例子:and t.userid= 'value'

    deleteMapWithoutSelect(Map<String, Object> map, String clzz) 条件删除
    delete from cn.angelshelter.utils.User t where 1=1 and t.userid= 'value'

    queryMapWithoutSelect(Map<String, Object> map, String clzz)

    from cn.angelshelter.utils.User t where 1=1 and t.userid= 'value'

    搞到最后,发现没有手动设置HQL的方法。。。

    最后说一个最复杂的方法,不过感觉也没什么实用的价值。

    Query.queryRelateClass(String clzz, String subClass)  联表查询

    @WsTitle(isRelate=true, rlClass="cn.angelshelter.utils.Address", rlFieldCode="id")
    private int ck;

    你需要在User里面配好参数,包括这个字段是否关联,关联的类,以及关联类的哪个属性。

    select a from cn.angelshelter.utils.Address a ,cn.angelshelter.utils.User t where t.ck = a.id

  • 相关阅读:
    【前端技术文章阅读】--201608
    极简版 react+webpack 脚手架
    《JavaScript模式》第6章 代码复用模式
    《JavaScript模式》第5章 对象创建模式
    《JavaScript模式》第4章 函数
    《JavaScript模式》第3章 字面量和构造函数
    简版导航栏实现
    2014年第五届蓝桥杯试题C/C++程序设计B组——李白打酒
    2014第五届蓝桥杯试题C/C++程序设计B组——切面条
    2014年第五届蓝桥杯试题——啤酒和饮料
  • 原文地址:https://www.cnblogs.com/angelshelter/p/5246806.html
Copyright © 2011-2022 走看看