【MyBatis】初识MyBatis

目录

一、JDBC编程和ORM模型

1. JDBC回顾

2. JDBC的弊端

3. 什么是ORM模型

4. 常见的ORM模型

5. Mybatis和hibernate 区别

6. mybatis 解决了jdbc 的问题

二、MyBatis简介

1. 为什么选择MyBatis

2. 什么是MyBatis

3. MyBatis快速开始

三、MyBatis生命周期

1. MyBatis生命周期


一、JDBC编程和ORM模型

1. JDBC回顾

(1)加载驱动

        导入 JDBC 连接数据库的 jar 包,利用 CLASS.forName 加载驱动;

(2)获取连接

        利用 DriverManager 获取Connection,然后创建 Statement;

(3)执行SQL语句

        利用 Statement 执行 SQL语句并结合ResultSet 处理结果集映射Java 对象;

(4)关闭资源

        先开后关的顺序关闭 ResultSet,Statement,Connection 等资源。

2. JDBC的弊端

(1)代码重复度高

        大量的重复代码,以 ResultSet为例,每次都需要重复解析结果集;

(2)硬编码

        SQL语句存在Java代码中,不能很好的分离数据库语句和Java语句,造成代码不易维护;

(3)底层技术

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

(4)SQL参数固定

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

3. 什么是ORM模型

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

        对象关系映射,用于实现面向对象编程语言里不同类型系统的数据之间的转换。

(1)Java对象

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

(2)映射配置

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

(3)数据库

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

4. 常见的ORM模型

(1)Hibernate

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

(2)MyBatis

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

5. 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数据库移植性好。

6. 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定义输出结果的类型。

二、MyBatis简介

1. 为什么选择MyBatis

(1)简单易学

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

(2)灵活度高

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

(3)功能完整

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

2. 什么是MyBatis

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

(1)半自动化

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

(2)集成方便

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

3. MyBatis快速开始

(1)引入 mybatis-config.xml 配置文件

        该配置文件主要是连接数据库所需的配置信息。

(2)引入 Mapper 映射文件

        配置 SQL 语句和映射的配置文件。

(3)创建 MyBatisUtil 类

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

(4)创建 SqlSession 类访问数据库

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

(5)输出结果

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

三、MyBatis生命周期

1. MyBatis生命周期

(1)SqlSessionFactoryBuilder

        构造器,会根据配置信息生成 SqlSessionFactory。

(2)SqlSessionFactory

        利用工厂模式生产SqlSession;

(3)SqlSession

        既可以发送 SQL 语句去执行并返回结果,也可以获取 Mapper 的接口;

(4)SQL Mapper

        映射器,给出对应的SQL 和映射规则,负责发送 SQL 和处理结果;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值