Hibernate学习---第十节:Hibernate之QBC、样例查询&离线查询
一、QBC (Query By Criteria) 主要有Criteria,Criterion,Oder,Restrictions类组成
1、java 代码如下:
/**
* 查询所有
*/
@Test
public void testQuery(){
// 获取 Criteria 对象
Criteria criteria = session.createCriteria(Person.class);
List<Person> list = criteria.list();
for(Person p : list){
System.out.println(p);
}
} /**
* 条件查询
*/
@Test
public void testQuery2(){
// 获取 Criteria 对象
Criteria criteria = session.createCriteria(Person.class);
// 查询 id 属性小于等于 5 的记录
criteria.add(Restrictions.le("id", 5));
// 查询 id 属性等于 5 的记录
criteria.add(Restrictions.eq("id", 5));
// 模糊查询 name 属性包含 -8 的记录
criteria.add(Restrictions.like("name", "%-8%"));
// 查询 age 属性 21 岁到 24 岁之间的记录
criteria.add(Restrictions.between("age", 21, 24));
// 查询 id 属性等于 2,5,7的记录
criteria.add(Restrictions.in("id", new Object[]{2,5,7}));
// 对 id 属性做升序
criteria.addOrder(Order.asc("id"));
// 对 id 属性做降序
criteria.addOrder(Order.desc("id"));
List<Person> list = criteria.list();
for(Person p : list){
System.out.println(p);
}
} /**
* 条件查询
* 通过 Property 类的静态方法进行查询条件的绑定
* 其实底层是对 Restrictions 的封装
*/
@Test
public void testQuery3(){
// 获取 Criteria 对象
Criteria criteria = session.createCriteria(Person.class);
// 查询 id 属性小于等于 5 的记录
criteria.add(Property.forName("id").le(5));
// 查询 age 属性 21 岁到 24 岁之间的记录
criteria.add(Property.forName("id").between(3, 6));
List<Person> list = criteria.list();
for(Person p : list){
System.out.println(p);
}
}
QBC:http://blog.csdn.net/agromach/article/details/1932290
二、样例查询
1、java 代码如下:
/**
* 样例查询
* 根据给定了值的属性作为查询条件进行查询
* 注意:一个对象的属性是基本类型,因为有默认值,所有也会拼装到查询条件中
*/
@Test
public void testQuery4(){
Person p = new Person();
p.setName("ldh-8");
p.setPasswork(131);
Criteria criteria = session.createCriteria(Person.class);
criteria.add(Example.create(p));
List<Person> list = criteria.list();
for(Person person : list){
System.out.println(person);
}
}
三、离线查询
/**
* 离线查询
* 可以在绑定查询数据和条件之前不需要session(最晚打开session)
* 当真正使用的时候才传递一个当前的session
*
* session使用的技巧:
* 最晚打开
* 最早关闭
* 不用长时间的打开
*/
@Test
public void testQuery5(){
DetachedCriteria dc = DetachedCriteria.forClass(Person.class);
dc.add(Restrictions.between("id", 5, 8));
Criteria criteria = dc.getExecutableCriteria(session);
List<Person> list = criteria.list();
for(Person person : list){
System.out.println(person);
}
}
Hibernate学习---第十节:Hibernate之QBC、样例查询&离线查询的更多相关文章
- 风炫安全WEB安全学习第二十节课 反射型XSS讲解
风炫安全WEB安全学习第二十节课 反射型XSS讲解 反射性xss演示 原理讲解 如果一个应用程序使用动态页面向用户显示错误消息,就会造成一种常见的XSS漏洞.通常,该页面会使用一个包含消息文本的参数, ...
- scrapy爬虫学习系列二:scrapy简单爬虫样例学习
系列文章列表: scrapy爬虫学习系列一:scrapy爬虫环境的准备: http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_python_00 ...
- Hibernate学习---第十五节:hibernate二级缓存
1.二级缓存所需要的 jar 包 这三个 jar 包实在 hibernate 解压缩文件夹的 lib\optional\ehcache 目录下 2.配置 ehcache.xml <ehcache ...
- Hibernate学习---第十四节:hibernate之session线程安全
1.hibernate.cfg.xml 文件中添加如下代码开启线程安全: <property name="hibernate.current_session_context_class ...
- Hibernate学习---第十三节:hibernate过滤器和拦截器的实现
一.hibernate 过滤器 1.在持久化映射文件中配置过滤器,代码如下: <?xml version="1.0"?> <!DOCTYPE hibernate- ...
- Hibernate学习---第十一节:Hibernate之数据抓取策略&批量抓取
1.hibernate 也可以通过标准的 SQL 进行查询 (1).将SQL查询写在 java 代码中 /** * 查询所有 */ @Test public void testQuery(){ // ...
- Hibernate学习---第七节:关联关系
一.关联关系一对一外键(双向) 1.实体类,代码如下: package learn.hibernate.bean; import java.util.Date; /** * 持久化类设计 * 注意: ...
- Hibernate学习---第六节:数组&list&map&set的映射配置
1.实体类,代码如下: package learn.hibernate.bean; import java.util.Date; import java.util.HashMap; import ja ...
- Hibernate学习(七)———— hibernate中查询方式详解
序言 之前对hibernate中的查询总是搞混淆,不明白里面具体有哪些东西.就是因为缺少总结.在看这篇文章之前,你应该知道的是数据库的一些查询操作,多表查询等 --WH 一.hibernate中的5种 ...
随机推荐
- 请描述Java中的时间监听机制?
1.时间监听涉及到三个组件:事件源.事件对象.事件监听器 2.当事件源上发生某个动作时,它会调用事件监听器的一个方法,并将事件对象穿进去,开发人员在监听器中通过事件对象,拿到事件源,从而对事件源进行操 ...
- 【Mac系统】istatmenus6.20下载以及激活
下载地址:https://pan.baidu.com/s/1-2-yw2NnOlGJ46D536t5uQ iStat Menus 的激活密码: Email: 982092332@qq.com SN: ...
- 安装Struts2 类库
现在,如果一切正常,那么你可以继续设置您的Struts 2框架.以下是简单的步骤,下载并安装在机器上Struts2. 请选择是否要安装Hibernate在Windows或Unix,然后继续进行下一个步 ...
- PHP自动加载功能原理解析
前言 这篇文章是对PHP自动加载功能的一个总结,内容涉及PHP的自动加载功能.PHP的命名空间.PHP的PSR0与PSR4标准等内容. 一.PHP自动加载功能 PHP自动加载功能的由来 在PHP开发过 ...
- SDOI2012 Round1 day2 集合(set)解题报告
//=====================以上为官方题解==============// 数据略水,暴力枚举50. 把边按照升序排一遍,在询问,水过. #include<cstdio> ...
- [Oracle]根据字段值全库搜索相关数据表和字段
这个需求比较冷门,但对于在某些特定的情况下,还是会有这样的需要的.好在Oracle实现还比较方便,用存储过程则轻松实现. 查询字符串: create or replace procedure sear ...
- HTML 与 SGML关系
HTML :超文本标记语言,“超文本”就是指页面内可以包含图片.链接,甚至音乐.程序等非文字元素 SGML:标准通用标记语言 HTML 是SGML下的一个应用
- [Symfony\Component\Config\Definition\Exception\InvalidConfigurationException] The child node "db_driver" at path "fos_user" must be configured.
$ php bin/console server:run [Symfony\Component\Config\Definition\Exception\InvalidConfigurationExce ...
- C++学习笔记30,指针的引用(2)
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/guang_jing/article/details/32910093 能够创建不论什么类型的引用,包 ...
- WORD表格数据运算技巧
我们经常会用WORD制作表格,有时表内的数据要运算的,WORD表格数据运算能力无法与EXCEL相比.但常见的乘除加减.相邻数据累加,将金额数字自动转成大写,WORD都能在表格内自动完成.下面以一个简单 ...