Hibernate查询_HQL_EJBQL_QBC_QBE
查询按功能强弱可以分为以下几种:
Native SQL > HQL > EJBQL > QBC > QBE
1、Native SQL
Native SQL为数据库系统本身的SQL,里面包含了一些特有的函数等,功能也最为强大。
如:
@Test2
public void testHQL_34() {3
Session session = sf.openSession();4
session.beginTransaction();5
//下面查询使用的函数是Session的createSQLQuery6
SQLQuery q = session.createSQLQuery("select * from category limit 2,4").addEntity(Category.class);7
List<Category> categories = (List<Category>)q.list();8
for(Category c : categories) {9
System.out.println(c.getName());10
}11
session.getTransaction().commit();12
session.close();13
14
}2、HQL
Hibernate提供的面向对象查询语言。
如:
@Test2
public void testHQL_02() {3
Session session = sf.openSession();4
session.beginTransaction();5
//Category是对象名而不是数据表名6
Query q = session.createQuery("from Category c where c.name > 'c5'");7
List<Category> categories = (List<Category>)q.list();8
for(Category c : categories) {9
System.out.println(c.getName());10
}11
session.getTransaction().commit();12
session.close();13
14
}3、EJBQL
与HQL类似,是HQL的一个子集
4、QBC
Query By Criteria,即带约束/条件的查询
如:
@Test2
public void testQBC() {3
Session session = sf.openSession();4
session.beginTransaction();5
//criterion 标准/准则/约束6
Criteria c = session.createCriteria(Topic.class) //from Topic7
8
.add(Restrictions.gt("id", 2)) //greater than = id > 29
.add(Restrictions.lt("id", 8)) //little than = id < 810
.add(Restrictions.like("title", "t_"))11
.createCriteria("category")12
.add(Restrictions.between("id", 3, 5)) //category.id >= 3 and category.id <=513
;14

15
//DetachedCriterea16
for(Object o : c.list()) {17
Topic t = (Topic)o;18
System.out.println(t.getId() + "-" + t.getTitle());19
}20
session.getTransaction().commit();21
session.close();22
23
}5、QBE
Query By Example
如:
@Test2
public void testQBE() {3
Session session = sf.openSession();4
session.beginTransaction();5
Topic tExample = new Topic();6
tExample.setTitle("T_");7
8
//创建一个例子对象,然后设置其相应的属性9
//QBE仅适合于给特定值的查询10
Example e = Example.create(tExample)11
.ignoreCase().enableLike();12
//QBC除了添加自己的条件,最后将例子对象e也当成条件添加进来13
//QBC可以添加给特定值的条件,也可添加给了一定范围的条件14
Criteria c = session.createCriteria(Topic.class)15
.add(Restrictions.gt("id", 2))16
.add(Restrictions.lt("id", 8))17
.add(e)18
;19
//from Topic t where t.id>2 and t.id<8 and t.title like 'T_'20
21
22
for(Object o : c.list()) {23
Topic t = (Topic)o;24
System.out.println(t.getId() + "-" + t.getTitle());25
}26
session.getTransaction().commit();27
session.close();28
29
}以上几种方法,其中QBC、QBE更加符合面向对象编程(仅此而已)。
Hibernate查询_HQL_EJBQL_QBC_QBE的更多相关文章
- Hibernate查询
HIbernate查询 使用get方法 使用get方法通过持久类名和ID号查找一个对象Stu instance = (Stu) getsession() .get("com.lovo.po. ...
- Hibernate 查询MatchMode的四种模式
Hibernate 查询MatchMode的四种模式 MatchMode.START:字符串在最前面的位置.相当于"like 'key%'" MatchMode.END:字符串在最 ...
- hibernate查询方式
hibernate查询方式:1.本地SQL查询 2.HQL查询 3.QBC查询 HQL查询:是面向对象的查询语言,是使用最广的一种查询方法 QBC查询:Query by Criteria是一套接口来实 ...
- Hibernate查询出现java.lang.IllegalArgumentException异常解决方法
Hibernate查询出现java.lang.IllegalArgumentException. 异常信息如下:java.lang.IllegalArgumentException at ...
- (十)Hibernate 查询方式
所有项目导入对应的hibernate的jar包.mysql的jar包和添加每次都需要用到的HibernateUtil.java 第一节:Hibernate 查询方式简介 1,导航对象图查询方式: 2 ...
- 六种方式实现hibernate查询
最近在学习Hibernate的基本内容,刚好在项目中有用到,基本上都是用到哪就学哪. 今天看看六种方式实现hibernate查询......... 分别是HQL查询,对象化查询Criteria方法,动 ...
- 记录使用Hibernate查询bean中字段和数据库列类型不匹配问题
今天在工程中遇到Hibernate查询的时候,bean中的字段和数据库中的字段不符合(bean中有pageTime字段,但是数据库中没有此列)报错问题. 具体问题环境: 在auto_off表中,off ...
- hibernate 查询、二级缓存、连接池
hibernate 查询.二级缓存.连接池 查询: 1) 主键查询 Dept dept = (Dept) session.get(Dept.class, 12); Dept dept = (Dep ...
- Hibernate查询、连接池、二级缓存
Hibernate第三天: 1. 对象状态 2. session缓存 3. lazy懒加载 4. 映射 一对一对映射 组件/继承映射 目标: 一.hibernate查询 二.hibernate对连接池 ...
随机推荐
- Python expandtabs() 方法
描述 expandtabs() 方法把字符串中的 tab 符号('\t')转为空格,tab 符号('\t')默认的空格数是 8. 从头开始数,数到第一个\t正好为8个空格,不足则补空格,如果还有\t, ...
- PixelLink
简介 论文题目:PixelLink: Detecting Scene Text via Instance Segmentation 论文地址:https://arxiv.org/abs/1801.01 ...
- 江南白衣 Java性能优化PPT
会后江南白衣花费数日整理PPT,到1.4版本共66页,内容翔实且旁征博引,不断校正且力求做到极致的匠艺精神值得尊敬! 技术大牛飒然Hang如是说到: “技术大神中,除了陈皓就是白衣了,四十岁还能钻研. ...
- 使用BeanUtils设置属性转换String到Date类型
主要是用来设置非空对象的属性. 1 使用BeanUtils进行设置属性时,对于String,int可以自动转换.比如下面的例子 常用方法 1)BeanUtils.setProperty //// ...
- Linux下的tree命令 --Linux下文件夹树查看
Linux下的tree命令 --Linux下文件夹树查看 有时我们须要生成文件夹树结构,能够使用的有ls -R,可是实际效果并不好 这时须要用到tree命令,可是大部分Linux系统是默认不安装该命令 ...
- 使用Xcode 5创建Cocoa Touch Static Library(静态库)
转自:http://blog.csdn.net/jymn_chen/article/details/21036035 首先科普一下静态库的相关知识: 程序编译一般需经预处理.编译.汇编和链接几个步骤. ...
- gnome3增加自定义程序快捷方式
gnome3增加自定义程序快捷方式 1. 安装alacarte 在命令行输入下列命令安装alacarte程序 yum -y install alacarte 安装完毕后,在命令行输入下 ...
- eclipse 项目中的java文件没有在WEB-INF目录下的classes中 生成相对应的编译后的类
1.首先确定project->Build Automatically是否勾选上: 2.执行完第一步之后测试一下看是否能编译,如果还是不能,则进行手动编译: 3,进入clean对话框,选择Cle ...
- 重装Ubuntu系统
1.安装JDK参考:http://weixiaolu.iteye.com/blog/1401786jdk-6u31-linux-i586.bin莫名奇妙的安装失败.所以下载了jdk-7u45-linu ...
- SQL Server FOR XML PATH 语句的应用---列转行
经常在论坛看到高手使用了 for xml path,由于是搜索一下,记录了详细的使用方法.在SQL Server中利用 FOR XML PATH 语句能够把查询的数据生成XML数据,下面是它的一些应用 ...