初识MyBati s

J D B C 编 程 和 O R M 模 型

加 载 驱 动

导 入 J D B C 连 接 数 据 库 的 j a r 包 , 利 用 C L A S S . f o r N a m e 加 载 驱 动 ;

获 取 连 接

利 用 D r i v e r M a n a g e r 获 取 C o n n e c t i o n , 然 后 创 建 S t a t e m e n t ;

执 行 S Q L 语 句

利 用 S t a t e m e n t 执 行 S Q L 语 句 并 结 合 R e s ult S e t 处 理 结 果 集 映 射 J a v a 对 象 

关 闭 资 源

先 开 后 关 的 顺 序 关 闭 R e s ult S e t , S t a t e m e n t , C o n n e c t i o n 等 资 源 。

 J D B C 的 弊 端

硬 编 码

S Q L 语 句 存 在 J a v a 代 码 中 , 不 能 很 好 的 分 离 数 据 库 语 句 和 J a v a 语 句 , 造 成 代 码 不 易 维 护 ;

S Q L 参 数 固 定

S Q L 语 句 的 参 数 固 定 , 使 得 S Q L 语 句 不 灵 活 , 无 法 满 足 多 变 的 场 景

代 码 重 复 度 高

大 量 的 重 复 代 码 , 以 R e s ult S e t 为 例 , 每 次 都 需 要 重 复 解 析 结 果 集 ;

底 层 技 术

J D B C 属 于 底 层 的 技 术 , 不 支 持 分 布 式 , 缓 存 等 技 术 , 对 于 复 杂 场 景 的 应 对 不 好 ;

JDBC的实质  :JDBC + SQL语句

ORM模型

        ORM 模型是数据库的表和简单 Java 对象(Plain Ordinary Java Object,简称 POJO)的映射关系模型,主 要解决数据库数据和 POJO 对象的相互映射。

Java对象 POJO 对象(Plain Ordinary Java Object): 简单的 Java 对象,实际就是 普通 JavaBeans。

映射配置 配置分为:类与数据库中表 的映射;对象与表中记录的 映射;类的属性与数据库中 表的字段的映射。

数据库 按照数据结构来组织、存储 和管理数据的仓库,ORM 模型中最底层的内容。

常见的ORM模型

Hibernate Hibernate 是一个 全自动 的 ORM 模 型,Hibernate 可以自动生成 SQL 语 句,自动执行.

MyBatis MyBatis 是一款 半自动 的 ORM 模型,它支持定 制化 SQL、存储过程以及高级映射.

全自动和半自动

 Mybatis和hibernate 区别:

1. Hibernate是全自动化ORM; Mybatis是半自动化ORM。

2. Hibernate简化dao层,不用考虑SQL语句的编写和结果映射,重点放在业务逻辑上; Mybatis需要手写SQL语句以及结果映射。

3. Hibernate是一个重量级的框架,内部生成SQL语句,反射操作太多,导致性能下降; Mybatis是一个轻量级的框架,需要自己写sql语句,有较少的反射操作。

4. Hibernate 不方便做SQL优化,遇到较复杂的SQL语句需要绕过框架实现复杂,

        对多字段的结构进行部分映射困难;

        Mybatis 不仅可以做SQL优化还可以SQL与Java分离,还可以自行编写映射关系,

        复杂的SQL语句Mybatis效率更高

Mybatis优势: 可以进行更细致的SQL优化;容易掌握

Hibernate优势; dao层开发比mybatis简单,mybatis需要维护SQL和结果映射 hibernate数据库移植性好

 mybatis 解决了jdbc 的问题

1.数据库连接创建、释放频繁造成系统资源浪费从而影响系统性能,如果使用数据库连接池可

解决此问题。

解决:在SqlMapConfig.xml中配置数据连接池,使用连接池管理数据库链接。

2.Sql语句写在代码中造成代码不易维护,实际应用sql变化的可能较大,sql变动需要改变java代码。

解决:将Sql语句配置在XXXXmapper.xml文件中与java代码分离。

3.向sql语句传参数麻烦,因为sql语句的where条件不一定,可能多也可能少,占位符需要和参数一一对应。

解决:Mybatis自动将java对象映射至sql语句,通过statement中的parameterType定义输入参数的类型。

4.对结果集解析麻烦,sql变化导致解析代码变化,且解析前需要遍历,如果能将数据库记录封装成pojo对象 解析比较方便。

解决:Mybatis自动将sql执行结果映射至java对象,通过statement中的resultType定义输出结果的类型。

M y B a t i s 简 介

MyBatis发展史

 为什么选择MyBatis

简单易学

易于学习,易于使用,通过文档和源 代码,可以比较完全的掌握它的设计 思路和实现;

灵活度高

通过定制 SQL 语句,可以比较灵活的 访问数据库,获取数据;

功能完整

提供了连接管理,缓存支持,线程支 持,(分布式)事务管理等功能,还 提供了其他 ORM 模型的支持。

 什么是MyBatis

        MyBatis是一款ORM模型,支持定制化 SQL、存储过程以及高级映射。可以使用简单的 XML 或注解来配置和映射 原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录

半自动化:支持定制化 SQL、存储过程以及高级映射;

集成方便:不仅方便 Spring 等 JavaEE 框架的集成,还与其他 ORM 模型集成也很方便。

MyBatis环境搭建

 MyBatis快速开始

引入 mybatis-config.xml 配置文件         该配置文件主要是连接数据库所需的配置信息

引入 Mapper 映射文件                         配置 SQL 语句和映射的配置文件

创建 MyBatisUtil 类                               用来创建 MyBatis 的数据库SqlSession会话类

创建 SqlSession 类访问数据库             创建出 SqlSession 后,利用 SqlSession 访问数据库

输出结果                                                查询数据库的学生表信息,并输出学生姓名和学生学号。 

M y B a t i s 生 命 周 期

  

 1)读取 MyBatis 配置文件:mybatis-config.xml 为 MyBatis 的全局配置文件,配置了 MyBatis 的运行环境等信息,例如数据库连接信息。

2)加载映射文件。映射文件即 SQL 映射文件,该文件中配置了操作数据库的 SQL 语句, 需要在 MyBatis 配置文件 mybatis-config.xml 中加载。mybatis-config.xml 文件可以 加载多个映射文件,每个文件对应数据库中的一张表。

3)构造会话工厂:通过 MyBatis 的环境等配置信息构建会话工厂 SqlSessionFactory。

4)创建会话对象:由会话工厂创建 SqlSession 对象,该对象中包含了执行 SQL 语句的 所有方法。

5)Executor 执行器:MyBatis 底层定义了一个 Executor 接口来操作数据库,它将根据 SqlSession 传递的参数动态地生成需要执行的 SQL 语句,同时负责查询缓存的维护。

6)MappedStatement 对象:在 Executor 接口的执行方法中有一个 MappedStatement 类型的参数,该参数是对映射信息的封装,用于存储要映射的 SQL 语句的 id、参数等信息。

7)输入参数映射:输入参数类型可以是 Map、List 等集合类型,也可以是基本数据类型 和 POJO 类型。输入参数映射过程类似于 JDBC 对 preparedStatement 对象设置参数 的过程。

8)输出结果映射:输出结果类型可以是 Map、 List 等集合类型,也可以是基本数据类 型和 POJO 类型。输出结果映射过程类似于 JDBC 对结果集的解析过程。

  • 20
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值