【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 ...
随机推荐
- 关于 CSDN 的恶臭嘴脸
我有段时间确实希望通过 CSDN 增加我文章的阅读量.但是我怎么使用 CSDN,我想要的大概也就 cnblogs 相对符合预期,CSDN 真是垃圾. 为了钱真是什么都不要了,让我们这种没有自主经济来源 ...
- mysql 8.0 客户端
1.mysql 8.0 command line client 2.mysql workbench
- Yapi部署到kubernetes(k8s)--Azure AKS
背景 找来找去都没找到简单方便的部署yapi到k8s的教程,就自己写了个: 本教程部署的版本是: 1.10.2 部署步骤 克隆仓库: git clone https://github.com/gebi ...
- float与byte[]互相转换
今天想利用socket发送数据,可是float类型该怎么发送呢?我的想法是先转换成byte[]型,接收之后再转换回来. float类型是4个字节,而byte是1个字节,所以需要转换成为byte[]的类 ...
- 【ClickHouse】4:clickhouse基本操作二 建库建表导数据
背景介绍: 有三台CentOS7服务器安装了ClickHouse HostName IP 安装程序 程序端口 centf8118.sharding1.db 192.168.81.18 clickhou ...
- 【Zabbix】Zabbix5.0安装部署问题汇总
报错信息:No package 'oniguruma' found 解决方法:https://www.limstash.com/articles/202003/1563 报错信息: PHP bcmat ...
- GUI测试还能这么玩(Page Code Gen + Data Gen + Headless)
标签(空格分隔): GUI测试还能这么玩(Page Code Gen + Data Gen + Headless) 页面对象自动生成 在前面的文章中,我已经介绍过页面对象(Page Object)模型 ...
- 基于JQ使用原生js构造一个自动回复随机消息的机器人
某些业务会使用到页面里存在一个机器人,类似于假客服一样,可以回复游客的问题. 那么如何自己写一个自动回复消息的机器人呢? 源码献上 /** * 基于jq的自动对话机器人 * @param {Objec ...
- Serverless无服务应用架构纵横谈2:边缘计算激战正酣
Serverless无服务应用架构纵横谈2 前言 6年前,我写了一篇<Serverless无服务应用架构纵横谈>. 文中说到无论是公有云FaaS还是私有云FaaS,都不是云计算的未来. 因 ...
- PowerBuilder编程新思维10.5:外传2(PowerPlume下一代开发解决方案)
万里归来年愈少 PB编程新思维10.5:外传2(PowerPlume下一代解决方案) 前言 今天我们就来盘点一下,PB下一代开发的所有技术可能性.所谓下一代开发技术,就是指脱离或半脱离PBVM的应用开 ...