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种 ...
随机推荐
- maven 常用的环境插件
<build> <finalName>yycgproject</finalName> <plugins> <!-- 修改jdk插件 --> ...
- win10 下eclipse tomcat 热部署问题?
前言: 问题的描述: 用的环境是maven,java,tomcat,win10 tomcat server配置如下 项目发布之后,修改jsp,报错,错误详情如下: 解决办法.勾选server opti ...
- erlang 求N以内的质数
素数,又称质数,在一个大于1的自然数中,除了1和此整数自身之外,不能被其他自然数整除的数. 比1大但不是素数的数称为合数. 1和0既不是素数,也不是合数. 算术基本定理证明每个大于1的正整数都可以写成 ...
- 数仓interview总结
一 数据库 1.1 数据库事务特性ACID 原子性Atomicity,一致性Consistency,隔离性Isolation,持续性Durability 1.2 锁有几种,及范围 从数据库系统角度分为 ...
- NSIS 变量
$PROGRAMFILES 程序文件目录(通常为 C:\Program Files 但是运行时会检测). $COMMONFILES 公用文件目录.这是应用程序共享组件的目录(通常为 C:\Progra ...
- vue实践---vue不依赖外部资源实现简单多语
vue使用多语,最常见的就是 vue-i18n, 但是如果开发中的多语很少,比如就不到10个多语,这样就没必要引入vue-i18n了, 引入了反正导致代码体积大了,这时候单纯用vue实现多语就是比较好 ...
- Java常用代码工具类相关
1.HttpServletRequest转换成Map public static Map<String,String> parseXML(HttpServletRequest reques ...
- 统计输入的单词中有几个长度大于n的,n是自己指定的,用函数对象实现
#ifndef COUNT_WORD_H #define COUNT_WORD_H #include <string.h> #include <iostream> #inclu ...
- 使用Socket通信实现FTP客户端程序
FTP 客户端如 FlashFXP,File Zilla 被广泛应用,原理上都是用底层的 Socket 来实现.FTP 客户端与服务器端进行数据交换必须建立两个套接字,一个作为命令通道,一个作为数据通 ...
- 大组合取模之:1<=n<=m<=1e6,1<=p<=1e9
/****************************** 大组合取模之:1<=n<=m<=1e6,1<=p<=1e9 使用:程序最开始调用getprime(),需要 ...