为了方便以后查看,收录了一些常用的语句。
方法:Restrictions.eq 说明:判断值是否相等,相当于a=b
方法:Restrictions.allEq 说明:利用Map来进行多个等于的限制
方法:Restrictions.gt 说明:判断值是否大于,相当于a>b
方法:Restrictions.ge 说明:判断值是否大于或者等于,相当于a>=b
方法:Restrictions.lt 说明:判断值是否小于,相当于a<b
方法:Restrictions.le 说明:判断值是否小于或者等于,相当于a<=b
方法:Restrictions.between 说明:判断值是否介于某个范围之间,相当于id between(1,10)
方法:Restrictions.like 说明:判断值是否类似,相当于name like %'张'%,做模糊匹配时用
方法:Restrictions.in 说明:判断值是否在指定的值之内,相当于id in(1,2,3)
方法:Restrictions.and 说明:判断值是否同时满足多条件,相当于id=1 and name='张三'
方法:Restrictions.or 说明:判断值是否满足其中一个条件,相当于id=1 or name='张三'
下面举例用法:
Criteria criteria = getSession().createCriteria(User.class,"user");
查询User中name等于张三的记录
criteria.add(Restrictions.eq("user.name","张三"));
查询User中age大于18的记录
criteria.add(Restrictions.ge("user.age",18));
查询User中age小于100的记录
criteria.add(Restrictions.eq("user.age",100));
查询User中名字有张的记录
criteria.add(Restrictions.like("user.name",'%张%'));
查询User中年龄在18-100之间的记录criteria.add(Restrictions.between("user.age",(18,100)));
查询User中叫张三和李四的记录
criteria.add(Restrictions.in("user.name",('张三','李四')));
查询User中既叫张三性别还是女的记录
criteria.add(Restrictions.and(Restrictions.eq("name","张三"),Restrictions.eq("gender","女")));
我没有写完,其实还有很多,大同小异,依葫芦画瓢即可。
最后返回集合即可
return criteria.list();
或者将集合按一定条件排序后再返回,下面是举例按照年龄大小降序
return criteria.addOrder(Order.desc("user.age")).list();