Java中Criteria小解

    Criteria ct= session.createCriteria(TUser.class);Criteria中可以增加查询条件
    ct.add(Expression.eq("name","Erica"));
    ct.add(Expression.eq("sex",new Integer(1)));Criteria中增加的查询条件可以由表达式对象创建
    Expression.eq(对象属性名,对象属性值);查询条件通过Criteria的add方法加入。表达式对象的方法有:
    eq 等于,第一个参数是对象属性,第二个参数是值
    allEq 参数为一个Map对象,相当于多个eq的叠加
    gt 大于
    ge 大于等于
    lt <
    le <=
    between 在两个值之间Expression.between("age",new Integer(10),new Integer(20));
    like like查询
    in in查询
    eqProperty 用于比较两个对象的属性的值是否相等
    gtProperty
    geProperty
    ltProperty
    leProperty
    and and方法可以嵌套Expression对象,用于and关系
    or 同上
    如:Expression.or(
    Expression.eq("name","hulei"),
    Expression.eq("name","jane")
    );
    sql 作为Expression对象的补充,本方法提供对原生sql的支持***注意,在Hibernate3中,引入了Restrictions类作为Expression的替代,以后的版本,不再推荐使用Expression。
    但是,Restrictions类的使用方法和Expression的方法一致。注意,在查询条件中,Hibernate提供了一个Example查询,当查询条件比较多的时候,
    可以用Example查询来简化代码,使用方法如下:
    TUser user=new TUser();
    user.setLoginName("hulei");
    user.setPassword("hulei");
    Criteria ct=session.createCriteria(TUser.class);
    ct.add(Example.create(user));
    return ct.list();
    复合查询
    Criteria查询可以嵌套Criteria来实现复合查询
    如下:
    Criteria ct=session.createCriteria(TUser.class);
    Criteria ctAddress=ct.createCriteria("addresses");//这里是嵌套了一个Criteria查询,这里的addresses是TUser的属性
    ctAddress.add(Expression.like("address","%shanghai%"));
    List list=ct.list();

你可能感兴趣的:(Java中Criteria小解)