hibernate DetachedCriteria中的查询语句的使用

项目中采用了SSH开发模式,最近总是遇到条件查询,所以写篇文章记录一下,本人java新手,如有不对,还请指正。


因为项目对查询进行了一定的封装,所以用起来比较简单。这里我就直接贴代码了。

                        DetachedCriteria criteria = service.getCriteria()
这里是service是某个具体的service,项目中的service都继承了BaseService,在BaseService中有这么一个方法,
                                  DetachedCriteria getCriteria();
那么上面那行代码就明了了, 接下来就直接用DetachedCriteria中的add()方法。

              criteria.add(Restrictions.eq("name", "name字段的值"));
"name" 是要查询的属性名称,后面是具体的值,这样hibernate就会根据相应的属性的值在去相应的数据库中查找对应的数据
常用的查询限制语句有:
//一般用于用过基本属性查询相应的数据
Restrictions.eq();  eq  为equal,等同于   =
Restrictions.allEq();参数为Map对象,使用key/value进行多个等于的对比,相当于多个Restrictions.eq()的效果

//一般用于一段时间内。。。。的查询

Restrictions.gt() ;greater  than, 大于   >
Restrictions.ge();great  equal,大于等于  >=
Restrictions.lt(); less-than, 小于    <
Restrictions.le(); less-equal,小于等于    <=

Restrictions.between() 对应查询语句中的between子句
Restrictions.like() 对应SQL的like子句
Restrictions.in() 对应SQL的in子句
Restrictions.and() and关系
Restrictions.or() or关系
Restrictions.isNull() 判断属性是否为空,为空返回true,否则返回false
Restrictions.isNotNull() 与Restrictions.isNull()相反
MatchMode.EXACT 字符串精确匹配,相当于“like 'value'”
MatchMode.ANYWHERE 字符串在中间位置,相当于“like '%value%'”
MatchMode.START 字符串在最前面的位置,相当于“like 'value%'”
MatchMode.END 字符串在最后面的位置,相当于“like '%value'”

如果要需要对查询出来的数据进行排序,则需要下面这两个方法
Order.asc() 根据传入的字段进行升序排序
Order.desc() 根据传入的字段进行降序排序
如根据时间将序排序:

                      criteria.addOrder(Order.desc("createtime");

最后,
                      service.findByCriteria(criteria, pager);
用service调用就可以了,因为项目底层封装了很多,这里纯粹是为了个人工作记录



你可能感兴趣的:(java,hibernate,java)