DetachedCriteria的使用详解

DetachedCriteria可以脱离session的生命周期,对应相同的查询条件可以重复使用,增加了查询条件的重用性,同时不用每次使用criteria时都要重复创建session,而session的销毁同时也会使得criteria失效,使用DetachedCriteria可以在每次使用时与当前的session实例绑定可以获得更好的代码重用性,同时使某些通用的查询条件抽离出来。此为DetachedCriteria的作用之一:

实例代码:

public void testDetached(){

       TUser user=new    TUser();

       DetachedCriteria deCriteria=DetachedCriteria.forClass(TUser.class);

       deCriteria.add(Expression.eq("name", "sky"));

       Criteria criteria=deCriteria.getExecutableCriteria(session);

       Iterator it=criteria.list().iterator();

       while(it.hasNext()){

           user=(TUser)it.next();

           System.out.println(user.getName()+" "+user.getAge()+" "+user.getId());

          

          

       }

      

    }

作用之二:

用于子查询表达式:

public void testDetach(){

       TUser user=null;

       DetachedCriteria avgAge=DetachedCriteria.forClass(TUser.class);

       avgAge.setProjection(Projections.avg("age"));

       Criteria criteria=session.createCriteria(TUser.class);

       criteria.add(Subqueries.propertyGt("age", avgAge));

       List list=criteria.list();

       for(int i=0;i<list.size();i++){

           user=(TUser)list.get(i);

           System.out.println(user.getAge()+"  "+user.getName());

          

       }

      

    }

posted on 2013-03-13 11:45 moonfans 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/moonfans/archive/2013/03/13/2957362.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值