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
hibernate笔记4--qbc查询的更多相关文章
- [原创]java WEB学习笔记92:Hibernate学习之路-- -QBC 检索和本地 SQL 检索:基本的QBC 查询,带 AND 和 OR 的QBC,统计查询,排序,分页
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- Hibernate之QBC查询与本地SQL查询
1. QBC查询: QBC 查询就是通过使用Hibernate提供的QueryByCriteria API 来查询对象,这种API封装了SQL语句的动态拼装,对查询提供了更加面向对象的功能接口 ...
- Hibernate的几种查询方式-HQL,QBC,QBE,离线查询,复合查询,分页查询
HQL查询方式 这一种我最常用,也是最喜欢用的,因为它写起来灵活直观,而且与所熟悉的SQL的语法差不太多.条件查询.分页查询.连接查询.嵌套查询,写起来与SQL语法基本一致,唯一不同的就是把表名换成了 ...
- Hibernate —— HQL、QBC检索方式
一.HQL 检索方式 以双向的一对多来测试 HQL 检索方式.以 Department 和 Employee 为例. 建表语句: CREATE TABLE department ( dept_id ) ...
- Hibernate5.2之QBC查询
Hibernate5.2值QBC查询 一.简介 Hibenate的QBC查询个人认为是Hib ...
- 框架Hibernate笔记系列 基础Session
标题:框架Hibernate笔记 资料地址: 1. www.icoolxue.com 孔浩 1.背景简介 Hibenate是JBoss公司的产品.它是数据持久化的框架.Usually,我们使用JDBC ...
- SQL查询(笔记2——实体查询)
SQL查询(笔记2——实体查询) 二.实体查询 如果查询返回了某个数据表的全部数据列,且该数据表有对应的持久化类映射,我们就把查询结果转换成实体查询.将查询结果转换成实体,可以使用SQLQuery提供 ...
- Hibernate学习---单表查询
我们都知道SQL是非常强大的,为什么这么说呢?相信学过数据库原理的同学们都深有体会,SQL语句变化无穷,好毫不夸张的说可以实现任意符合我们需要的数据库操作,既然前面讲到Hibernate非常强大,所以 ...
- Hibernate的四种查询方式(主键查询,HQL查询,Criteria查询,本地sql查询)和修改和添加
Hibernate的添加,修改,查询(三种查询方式)的方法: 案例演示: 1:第一步,导包,老生常谈了都是,省略: 2:第二步,创建数据库和数据表,表结构如下所示: 3:第三步创建实体类User.ja ...
随机推荐
- unreal3对象管理模块分析
凡是稍微大一点的引擎框架,必然都要自己搞一套对象管理机制,如mfc.qt.glib等等,unreal自然也不例外. 究其原因,还是c++这种静态语言天生的不足,缺乏运行时类型操作功能,对于复杂庞大的逻 ...
- p2071 座位安排
传送门 题目 已知车上有N排座位,有N*2个人参加省赛,每排座位只能坐两人,且每个人都有自己想坐的排数,问最多使多少人坐到自己想坐的位置. 输入格式: 第一行,一个正整数N. 第二行至第N*2+1行, ...
- ASP.NET MVC实现layui富文本编辑器应用
先看看视图层 在视图层,使用的是视图助手--HtmlHelper,代替我们网页中传统的表单标签元素,其中的m代表实体模型.通过视图助手,为我们生成id和name属性相同的textarea标签. 备注: ...
- Hadoop WordCount单词计数原理
计算文件中出现每个单词的频数 输入结果按照字母顺序进行排序 编写WordCount.java 包含Mapper类和Reducer类 编译WordCount.java javac -classpath ...
- 洛谷P3038 牧草种植Grass Planting
思路: 首先,这道题的翻译是有问题的(起码现在是),查询的时候应该是查询某一条路径的权值,而不是某条边(坑死我了). 与平常树链剖分题目不同的是,这道题目维护的是边权,而不是点权,那怎么办呢?好像有点 ...
- Java基础笔记(十四)——封装
封装(好比ATM机) 将类的某些信息隐藏在类内部,不允许外部程序直接访问(隐藏对象的信息),通过该类提供的方法来实现对隐藏信息的操作和访问(留出访问的接口). 特点: 1.只能通过规定的方法访问数据. ...
- 微信小程序-修改单选框和复选框大小的方法
方法有两种: 一:采用css的zoom属性 zoom缩放会将元素保持在左上角,并且会有毛边,可能会稍稍改变元素原来的形状. 二:采用css3的transform:scale属性 zoom缩放会将元素保 ...
- 打造H5动感影集的爱恨情仇–动画性能篇
“你听说过动感影集么?” 动感影集是QQ空间新功能,可以将静态的图片轻松转变为动态的视频集,且载体是HTML5(简称H5)页面,意味着可以随时分享到空间或朋友圈给好友欣赏! 移动端区别于PC年代的相册 ...
- Flask&&人工智能AI --2
参考博客: https://www.cnblogs.com/xiao987334176/p/9598606.html 昨日作业讲解 昨天的作业就是,有3个视图函数,分别是/login,/student ...
- 【hihocoder】1237 : Farthest Point 微软2016校招在线笔试题
题目:给定一个圆,要你求出一个在里面或者在边上的整数点,使得这个点到原点的距离最大,如果有多个相同,输出x最大,再输出y最大. 思路:对于一个圆,里面整点个数的x是能确定的.你找到x的上下界就可以了. ...