• Hibernate查询条件封装对象Expression介绍 Hi


    Criteria Query是Hibernate提供的将SQL语句对象化表示的一种方法。当我们使用JDBC方式查询数据时会这样写:
    select NAME FROM EMPLOYEE where ID = '001'

    使用Hibernate的Criteria Query方式查询时,就可以使用我们已经习惯了的面向对象的方式。如下:

    程序代码
    import net.sf.hibernate.Criteria;
    import net.sf.hibernate.expression.Expression;
    ...

    Criteria criteria = session.createCriteria(Employee.class);
    criteria.add(Expression.eq("id", "001"));
    ArrayList list = criteria.list();
    ...


    其中Expression对象是where条件的封装,提供了查询限定机制,现在介绍一下他的具体使用:
    Expression的方法描述
    Expression.eq:对应SQL条件中的"field = value"。如:Expression.eq("id","001")
    Expression.allEq:参数为一个Map对象,其中包含了多个属性和值对应关系。相当于多个Expression.eq关系,多个条件。如:
    程序代码
    map.put("id", "001");
    map.put("name", "hiswing");
    Expression.allEq(map);


    Expression.gt:对应SQL条件中的"field > value "。如:Expression.gt("salary", new Integer(5000))
    Expression.ge:对应SQL条件中的"field >= value"。
    Expression.lt:对应SQL条件中的"field < value"。
    Expression.le:对应SQL条件中的"field <= value"。
    Expression.between:对应SQL条件中的"between"。
    Expression.like:对应SQL条件中的"field like value"。
    Expression.in:对应SQL条件中的"field in …"。
    Expression.eqProperty:用于比较两个属性之间的值,对应SQL条件中的"field = field"。如:Expression.eqProperty("Employee.id", "Group.eid");
    Expression.gtProperty:用于比较两个属性之间的值,对应SQL条件中的"field > field"。
    Expression.geProperty:用于比较两个属性之间的值,对应SQL条件中的"field >= field"。
    Expression.ltProperty:用于比较两个属性之间的值,对应SQL条件中的"field < field"。
    Expression.leProperty:用于比较两个属性之间的值,对应SQL条件中的"field <= field"。
    Expression.and:and关系组合。
    如:
    Expression.and(
    Expression.eq("name","hiswing"),
    Expression.eq("sex", new Integer(1))
    )


    Expression.or:or关系组合。(使用方法同Expression.and)
    Expression.sql:我们可以通过这个方法直接通过SQL语句限定查询条件。


       注:在使用Criteria时,Expression中的KEY为POJO中的属性。如Expression.eq("id", "001")中的id为Employee对象中id这个属性,注意大小写
    ****************************************************************************************
    有很多预制的条件类型(Expression的子类)。有一个特别有用,可以让你直接嵌入SQL。

    List cats = sess.createCriteria(Cat.class)
    .add( Expression.sql("lower($alias.name) like lower(?)", "Fritz%", Hibernate.STRING) )
    .list();
    其中的{alias}是一个占位符,它将会被所查询实体的行别名所替代.

    ************************************************************


    原文:http://wanglihu.iteye.com/blog/246603

  • 相关阅读:
    python 三行代码实现快速排序
    kafka使用自带zookeeper 单机版安装、配置、启动、生产消费消息测试
    kafka manager添加集群出现错误KeeperErrorCode
    常用的kubectl命令
    20210531-20210606 助教一周小结(第十八周)
    20210524-20210530 助教一周小结(第十七周)
    20210517-20210523 助教一周小结(第十六周)
    20210510-20210516 助教一周小结(第十五周)
    20210503-20210509 助教一周小结(第十四周)
    20210426-20210502 助教一周小结(第十三周)
  • 原文地址:https://www.cnblogs.com/JHelius/p/14318934.html
Copyright © 2020-2023  润新知