一、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、样例查询&离线查询的更多相关文章

  1. 风炫安全WEB安全学习第二十节课 反射型XSS讲解

    风炫安全WEB安全学习第二十节课 反射型XSS讲解 反射性xss演示 原理讲解 如果一个应用程序使用动态页面向用户显示错误消息,就会造成一种常见的XSS漏洞.通常,该页面会使用一个包含消息文本的参数, ...

  2. scrapy爬虫学习系列二:scrapy简单爬虫样例学习

    系列文章列表: scrapy爬虫学习系列一:scrapy爬虫环境的准备:      http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_python_00 ...

  3. Hibernate学习---第十五节:hibernate二级缓存

    1.二级缓存所需要的 jar 包 这三个 jar 包实在 hibernate 解压缩文件夹的 lib\optional\ehcache 目录下 2.配置 ehcache.xml <ehcache ...

  4. Hibernate学习---第十四节:hibernate之session线程安全

    1.hibernate.cfg.xml 文件中添加如下代码开启线程安全: <property name="hibernate.current_session_context_class ...

  5. Hibernate学习---第十三节:hibernate过滤器和拦截器的实现

    一.hibernate 过滤器 1.在持久化映射文件中配置过滤器,代码如下: <?xml version="1.0"?> <!DOCTYPE hibernate- ...

  6. Hibernate学习---第十一节:Hibernate之数据抓取策略&批量抓取

    1.hibernate 也可以通过标准的 SQL 进行查询 (1).将SQL查询写在 java 代码中 /** * 查询所有 */ @Test public void testQuery(){ // ...

  7. Hibernate学习---第七节:关联关系

    一.关联关系一对一外键(双向) 1.实体类,代码如下: package learn.hibernate.bean; import java.util.Date; /** * 持久化类设计 * 注意: ...

  8. Hibernate学习---第六节:数组&list&map&set的映射配置

    1.实体类,代码如下: package learn.hibernate.bean; import java.util.Date; import java.util.HashMap; import ja ...

  9. Hibernate学习(七)———— hibernate中查询方式详解

    序言 之前对hibernate中的查询总是搞混淆,不明白里面具体有哪些东西.就是因为缺少总结.在看这篇文章之前,你应该知道的是数据库的一些查询操作,多表查询等 --WH 一.hibernate中的5种 ...

随机推荐

  1. C++编译错误C2365

    曾经我们说重定义一般是函数或者变量的重定义.今天遇到了一个新类型的重定义errorC2365 #include <iostream> using namespace std; class ...

  2. iptables启动脚本分析

    #!/bin/sh # # iptables Start iptables firewall # # chkconfig: 2345 08 92 # description: Starts, stop ...

  3. jQuery动态加载JS以减少服务器压力

    如果您要创建一个web2.0的应用程序,那么你的网页会包括大量的JavaScript文件,这些可能会拖慢您的网页.因此,动态加载JavaScript代码到您的网页是一个好主意,即只有当实用他们的时候加 ...

  4. android 自定义 listView

    目录: 1.主布局 ListView <?xml version="1.0" encoding="utf-8"?><RelativeLayou ...

  5. MapReduce Input Split(输入分/切片)具体解释

    看了非常多博客.感觉没有一个说的非常清楚,所以我来整理一下. 先看一下这个图 输入分片(Input Split):在进行map计算之前,mapreduce会依据输入文件计算输入分片(input spl ...

  6. spider_action

    spider from mobile to mobile to mobile from selenium import webdriver from selenium.webdriver.chrome ...

  7. springboot + swagger2 学习笔记

    引入步骤 1.添加依赖 <dependency> <groupId>io.springfox</groupId> <artifactId>springf ...

  8. spring属性注入方式

    一.使用有参构造注入属性 配置文件 constructor-arg标签是需注入属性的名字 User类 生成了User的有参构造函数 测试类 结果 打印出了name属性的值 二.使用set方法注入属性 ...

  9. 如何用excel urldecode解码把url编码转为汉字?

    统计分析可以反映出网站运营的情况,并根据实际作出相应的调整,是站长必需的基础技能.ytkah感觉最好用的是谷歌统计,里面有个搜索关键词及对应受访页面,这个功能对优化用处很大,但大家都知道访问不太顺畅. ...

  10. delete 和 truncate 的 区别

    如果要清空表中的所有记录,可以使用下面的两种方法: DELETE FROM table1     TRUNCATE TABLE table1 以下 为之区别: 1)执行速度和灵活性    trunca ...