栏目分类:
子分类:
返回
文库吧用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
文库吧 > IT > 软件开发 > Web开发 > JavaScript

Hibernate框架技术视频课程

JavaScript 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Hibernate框架技术视频课程


一、查询操作1. Hibernate支持多种查询方式2.分类

主键查询、HQL查询、Criteria查询、原生SQL查询、命名查询、JDBC操作

导航查询(根据关联关系自动查询)

二、主键查询1. get方法

Session的get()

2. load方法

Session的load()

三、HQL查询1. 简介1.1 概念

HQL:Hibernate Query Language,Hibernate查询语言

是一种面向对象的查询语句,其中没有表和列的概念,只有类、对象和属性的概念

1.2 优点
  • 不需要编写复杂的SQL语句,而是针对实体类和属性进行查询

  • 查询结果是直接返回的List对象集合,不需要再次封装

  • 独立于数据库,根据dialect自动生成对应数据库的SQL语句

2. 基本用法2.1 语法

[select/update/delete 属性名]
from 类名
[where]
[group by]
[having]
[order by]

类似于sql,对应关系

SQLHQL
表名类名
列名属性名
select id,name,pwd,age from t_userselect id,username,password,age from User
2.2 使用HQL需要四步
  1. 获取Session

  2. 编写HQL语句

  3. 创建Query对象

    Query接口是HQL查询接口,提供了各种查询功能

  4. 执行查询,得到结果

Session session = HibernateUtil.getSession();// String hql="from User"; //实体类名,类名区分大小写// String hql = "from day01.User"; // 也可写成类的全名// String hql = "select * from User"; // 报错:此处不能使用*星号String hql = "select u from User u"; // 设置别名Query query = session.createQuery(hql);List list = query.list();System.out.println(list);HibernateUtil.close();
3. 实体查询
  • 实体查询1:查询所有用户

  • 实体查询2:带条件

  • 实体查询3:单个实体

4. 投影查询

投影查询就是只查询类的一个或多个属性,并不获取对象的全部属性,也称为属性查询

有如下三种形式:

  • 查询单个属性,将每条查询结果封装成Object对象

  • 查询多个属性

    • 将每条查询结果封装成Object数组

    • 将每条查询结果封装成Map集合(了解)

  • 将每条查询结果通过构造函数封装成对象

5. 参数绑定5.1 ?参数占位符

使用?作为占位符,可以先设定查询参数,然后通过Query的setXxx()方法设置参数值

下标从0开始,与PreparedStatement有所不同(从1开始)

5.2 命名参数

使用:name标识一个名为name的查询参数,然后根据此参数名设置参数值

5.3 bean参数

将参数封装为一个bean,然后通过Query的setProperties(Object bean)方法设置参数值

6. 分页和聚合函数6.1 分页

Query对象提供了简便的分页方法:

  • setFirstResult(int firstResult) 设置从第几条开始

  • setMaxResults(int maxResults) 设置读取最大记录数据

Hibernate会根据底层数据库自动生成相应的分页语句

6.2 聚合函数

常用聚合函数:count()、max()、min()、avg()、sum()

子查询

分组查询:group by .... having

四、Criteria查询1. 简介

Criteria查询是Hibernate提供的一种完全面向对象的查询,它用面向对象的方式将构造查询的过程做了封装,又称为对象查询

详见文档 第15章 条件查询 Criteria

2. 基本用法

Restriction类提供了许多静态方法,用来限定查询条件

五、原生SQL查询1. 简介

Hibernate对原生SQL查询也提供了支持,也称为本地SQL查询

通过SQLQuery也支持原生SQL查询

addEntity()将查询结果集中的关系数据映射为对象

2. 基本用法
String sql="select * from t_user";SQLQuery query = session.createSQLQuery(sql);query.addEntity(User.class); //将查询结果集中的关系数据映射为对象List list = query.list();System.out.println(list);
六、命名查询1. 简介

命名查询是指在映射文件中定义字符串形式的查询语句,即将查询语句写在hbm映射文件中

命名查询既可以是HQL查询语句,也可以是SQL查询语句

2. HQL语句的命名查询

在映射文件中使用元素定义一个HQL查询语句,与元素并列

3. SQL语句的命名查询

在映射文件中使用元素定义一个SQL查询语句,与元素并列

七、JDBC操作1. 简介

在Hibernate4.x中可以使用Session的doWork()方法进行JDBC操作,会将Connection暴露出来

2. 基本用法
Session session = HibernateUtil.getSession();final List list=new ArrayList();session.doWork(new Work() {  @Override  public void execute(Connection conn) throws SQLException {    ResultSet rs = conn.prepareStatement("select * from t_user")      .executeQuery();    while (rs.next()) {      User user = new User(rs.getInt("id"), rs.getString("name"),                           rs.getString("pwd"), rs.getInt("age"));      list.add(user);    }  }});System.out.println(list);HibernateUtil.close();
八、其他1.  更新操作

使用Query的executeUpdate()方法对数据进行更新操作:增、删、改

Session session = HibernateUtil.getSession();TransactionManager.beginTransaction();// String hql="delete from User where id in (2,3,5,7,20) and password='123'";String hql = "update User u  set u.password='666666' where u.username='alice'";Query query = session.createQuery(hql);int count = query.executeUpdate(); // 受影响的行数System.out.println(count);TransactionManager.commit();System.out.println("更新成功");HibernateUtil.close();
2. formula属性

该属性可以利用SQL动态的生成实体属性,将SQL执行结果映射到实体属性上

要求:

  • 实体要存在相应的属性

  • sql语句必须用小括号()包裹起来

  • 如果操作列名,必须为表起别名

九、作业1. 任务
  • 创建部门表t_dept(id,name)及对应的实体类和hbm文件

  • 创建员工表t_emp(id,name,dept_id)及对应的实体类和hbm文件

  • 创建班级表t_class(id,name)及对应的实体类和hbm文件

  • 创建学生表t_student(id,name,class_id)及对应的实体类和hbm文件

2. 预习

多对一、一对多、多对多、一对一

继承、组件、JPA

转载请注明:文章转载自 www.wk8.com.cn
本文地址:https://www.wk8.com.cn/it/247153.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 wk8.com.cn

ICP备案号:晋ICP备2021003244-6号