【Hibernate】06 查询API
三种查询API
- Query
不需要SQL语句,但是要HQL语句
- Criteria
不需要任何QL语句,直接调用即可
- SQLQuery
调用底层的SQL语句实现
什么是HQL?
Hibernate Query Language
- 和SQL语言相似
HQL & SQL 的区别?
- SQL 操作数据表和表的字段
- HQL操作实体类的实例和实例的属性
使用Query查询表的所有信息
- 使用Query入参必须要写HQL语句
- 建议写类名的时候使用完全限定名,和数据表也好区分开来
- List集合引用可以使用泛型
@Test
public void userQueryInstanceToSelectAll(){
SessionFactory sessionFactory = null;
Session session = null;
Transaction transaction = null; try{
sessionFactory = HibernateUtil.getSessionFactory();
session = sessionFactory.openSession();
transaction = session.beginTransaction(); // 获取查询结果
Query query = session.createQuery("from cn.dai.entity.User"); // 结果实例调用list方法返回一个可以操作的List容器实例
List<User> list = query.list(); // 遍历查看
for (User user:list) System.out.println(user); transaction.commit();
} catch (Exception exception){
transaction.rollback(); // 发生异常,回滚事务
exception.printStackTrace(); // 打印异常信息
} finally {
if (session != null) session.close();
if (sessionFactory != null )sessionFactory.close(); // 然后释放工厂对象
}
}
使用Criteria查询所有信息
@Test
public void userQueryInstanceToSelectAll(){
SessionFactory sessionFactory = null;
Session session = null;
Transaction transaction = null; try{
sessionFactory = HibernateUtil.getSessionFactory();
session = sessionFactory.openSession();
transaction = session.beginTransaction(); // 调用创建,并且注入实体类的字节实例
Criteria criteria = session.createCriteria(User.class); // 调用List即查询所有
List<User> list = criteria.list(); // 遍历查看
for (User user:list) System.out.println(user); transaction.commit();
} catch (Exception exception){
transaction.rollback(); // 发生异常,回滚事务
exception.printStackTrace(); // 打印异常信息
} finally {
if (session != null) session.close();
if (sessionFactory != null )sessionFactory.close(); // 然后释放工厂对象
}
}
注意官方的注解标识为已过时,说明不推荐使用此实例去查询了

查看所有的重载方法,全部标记过时

