三种查询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的更多相关文章

  1. 快递查询API接口(trackingmore)

    快递查询接口 目前提供快递查询的接口平台有: Trackingmore 快递100 快递网 不同接口的区别: (1)Trackingmore支持380家快递公司,其中有55家为国内的快递,其余325家 ...

  2. 快递查询API接口对接方法

    各类接口 快递查询API有即时查询和订阅查询两种,即时是请求即返回数据,订阅则是订阅快递单号到接口,有物流轨迹更新则全量返回数据.目前常用的有快递鸟.快递100.快递网等. 快递鸟即时API可以查询3 ...

  3. hibernate系列笔记(2)---Hibernate的核心API

    Hibernate的核心API 一般我们通过hibernate进行操作的时候,都会遵循下面的流程,那么接下来我对每一个步骤进行讲解: 1 public void testInsert() { 2 // ...

  4. hibernate框架(2)---Hibernate的核心API

    Hibernate的核心API 一般我们通过hibernate进行操作的时候,都会遵循下面的流程,那么接下来我对每一个步骤进行讲解: 1 public void testInsert() { 2 // ...

  5. 如何用车辆历史违章查询API接口进行快速开发

    最近公司项目有一个车辆的历史违章查询显示的小功能,想着如果用现成的API就可以大大提高开发效率,所以在网上的API商店搜索了一番,发现了 APISpace,它里面的车辆历史违章查询API非常符合我的开 ...

  6. 如何用车辆违章查询API接口进行快速开发

    最近公司项目有一个车辆违章查询显示的小功能,想着如果用现成的API就可以大大提高开发效率,所以在网上的API商店搜索了一番,发现了 APISpace,它里面的车辆违章查询API非常符合我的开发需求. ...

  7. hibernate模糊查询

    hibernate模糊查询-Restrictions.ilike & Expression.like Criteria criteria = session.createCriteria(Ta ...

  8. Hibernate的查询方式总结

    Hibernate的查询方式大体有三种,分别是HQL QBC和SQL三种.在网上查阅一一些资料,做了一个简单的总结. 1. SQL sql 是面向数据库表查询,from 后面跟的是表名,where 后 ...

  9. atitit。 hb Hibernate sql 查询使用

    atitit. hb  Hibernate sql 查询使用 #----------返回list<map>法..这个推荐使用.      q.setResultTransformer(Tr ...

  10. Hibernate高级查询QBC条件设置——Restrictions用法 引自:http://www.cnblogs.com/evon168/archive/2010/10/29/1863059.html

    方法说明 方法 说明 Restrictions.eq = Restrictions.allEq 利用Map来进行多个等于的限制 Restrictions.gt > Restrictions.ge ...

随机推荐

  1. 滚动条小实验 BOM时间操作

      <div class="top">我是吸顶div</div>     <p class="back">返回顶部</ ...

  2. Invalid revision: 3.18.1-g262b901-dirty CMake Error: CMake was unable to find a build program corresponding to "Ninja".

    一次在GitHub上找到的项目,本想编译运行下,但报如下的问题 错误一 Invalid revision: 3.18.1-g262b901-dirty 解决办法: 这是因为版本不对应,可在local. ...

  3. SDL3 入门(2):第一个窗口

    在上一篇文章中我们已经利用 SDL 的日志接口实现了简单的字符串输出,实际上是解决了开发环境搭建问题,接下来我们将在已有代码的基础上继续开发,实现第一个窗口的创建和背景色绘制. 初始化 首先设置日志输 ...

  4. Java泛型对象在http请求和响应对象中的封装

    Java泛型对象在http请求和响应对象中的封装 public class MySystemBaseResVo<T> { //注意:类的后面需要带上<T>,否则数据无法封装 p ...

  5. java和javac编译和运行记事本编写的代码

    演示代码如下: package com.springboot.demo; public class Hello { public static void main(String[] args) { S ...

  6. apollo配置中心从数据库中查询所有的配置及项目

    apollo配置中心从数据库中查询所有的配置及项目 需求背景:如果需要从Apollo查询某个配置项做批量的更新替换,如果一个一个找不合适且容易遗漏,需要从底层数据库表中模糊查询来实现. 1.查看apo ...

  7. python-pytest:多进程、多线程执行用例

    准备工作: Python Package pytest-parallel-0.0.10: windows版本只能是0.0.10 pytest-xdist 这两个包都是基于pytest基础上,实现多进程 ...

  8. ubuntu 18.0.4.6部署k8s 1.24

    一.系统安装 https://ubuntu.com/download/server 二.安装containerd sudo su - apt-get remove docker \ docker-cl ...

  9. Nginx+Fail2ban 实现同一ip在一分钟内连续三次请求同一接口并响应成功时进行封禁

    1. 安装 Fail2Ban 和 Nginx 如果尚未安装 Fail2Ban 和 Nginx,可以使用以下命令进行安装: # CentOS默认的仓库中可能不包含Nginx,所以需要添加EPEL(Ext ...

  10. opengrok源代码在线阅读平台搭建及字体修改

    服务搭建 我所编写的docker-compose.yml如下,成功运行后将源码目录移动至 /data/opengrok/src ,重启容器使得opengrok快速更新索引 services: open ...