Hibernate查询所有数据的操作
Hibernate查询所有数据的操作方式有三种。
1、Query
(1)使用该方法查询时,不需要编写sql语句,但是需要编写hql(Hibernate Query Language)语句,该语句是Hibernate查询语言。
(2)hql语言操作的是实体类和实体类的属性,比如查询所有数据的hql语句为:from 实体类名称。
(3)使用方法:首先创建Query对象,然后调用该对象的List方法返回数据集合。
@Test
public void test11(){
SessionFactory sessionFactory = null;
Session session = null;
Transaction tx = null;
try {
sessionFactory = HibernateUtils.getFactory();
session = sessionFactory.getCurrentSession();
tx = session.beginTransaction();
/**
* 使用session对象的createQuery方法创建Query对象。
* 参数为hql语句
* 使用QUERY对象的list方法获取数据集合
*/
Query query =session.createQuery("from UserEntity");
List<UserEntity> list = query.list();
//使用forEach遍历集合
for (UserEntity userEntity : list) {
System.out.println(userEntity);
}
tx.commit();
} catch (Exception e) {
tx.rollback();
}finally{
sessionFactory.close();
}
}
2、criteria
(1)使用该对象不需要写hql语句,只需要指定实体类。
(2)使用方法:首先创建criteria对象,然后调用list返回数据集合。
@Test
public void test12(){
SessionFactory sessionFactory = null;
Session session = null;
Transaction tx = null;
try {
sessionFactory = HibernateUtils.getFactory();
session = sessionFactory.getCurrentSession();
tx = session.beginTransaction();
/**
* 使用session对象的createCriteria方法创建criteria对象。
* 使用criteria对象的list方法获取数据集合
*/
Criteria criteria =session.createCriteria(UserEntity.class);
List<UserEntity> list = criteria.list();
//使用forEach遍历集合
for (UserEntity userEntity : list) {
System.out.println(userEntity);
}
tx.commit();
} catch (Exception e) {
tx.rollback();
}finally{
sessionFactory.close();
}
}
3、SQLQuery
(1)使用该对象,需要写底层的SQL语句。
(2)实现方法:首先创建该对象,然后调用list。
@Test
public void test13(){
SessionFactory sessionFactory = null;
Session session = null;
Transaction tx = null;
try {
sessionFactory = HibernateUtils.getFactory();
session = sessionFactory.getCurrentSession();
tx = session.beginTransaction();
/**
* 使用session对象的createSQLQuery方法创建SQLQuery对象。
* 使用qQLQuery对象的list方法获取数据集合,集合里面不是对象,而是数组
*/
SQLQuery qQLQuery =session.createSQLQuery("select * from t_user");
List<Object[]> list = qQLQuery.list();
//使用forEach遍历集合
for (Object[] objects : list) {
System.out.println(Arrays.toString(objects));
}
tx.commit();
} catch (Exception e) {
tx.rollback();
}finally{
sessionFactory.close();
}
}
(3)数组转换成对象
@Test
public void test13(){
SessionFactory sessionFactory = null;
Session session = null;
Transaction tx = null;
try {
sessionFactory = HibernateUtils.getFactory();
session = sessionFactory.getCurrentSession();
tx = session.beginTransaction();
/**
* 使用session对象的createSQLQuery方法创建SQLQuery对象。
* 使用qQLQuery对象的list方法获取数据集合,集合里面不是对象,而是数组
*/
SQLQuery qQLQuery =session.createSQLQuery("select * from t_user");
//将数组装载进实体中
qQLQuery.addEntity(UserEntity.class);
List<UserEntity > list = qQLQuery.list();
//使用forEach遍历集合
for (UserEntity userEntity : list) {
System.out.println(userEntity);
}
tx.commit();
} catch (Exception e) {
tx.rollback();
}finally{
sessionFactory.close();
}
}
Hibernate查询所有数据的操作的更多相关文章
- hibernate 查询全部数据的三种方法
1.Query对象 使用Query对象需要写hql语句,使用hql语句操作的是实体类和属性. 用于查询全部的hql语句:from 实体类名称 例:String hql = "from U ...
- 【学习笔记】Hibernate HQL连接查询和数据批处理 (Y2-1-7)
HQL连接查询 和SQL查询一样 hql也支持各种链接查询 如内连接 外连接 具体如下 左外连接 left (outer) join 迫切左外连接 left (outer) join fetch 右外 ...
- 在MyBatis中查询数据、涉及多参数的数据访问操作、插入数据时获取数据自增长的id、关联表查询操作、动态SQL、关于配置MyBatis映射没有代码提示的解决方案
1. 单元测试 在单元测试中,每个测试方法都需要执行相同的前置代码和后置代码,则可以自定义2个方法,分别在这2个方法中执行前置代码和后置代码,并为这2个方法添加@Before和@After注解,然后, ...
- MYSQL初级学习笔记四:查询数据的操作DQL(SELECT基本形式)(26-35)
知识点六:查询数据的操作DQL(SELECT基本形式)(26-35) CREATE DATABASE IF NOT EXISTS cms DEFAULT CHARACTER SET utf8; USE ...
- TreeView和ListView数据库查询数据联动操作
好久不用了,重新整理下放这里以备需要使用,功能见图 数据库表结构 定义TreeView addObject中data存储的记录集 type PNode = ^TNode; TNode = record ...
- 使用 DML语句,对 “锦图网” 数据进行操作,连接查询(内连接,左外连接,右外连接,全连接)
查看本章节 查看作业目录 需求说明: 对 "锦图网" 数据进行操作: 统计每一种线路类型的线路数量.最高线路价格.最低线路价格和平均线路价格,要求按照线路数量和平均线路价格升序显示 ...
- Hibernate查询
HIbernate查询 使用get方法 使用get方法通过持久类名和ID号查找一个对象Stu instance = (Stu) getsession() .get("com.lovo.po. ...
- hibernate 入门([数据访问中间件] 开源框架)
1.内容: hibernate 也是一个经典的[数据访问中间件] 开源框架. 2.hibernate核心组件 SessionFactory[整个数据的操作]重量级组件 ...
- Hibernate查询、连接池、二级缓存
Hibernate第三天: 1. 对象状态 2. session缓存 3. lazy懒加载 4. 映射 一对一对映射 组件/继承映射 目标: 一.hibernate查询 二.hibernate对连接池 ...
随机推荐
- vmware虚拟机监控数据
在vsphere产品中内建一个监控所有虚机包括主机资源的插件,叫做vcenter servcie status,这个插件的主要功能是记录当前虚拟机资源的cpu.硬盘.内存和网络等相关信息.通过它可以查 ...
- bitnami openedx安装的各种坑及痛苦经历
那天在华为网站上学习,看见他们的培训系统挺不错的,看到下边写着openedx,百度了一下是个开源软件,挺流行的,在这之前对于openedx没有任何了解,然后开始了一周多的痛苦经历. 首先在opened ...
- 【转】基于Redis实现延时队列服务
背景 在业务发展过程中,会出现一些需要延时处理的场景,比如: a.订单下单之后超过30分钟用户未支付,需要取消订单b.订单一些评论,如果48h用户未对商家评论,系统会自动产生一条默认评论c.点我达订单 ...
- Mysql内置功能《五》 函数
一 函数 MySQL中提供了许多内置函数,例如: 一.数学函数 ROUND(x,y) 返回参数x的四舍五入的有y位小数的值 RAND() 返回0到1内的随机值,可以通过提供一个参数(种子)使RAND( ...
- python 和pycharm 安装
昨天 我重新装了一个Windows 7 系统 结果很多东西丢了 没有做好备份 其中就有python 和pycharm 今天花了一天时间装 想想也是够了 坑真多 整理一下吧 python 网址:http ...
- Access MongoDB Data with Entity Framework 6
This article shows how to access MongoDB data using an Entity Framework code-first approach. Entity ...
- ArchLinux下Ecplise软件报错
如果你的Java出现了一下问题:An error has occurred. See error log for more details.java.lang.NullPointerException ...
- 极光大数据告诉你,程序员们都在"愁"些啥?
有言道:隔行如隔山.面对不甚熟悉的人群和岗位,我们很容易在固有印象的干扰下,作出一些偏离实际的解读.比如在很多外行人眼中,程序员群体的固有形象是性格木讷,生活方式通常也比较宅.他们最大的爱好就是玩游戏 ...
- heap与stack的区别
java 的内存分为两类,一类是栈内存,一类是堆内存.栈内存是指程序进入一个方法时,会为这个方法单独分配一块私属存储空间,用于存储这个方法内部的局部变量,当这个方法结束时,分配给这个方法的栈会释放,这 ...
- ExclusiveTouch
Setting this property to true causes the receiver to block the delivery of touch events to other vie ...