Hibernate查询所有数据的操作
2024-08-27 16:34:20
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();
}
}
最新文章
- Hawk 4.3 转换器
- COM 组件基础——GUID 和 接口
- java:关于文件下载
- 20145334实验三《敏捷开发与XP实践》
- 都是以父元素的width为参照物的
- bzoj 2743 树状数组离线查询
- (剑指Offer)面试题17:合并两个排序的链表
- 解决JSP页面图片缓存问题
- cisco通过控制口或者通过远程配置交换机
- ubuntu下安装Vmare Workstation,并安装mac补丁
- eclipse 插件 最新 eclipse4.x 插件
- 错误记录--更改tomcat端口号方法,Several ports (8005, 8080, 8009)
- mysql错误集锦
- 【Django】优化小技巧之清除过期session
- mybatis多参数传递,延迟加载,缓存,注解开发
- C#解析json和xml数据
- php手撸轻量级开发(二)框架加载
- p3c安装使用 编码规范扫描 阿里巴巴出品,挺好用的
- 分库分表利器——sharding-sphere
- C#.NET常见问题(FAQ)-interface接口如何理解