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

hibernate笔记4--qbc查询的更多相关文章

  1. [原创]java WEB学习笔记92:Hibernate学习之路-- -QBC 检索和本地 SQL 检索:基本的QBC 查询,带 AND 和 OR 的QBC,统计查询,排序,分页

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  2. Hibernate之QBC查询与本地SQL查询

    1. QBC查询:     QBC 查询就是通过使用Hibernate提供的QueryByCriteria API 来查询对象,这种API封装了SQL语句的动态拼装,对查询提供了更加面向对象的功能接口 ...

  3. Hibernate的几种查询方式-HQL,QBC,QBE,离线查询,复合查询,分页查询

    HQL查询方式 这一种我最常用,也是最喜欢用的,因为它写起来灵活直观,而且与所熟悉的SQL的语法差不太多.条件查询.分页查询.连接查询.嵌套查询,写起来与SQL语法基本一致,唯一不同的就是把表名换成了 ...

  4. Hibernate —— HQL、QBC检索方式

    一.HQL 检索方式 以双向的一对多来测试 HQL 检索方式.以 Department 和 Employee 为例. 建表语句: CREATE TABLE department ( dept_id ) ...

  5. Hibernate5.2之QBC查询

                                                         Hibernate5.2值QBC查询 一.简介  Hibenate的QBC查询个人认为是Hib ...

  6. 框架Hibernate笔记系列 基础Session

    标题:框架Hibernate笔记 资料地址: 1. www.icoolxue.com 孔浩 1.背景简介 Hibenate是JBoss公司的产品.它是数据持久化的框架.Usually,我们使用JDBC ...

  7. SQL查询(笔记2——实体查询)

    SQL查询(笔记2——实体查询) 二.实体查询 如果查询返回了某个数据表的全部数据列,且该数据表有对应的持久化类映射,我们就把查询结果转换成实体查询.将查询结果转换成实体,可以使用SQLQuery提供 ...

  8. Hibernate学习---单表查询

    我们都知道SQL是非常强大的,为什么这么说呢?相信学过数据库原理的同学们都深有体会,SQL语句变化无穷,好毫不夸张的说可以实现任意符合我们需要的数据库操作,既然前面讲到Hibernate非常强大,所以 ...

  9. Hibernate的四种查询方式(主键查询,HQL查询,Criteria查询,本地sql查询)和修改和添加

    Hibernate的添加,修改,查询(三种查询方式)的方法: 案例演示: 1:第一步,导包,老生常谈了都是,省略: 2:第二步,创建数据库和数据表,表结构如下所示: 3:第三步创建实体类User.ja ...

随机推荐

  1. jdk 安装及环境变量配置

    一.jdk安装及基础配置,转自文章来源:http://www.cnblogs.com/smyhvae/p/3788534.html 1.jdk下载及安装 下载网站:http://www.oracle. ...

  2. sql 删除重复数据保留一条

    --创建测试表 CREATE TABLE TEST ( DEPTNO ), DNAME ), LOC ) ); --插入测试数据 , 'test1', 'test2'); , 'test1', 'te ...

  3. EasyUI知识点汇总

    combobox联动设置 $(document).ready(function() { $('#gdfsdl1').combobox({ onSelect: function(record){ $(' ...

  4. 消息队列--RabbitMQ(一)

    1.消息队列概述 可以理解为保存消息的一个媒介/或者是个容器,与之相关有两个概念(即生产者(Publish)与消费者(Consumer)).所谓生产者,就是生产创造消息的一方,那么,消费者便是从队列中 ...

  5. cf811C(预处理&dp)

    题目链接: http://codeforces.com/problemset/problem/811/C 题意: 给一个有n个人排队上车,去相同地方的人要么坐在同一个车厢,要不就不上车,问最大舒适度和 ...

  6. OSD

    OSD(on-Screen Display)屏幕单式调节方式 主要功能是显示一个用户控制界面和一些系统状态信息. 简单点说:OSD技术就是在屏幕的原有图像上面叠加显示相关信息(包括文字.图片等)的技术 ...

  7. LaTeX使用心得

    LaTeX是一个功能强大的,开源的排版工具. 最近教练让我们做课件,我做数论,鉴于LaTeX的数学公式功能强大(而MS办公软件的数学公式简直就是个LJ)和我的学习精神,我决定用LaTeX写课件. 在一 ...

  8. 需要命名空间管理器或 XsltContext。此查询具有前缀、变量或用户定义的函数 及 多属性节点查询

    第一个问题, 1. 首先需要引入命名空间, 2. 其次,在用xpath查找结点时,在selectNodes等方法中再次带入命名空间 如 XmlDocument doc = new XmlDocumen ...

  9. CF986A Fair

    题目描述 Some company is going to hold a fair in Byteland. There are n n n towns in Byteland and m m m t ...

  10. CF987B High School: Become Human 数学

    题意翻译 题目大意 输入一个 xxx ,一个 yyy ,求是 xyx^yxy 大还是 yxy^xyx 大. (1≤x,y≤109)(1≤x,y≤10^9)(1≤x,y≤109) 输入输出格式 输入格式 ...