一、Restricted 常用限定参数详细说明
方法名 说明
Restrictions.eq equal,等于.
Restrictions.allEq 参数为Map对象,使用key/value进行多个等于的比对,相当于多个Restrictions.eq 的效果
Restrictions.gt great-than > 大于
Restrictions.ge great-equal >= 大于等于
Restrictions.lt less-than, < 小于
Restrictions.le less-equal <= 小于等于
Restrictions.between 对应SQL的between子句
Restrictions.like 对应SQL的LIKE子句
Restrictions.in 对应SQL的in子句
Restrictions.and and 关系
Restrictions.or or 关系
Restrictions.isNull 判断属性是否为空,为空则返回true
Restrictions.isNotNull 与isNull相反
Restrictions.sqlRestriction SQL限定的查询
Order.asc 根据传入的字段进行升序排序
Order.desc 根据传入的字段进行降序排序
MatchMode.EXACT 字符串精确匹配.相当于"like 'value'"
MatchMode.ANYWHERE 字符串在中间匹配.相当于"like '%value%'"
MatchMode.START 字符串在最前面的位置.相当于"like 'value%'"
MatchMode.END 字符串在最后面的位置.相当于"like '%value'"
二、静态查询例子
1.查询年龄在20-30岁之间的所有学生对象
List list = session.createCriteria(Student.class).add (Restrictions.between("age",newInteger(20),newInteger(30)).list());
2.查询学生姓名在AAA,BBB,CCC之间的学生对象
String[] names = {"AAA","BBB","CCC"};
List list = session.createCriteria(Student.class)
.add(Restrictions.in("name",names)).list();
3.查询年龄为空的学生对象
List list = session.createCriteria(Student.class)
.add(Restrictions.isNull("age")).list();
4.查询年龄等于20或者年龄为空的学生对象
List list = session.createCriteria(Student.class)
.add(Restrictions.or(Restrictions.eq("age",new Integer(20)),
Restrictions.isNull("age")).list();
三、动态查询例子
public List findStudents(String name,int age){
//创建Criteria 实例
Criteria criteria = session.createCriteria(Student.class);
//判断名字是否为查询条件
if(name != null){
criteria.add(Restrictions.liek("name",name,MatchMode.ANYWHERE));//添加名称查询条件
}
//判断年龄是否为查询条件
if(age != 0){
criteria.add(Restrictions.eq("age",new Integer(age)));//添加年龄查询条件
}
criteria.addOrder(Order.asc("name"));//根据名字升序排列
return criteria.list();//返回查询集合
}