zoukankan      html  css  js  c++  java
  • hibernate笔记4--qbc查询

    Criteria:是一种完全面向对象的查询方式,Criteria查询也叫做qbc查询(query by Criteria)。
             查询全部,分页查询,统计查询,条件查询,排序查询,离线查询
    代码演示:
         1.建库;
         2.导入jar包(required/log4j/mysqlconnector)
         2.建实体类(注意持久化类的编写规则);
         3.编制映射关系文件(Linkman.hbm.xml);
         4.编制核心配置文件(hibernate.cfg.xml);
         5.编写工具类(HibernateUtils.java),增加getCurrentSession方法;
         6.编写测试代码;
    --------------------------------------------------------
    6.编写测试代码;

      1 package demo;
      2 
      3 import java.util.List;
      4 
      5 import org.hibernate.Criteria;
      6  import org.hibernate.Session;
      7  import org.hibernate.Transaction;
      8  import org.hibernate.criterion.Order;
      9  import org.hibernate.criterion.Projections;
     10  import org.hibernate.criterion.Restrictions;
     11  import org.junit.Test;
     12 
     13 import entity.Linkman;
     14  import utils.HibernateUtils;
     15 
     16 //QBC查询
     17 public class Demo03 {
     18      // 查询所有
     19     @Test
     20      public void findAll() {
     21          // 获取当前线程session
     22          Session cs = HibernateUtils.getCurrentSession();
     23          // 开启事务并返回事务对象
     24         Transaction tx = cs.beginTransaction();
     25          // 获取criteria对象,同时即进行查询所有
     26         Criteria cc = cs.createCriteria(Linkman.class);
     27          // 获取结果集
     28         List list = cc.list();
     29          for (Object object : list) {
     30              System.out.println(object);
     31          }
     32          // 提交事务
     33         tx.commit();
     34      }
     35 
     36     // 条件查询
     37     @Test
     38      public void findCondition() {
     39          // 获取当前线程session
     40          Session cs = HibernateUtils.getCurrentSession();
     41          // 开启事务,并返回事务对象
     42         Transaction tx = cs.beginTransaction();
     43          // 获取criteria
     44          Criteria c = cs.createCriteria(Linkman.class);
     45          c.add(Restrictions.like("lkmName", "R%"));
     46          // 获取结果集
     47         List list = c.list();
     48          for (Object object : list) {
     49              System.out.println(object);
     50          }
     51          // 提交事务
     52         tx.commit();
     53      }
     54 
     55     // 分页查询
     56     @Test
     57      public void findByPage() {
     58          // 获取当前 线程session
     59          Session cs = HibernateUtils.getCurrentSession();
     60          // 开启事务,并返回事务对象
     61         Transaction tx = cs.beginTransaction();
     62          // 获取criteria
     63          Criteria c = cs.createCriteria(Linkman.class);
     64          // 调用方法,分页查询
     65         c.setFirstResult(0);
     66          c.setMaxResults(1);
     67          // 获取结果集
     68         List list = c.list();
     69          for (Object object : list) {
     70              System.out.println(object);
     71          }
     72          // 提交事务
     73         tx.commit();
     74      }
     75 
     76     // 排序查询
     77     @Test
     78      public void findWithOrder() {
     79          // 获取当前线程session
     80          Session cs = HibernateUtils.getCurrentSession();
     81          // 开启事务,并返回事务对象
     82         Transaction tx = cs.beginTransaction();
     83          // 获取criteria
     84          Criteria c = cs.createCriteria(Linkman.class);
     85          // 调用方法,倒序查询
     86         c.addOrder(Order.desc("lkmId"));
     87          // 获取结果集
     88         List list = c.list();
     89          for (Object object : list) {
     90              System.out.println(object);
     91          }
     92          // 提交事务
     93         tx.commit();
     94      }
     95 
     96     // 统计查询
     97     @Test
     98      public void findCount() {
     99          // 获取当前线程session
    100          Session cs = HibernateUtils.getCurrentSession();
    101          // 开启事务,并返回事务对象
    102         Transaction tx = cs.beginTransaction();
    103          // 获取criteria
    104          Criteria c = cs.createCriteria(Linkman.class);
    105          // 调用方法,统计查询
    106         c.setProjection(Projections.count("lkmId"));
    107          // 获取结果
    108         Object obj = c.uniqueResult();
    109          System.out.println(obj);
    110          // 提交事务
    111         tx.commit();
    112      }
    113  }
    114 -----------------------------------------------
    115 离线查询:模拟三层架构
    116 package demo;
    117 
    118 import java.util.List;
    119 
    120 import org.hibernate.Criteria;
    121  import org.hibernate.Session;
    122  import org.hibernate.Transaction;
    123  import org.hibernate.criterion.DetachedCriteria;
    124  import org.hibernate.criterion.Restrictions;
    125  import org.junit.Test;
    126 
    127 import entity.Linkman;
    128  import utils.HibernateUtils;
    129 
    130 //离线查询
    131 public class Demo04 {
    132      @Test
    133      public void web() {
    134          DetachedCriteria dc = DetachedCriteria.forClass(Linkman.class);
    135          dc.add(Restrictions.eq("lkmId", 4L));
    136          service(dc);
    137      }
    138 
    139     public void service(DetachedCriteria dc) {
    140          dao(dc);
    141      }
    142 
    143     public void dao(DetachedCriteria dc) {
    144          Session cs = HibernateUtils.getCurrentSession();
    145          Transaction tx = cs.beginTransaction();
    146          Criteria c = dc.getExecutableCriteria(cs);
    147          List list = c.list();
    148          for (Object object : list) {
    149              System.out.println(object);
    150          }
    151          tx.commit();
    152 
    153     }
    154  }
    155 

  • 相关阅读:
    (C#)一个WCF简单实例
    C#如何为winform程序打包发布应用(图解教程)
    CSLA之对象状态的跟踪
    猎豹浏览器中附带的2个文件【12306抢票插件相关的】
    将数据库表直接导到Visio中!
    Visual Studio 开发 SharePoint 2010
    Sharepoint 2010 应用范围
    SharePoint自定义权限级别【转】
    SharePoint 2010 安装系统和所需软件
    objectiveC nil,Nil,NULL 和NSNull的小结
  • 原文地址:https://www.cnblogs.com/huguangqin/p/7416552.html
Copyright © 2011-2022 走看看