一、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. Y2K Accounting Bug - 2586

      Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 11271   Accepted: 5672 Description Ac ...

  2. 【JMeter4.0学习(八)】之断言

    目录 响应断言 一.响应断言 1.添加线程组 2.添加HTTP请求默认值 3.添加HTTP请求1 4.先运行“HTTP请求1”,查看结果树的“取样器结果.请求.响应数据” ①取样器结果 ②请求 ③响应 ...

  3. CSS改变字体下划线颜色

    下图是网页中一个非常普通的列表. watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvQXVndXMzMzQ0/font/5a6L5L2T/fontsize/40 ...

  4. java基础之【堆、栈、方法区】结构图

    |--数组实例化过程 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHViaWFvXzA2MTg=/font/5a6L5L2T/fontsize/400/ ...

  5. Python的Django框架中的Context使用

    Python的Django框架中的Context使用 近期整理些Python方面的知识,一旦你创建一个 Template 对象,你能够用 context 来传递数据给它. 一个context是一系列变 ...

  6. PopupWindowFromBottom 从底部弹出popupwindow

    自定义PopupWindowFromBottom public class PopupWindowFromBottom extends PopupWindow { public PopupWindow ...

  7. 打包合并多个dll

    复杂项目中会引用大量的第三方dll文件,为了便于管理会尝试把相关打包合并成一个dll文件. 推荐使用ILMerge,如需使用网上自行下载. 使用方法: cd 安装目录 ILmerge /target: ...

  8. element-ui table 点击分页table滚动到顶部

    在做项目中,碰到一个问题,table加了固定头,内容可滚动,当滚到table底边时,点击分页后还在底边 解决方法:设置table的 ref='multipleTable' //切换分页的方法加上下面这 ...

  9. 九度OJ 1346:会员积分排序 (排序)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:967 解决:413 题目描述: 元旦佳节快到了,超市A想要给会员一些奖品.但是奖品有限,所以它需要给这些会员做一个排序,然后将名单输出来.排 ...

  10. zookeeper(二): Curator vs zkClient

    目录 zookeeper Curator zkClient 客户端对比 写在前面 1.1. zookeeper应用开发 1.1.1. ZkClient简介 1.1.2. Curator简介 写在最后 ...