日期:2014-05-18  浏览次数:20670 次

J2EE 初始DetachedCriteria

随着一点一点的学习.再回过头来看以前的博客.

觉得自己当初多么可笑.

最近越来越懒.好久没有写博客记录学习笔记了.

今天把以前早就打算写的DetachedCriteria 查询做个整理.

认识还不够.有什么不对的地方希望大神指出.

通过网上了解,还有这段时间的使用.只是知道DetachedCriteria 可以用于查询.

至于好在哪.或者是效率高在哪.完全不知道.

只是会用.觉得DetachedCriteria 可以完成的hql也可以完成.

其他不说了.下面是学习中的一些记录:

我常用的有DetachedCriteria 的如下方法:

add(Criterion criterion) 

addOrder(Order order) 

createAlias(String associationPath, String alias) 

目前我只用了这三个方法.

add

首先初始化一个DetachedCriteria对象:

DetachedCriteria dc = DetachedCriteria.forClass(Car.class);
dc.add(Restrictions.eq("carNo", "川A88888"));//查询carNo为"川A88888"的对象
dc.add(Restrictions.like("carName","%奔驰%"));//模糊查询carName为奔驰的对象
dc.add(Restrictions.between("date", date1, date2));//查询日期在date1与date2之间的对象,当然不止可以查询日期
dc.add(Restrictions.isNotNull("driver"));//查询driver不为空的,当然对应的还有isNull,isEmpty等


其他常用方法:

allEq(Map propertyNameValues)  使用Map完成多个对比(其实个人觉得多做几次eq也是可以的)
and(Criterion lhs, Criterion rhs)  同sql语句中的and
ge(String propertyName, Object value)  >=
gt(String propertyName, Object value)  >
in(String propertyName, Collection values)  同sql中的in
le(String propertyName, Object value)  <=
lt(String propertyName, Object value)  <
or(Criterion lhs, Criterion rhs)