hibrenate之Query,Criteria,SQLQuery

简介: hibrenate之Query,Criteria,SQLQuery

1.Query对象

通过写hql语句来对数据库进行crud操作,hql语句和普通sql语句很相似,区别在于hql语句操作的对象是实体类和属性,而sql操作的对象是数据库的表和字段。

演示例子:

image.png

结果:image.png

2.Criteria对象

使用这个对象查询操作,但是使用这个对象时候,不需要写语句,直接调用方法实现

实现过程

(1)创建criteria对象

(2)调用对象里面的方法得到结果

//使用criteria对象
  @Test
  public void testCriteria() {
    SessionFactory sessionFactory = null;
    Session session = null;
    Transaction tx = null;
    try {
      sessionFactory = HibernateUtils.getSessionFactory();
      session = sessionFactory.openSession();
      //开启事务
      tx = session.beginTransaction();
      //1 创建criteria对象
      //方法里面参数是实体类class
      Criteria criteria = session.createCriteria(User.class);
      /**
         * 作用:or()用法
         * 说明:通过or()返回的是实体对象集合
         *      add(Criterion criterion)用来添加查询条件
         *      Restrictions通过内置的静态方法,可以创建criterion
         */
      //2 调用方法得到结果
      List<User> list = criteria.add(Restrictions.or(Restrictions.eq("username", "小明"),
                    Restrictions.eq("username", "小红") ))
                   .list();
      for (User user : list) {
        System.out.println(user);
      }
      //提交事务
      tx.commit();
    }catch(Exception e) {
      e.printStackTrace();
      //回滚事务
      tx.rollback();
    }finally {
      //关闭操作
      session.close();
      sessionFactory.close();
    }
  }

image.png

常用的Restrictions方法:

    Restrictions.eq 等于
  Restrictions.allEq 使用Map,使用key/value进行多个等于的比对
  Restrictions.gt 大于 >
  Restrictions.ge 大于等于 >=
  Restrictions.lt 小于 <
  Restrictions.le 小于等于 <=
  Restrictions.between 对应SQL的BETWEEN子句
  Restrictions.like 对应SQL的LIKE子句
  Restrictions.in 对应SQL的in子句
  Restrictions.and and关系
  Restrictions.or or关系

3.SQLQuery对象

调用底层sql实现

//使用SQLQuery对象
  @Test
  public void testSQLQuery() {
    SessionFactory sessionFactory = null;
    Session session = null;
    Transaction tx = null;
    try {
      sessionFactory = HibernateUtils.getSessionFactory();
      session = sessionFactory.openSession();
      //开启事务
      tx = session.beginTransaction();
      //1 创建对象
      //参数普通sql语句
      SQLQuery sqlQuery = session.createSQLQuery("select * from t_user");
      //返回的list中每部分是对象形式
      sqlQuery.addEntity(User.class);
      //调用sqlQuery里面的方法
      List<User> list = sqlQuery.list();
      for (User user : list) {
        System.out.println(user);
      }
      //提交事务
      tx.commit();
    }catch(Exception e) {
      e.printStackTrace();
      //回滚事务
      tx.rollback();
    }finally {
      //关闭操作
      session.close();
      sessionFactory.close();
    }
  }

结果:201804061503019.png

相关文章
|
安全 IDE JavaScript
sonarqube安装并配置CI/CD
sonarqube安装并配置CI/CD
|
10月前
|
存储 安全 Android开发
探索Android与iOS的隐私保护机制
在数字化时代,移动设备已成为我们生活的一部分,而隐私安全是用户最为关注的问题之一。本文将深入探讨Android和iOS两大主流操作系统在隐私保护方面的策略和实现方式,分析它们各自的优势和不足,以及如何更好地保护用户的隐私。
|
11月前
|
Java
Java中抽象类和接口有什么区别?
本文阐述了Java中抽象类和接口的区别,包括类型扩展、方法/属性访问控制符、方法实现、使用目的等方面的不同,并提供了抽象类和接口的使用示例,以及Java中其他类型的类(普通类、内部类等)的简介。
1569 0
Java中抽象类和接口有什么区别?
|
存储 PyTorch 算法框架/工具
PyTorch 2.2 中文官方教程(十三)(2)
PyTorch 2.2 中文官方教程(十三)
285 1
|
前端开发 JavaScript 安全
|
移动开发 安全 关系型数据库
Weblogic任意文件上传漏洞(CVE-2018-2894)复现
Weblogic任意文件上传漏洞(CVE-2018-2894)复现 漏洞背景 WebLogic管理端未授权的两个页面存在任意上传getshell漏洞,可直接获取权限。
3795 0
|
机器学习/深度学习 算法 Linux
时间序列异常点检测算法(Smoothed z-score algorithm)
时间序列异常点检测算法(Smoothed z-score algorithm)
|
前端开发
前端知识案例103-javascript基础语法-throw抛出日常
前端知识案例103-javascript基础语法-throw抛出日常
89 0
前端知识案例103-javascript基础语法-throw抛出日常
R语言-交互式界面Rcmdr-安装方法
R语言-交互式界面Rcmdr-安装方法
353 0
R语言-交互式界面Rcmdr-安装方法
带你读《2022技术人的百宝黑皮书》——AdaInt: Learning Adaptive Intervals for 3D Lookup Tables on Real-time Image Enhancement(13)
带你读《2022技术人的百宝黑皮书》——AdaInt: Learning Adaptive Intervals for 3D Lookup Tables on Real-time Image Enhancement(13)
188 0