使用SQLQuery实现查询所有
@Test
public void userQueryInstanceToSelectAll(){
SessionFactory sessionFactory = null;
Session session = null;
Transaction transaction = null; try{
sessionFactory = HibernateUtil.getSessionFactory();
session = sessionFactory.openSession();
transaction = session.beginTransaction(); NativeQuery sqlQuery = session.createSQLQuery("SELECT * FROM user"); // 容器的元素是 Object类型的数组
List<Object[]> list = sqlQuery.list(); for (Object[] objects:list){
System.out.println(Arrays.toString(objects));
} transaction.commit();
} catch (Exception exception){
transaction.rollback(); // 发生异常,回滚事务
exception.printStackTrace(); // 打印异常信息
} finally {
if (session != null) session.close();
if (sessionFactory != null )sessionFactory.close(); // 然后释放工厂对象
}
}
我们需要先添加这个实体类型,才能返回类型结果
NativeQuery sqlQuery = session.createSQLQuery("SELECT * FROM user");
sqlQuery.addEntity(User.class);
// 容器的元素是 Object类型的数组
List<User> list = sqlQuery.list();
for (User user:list){
System.out.println(user);
}
【Hibernate】06 查询API的更多相关文章
- 快递查询API接口(trackingmore)
快递查询接口 目前提供快递查询的接口平台有: Trackingmore 快递100 快递网 不同接口的区别: (1)Trackingmore支持380家快递公司,其中有55家为国内的快递,其余325家 ...
- 快递查询API接口对接方法
各类接口 快递查询API有即时查询和订阅查询两种,即时是请求即返回数据,订阅则是订阅快递单号到接口,有物流轨迹更新则全量返回数据.目前常用的有快递鸟.快递100.快递网等. 快递鸟即时API可以查询3 ...
- hibernate系列笔记(2)---Hibernate的核心API
Hibernate的核心API 一般我们通过hibernate进行操作的时候,都会遵循下面的流程,那么接下来我对每一个步骤进行讲解: 1 public void testInsert() { 2 // ...
- hibernate框架(2)---Hibernate的核心API
Hibernate的核心API 一般我们通过hibernate进行操作的时候,都会遵循下面的流程,那么接下来我对每一个步骤进行讲解: 1 public void testInsert() { 2 // ...
- 如何用车辆历史违章查询API接口进行快速开发
最近公司项目有一个车辆的历史违章查询显示的小功能,想着如果用现成的API就可以大大提高开发效率,所以在网上的API商店搜索了一番,发现了 APISpace,它里面的车辆历史违章查询API非常符合我的开 ...
- 如何用车辆违章查询API接口进行快速开发
最近公司项目有一个车辆违章查询显示的小功能,想着如果用现成的API就可以大大提高开发效率,所以在网上的API商店搜索了一番,发现了 APISpace,它里面的车辆违章查询API非常符合我的开发需求. ...
- hibernate模糊查询
hibernate模糊查询-Restrictions.ilike & Expression.like Criteria criteria = session.createCriteria(Ta ...
- Hibernate的查询方式总结
Hibernate的查询方式大体有三种,分别是HQL QBC和SQL三种.在网上查阅一一些资料,做了一个简单的总结. 1. SQL sql 是面向数据库表查询,from 后面跟的是表名,where 后 ...
- atitit。 hb Hibernate sql 查询使用
atitit. hb Hibernate sql 查询使用 #----------返回list<map>法..这个推荐使用. q.setResultTransformer(Tr ...
- Hibernate高级查询QBC条件设置——Restrictions用法 引自:http://www.cnblogs.com/evon168/archive/2010/10/29/1863059.html
方法说明 方法 说明 Restrictions.eq = Restrictions.allEq 利用Map来进行多个等于的限制 Restrictions.gt > Restrictions.ge ...
随机推荐
- Wgpu图文详解(01)窗口与基本渲染
写在前面 如果对Rust与Wgpu比较关注的同学可能在网络上搜到过@sotrh国外大佬编写的<Learn Wgpu>,以及国内大佬@jinleili的优秀翻译作品<学习 Wgpu&g ...
- Java中File类和I/O
目录 File 类 File 构造方法 输入输出(I/O) 字节流与字符流 输入流与输出流 输入输出字节流 构造方法 方法 InputStream 基本方法 public int read() thr ...
- react表单处理 非受控组件
没有和state数据源进行关联的表单项,而是借助ref,使用元素DOM方式获取表单元素值 使用步骤 调用 React.createRef() 方法创建ref对象 将创建好的 ref 对象添加到文本框中 ...
- webpack配置css预处理
webpack默认只支持js的打包,不支持其它类型,为了让它支持样式的打包就需要加载一些loader 打包css文件 在webpack中配置对应的loader 在入口js文件中通过import导入样式 ...
- 关于 ulimit 的两个天坑
稍微有点 Linux 经验的人一定会遇到过 "Too many open files" 错误,这个错误本质是 ulimit 设置不合理导致的.关于 ulimit 设置,有哪些需要注 ...
- Go变量作用域精讲及代码实战
关注作者,复旦AI博士,分享AI领域与云服务领域全维度开发技术.拥有10+年互联网服务架构.AI产品研发经验.团队管理经验,同济本复旦硕博,复旦机器人智能实验室成员,国家级大学生赛事评审专家,发表多篇 ...
- Elasticsearch之Nested Query nestedQuery查询数组
es是通过符合条件的json记录找出来,本身并不是将数据中的记录filter过滤.es nestedQuery不是过滤的结果,是匹配的这条es记录,所以数组中的其他的记录也会查询出来1.方法1:可以在 ...
- QQ、支付宝、微信收款码三合一
Tips:当你看到这个提示的时候,说明当前的文章是由原emlog博客系统搬迁至此的,文章发布时间已过于久远,编排和内容不一定完整,还请谅解` QQ.支付宝.微信收款码三合一 日期:2018-8-24 ...
- Vulnhub Fall Walkthrough
Recon 二层本地扫描,发现目标靶机. ┌──(kali㉿kali)-[~] └─$ sudo netdiscover -r 192.168.80.0/24 Currently scanning: ...
- 【题解】CatOJ C0458C 滑动窗口定期重构
标题 trick 的名字我也不知道是什么,就这样吧. 首先有显然的 dp 式子:\(f(i)=\min \{f(j) \times \max\{a_{j+1},\dots,a_i\}\}\).考虑怎么 ...