hibernate的QBE和QBC

一、先介绍几个名词:
 Criteria:在线查询容器
 DetachedCriteria:离线查询容器
 Example:作为查询容器德参数,创建查询对象的模版
 Restrictions:作为查询容器的参数,设置封装限制条件、查询条件的模版,返回类型为Criterion
 Order:作为查询容器的参数,用于排序
 Projections:作为查询容器的参数,用于统计,对应数据库中的聚会函数

二、QBC、QBE查询方式介绍:
 1、QBE方式的在线查询:QBE 查询的关键就是样本对象的创建,样本对象中的所有非空属性均将作为查询条件
  Session session = HibernateSessionFactory.getSessionFactory().openSession();
  Transaction transaction = session.beginTransaction();  
   Criteria criteria = session.createCriteria(Student.class);//创建一个查询容器
   Student stu = new Student();
   stu.setName("Lily");
   Example example = Example.create(stu);//创建一个查询对象模版,模版中封装查询条件,stu解析的形式为key/value,参数可以是一个Map
   criteria.add(example);
   List list = criteria.list();
   transaction.commit(); 
   HibernateSessionFactory.closeSession();
 2、QBE方式的离线查询:
  DetachedCriteria dc = DetachedCriteria.forClass(Student.class);//获得离线查询器
  Student stu = new Student();
  stu.setName("Lily");
  Example e=Example.create(entity);//创建一个查询对象模版,模版中封装查询对象
  dc.add(e);
  Session session = HibernateSessionFactory.getSessionFactory().openSession();  
  Transaction ts = session.beginTransaction();//获得当前session,并开启事务
  Criteria criteria=dc.getExecutableCriteria(session);//session作为参数,通过离线查询器获得在线查询器
   List list = criteria.list();
   transaction.commit(); 
   HibernateSessionFactory.closeSession();

  对QBE的Example的一点使用介绍:
  example.excludeNone();  排除对属性值为null的过滤
  example.ignoreCase();   对String类型属性的过滤不区分大小写
  example.enableLike(MatchMode.ANYWHERE); 对String类型属性采用完全模糊过滤查询
  example.excludeZeroes();  排除对属性值为0的过滤
  example.excludeProperty("entityName"); 排除指定的属性名


 3、QBC方式的在线查询:
  Session session = HibernateSessionFactory.getSessionFactory().openSession();  
  Transaction ts =

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值