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 ...
随机推荐
- Windows下安装MySQL压缩zip包
MySQL 是最流行的关系型数据库管理系统,在WEB应用方面 MySQL 是最好的RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之 ...
- 6 大主流 Web 框架优缺点对比:15篇前端热文回看
摘自:http://blog.csdn.net/VhWfR2u02Q/article/details/78993079 注:以下文章,点击标题即可阅读 <6 大主流 Web 框架优缺点对比> ...
- 20169219《linux内核原理与分析》第六周作业
网易云课堂学习 1.intel x86 CPU有四种不同的执行级别0-3,linux只使用了其中的0级和3级分贝来表示内核态和用户态. 2.一般来说在linux中,地址空间是一个显著的标志:0xc00 ...
- 聪明的kk (南洋理工—171)
#include<iostream> using namespace std; ][]; ][]; int N, M; int dp(int i, int j) { ) return d[ ...
- Sharepoint2013商务智能学习笔记之Excel Service展示Sql Server数据Demo(五)
第一步,打开Excel新建空白工作簿 第二步,使用Excel连接sql 数据库 第三步,画图 第四步 添加筛选器 最后效果如下: 第五步,将Excel上传到sharepoint任意文档库,并直接点击 ...
- 缓存处理类(MemoryCache结合文件缓存)
想提升站点的性能,于是增加了缓存,但是站点不会太大,于是不会到分布式memcached的缓存和redis这个nosql库,于是自己封装了.NET内置的缓存组件 原先使用System.Web.Cachi ...
- 消息队列--RabbitMQ(一)
1.消息队列概述 可以理解为保存消息的一个媒介/或者是个容器,与之相关有两个概念(即生产者(Publish)与消费者(Consumer)).所谓生产者,就是生产创造消息的一方,那么,消费者便是从队列中 ...
- .net Core命令行,Json配置
创建.netCore控制台 NuGet :Microsoft.AspNetCore.All static void Main(string[] args) { var builder = new Co ...
- 洛谷P3387 缩点模板
给定一个n个点m条边有向图,每个点有一个权值,求一条路径,使路径经过的点权值之和最大.你只需要求出这个权值和. 允许多次经过一条边或者一个点,但是,重复经过的点,权值只计算一次. 因为可以重复经过点, ...
- HDU-2588-GCD (欧拉函数)
The greatest common divisor GCD(a,b) of two positive integers a and b,sometimes written (a,b),is the ...