MyBatis的概念和搭建

目录

1、JDBC编程和ORM模型

(1)JDBC的基本搭建

(2)JDBC的弊端

(3)JDBC和ORM模型的实质

(4)什么是ORM模型

(5)常见的ORM模型

(6)Mybatis和hibernate区别

(7)mybatis解决了jdbc的问题

2、关于MyBatis的概念和搭建

(1)什么是MyBatis

(3)MyBaits的优势

(3)MyBatis的环境搭建

3、MyBatis的生命周期


1、JDBC编程和ORM模型

(1)JDBC的基本搭建
加载驱动导入JDBC连接数据库的jar包,利用class.forName加载驱动
获取连接利用DriverManager获取Connection,然后创建Statement
执行SQL语句利用Statement执行SQL语句并结合ResultSet处理结果集映射java对象
关闭资源先开后关的顺序关闭ResultSet,Statement,Connection等资源
(2)JDBC的弊端

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

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

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

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

(3)JDBC和ORM模型的实质

        JDBC的实质是:

        JDBC就是通过SQL语句在数据访问层进行连接访问,SQL语句直接写在Java中。

        ORM的实质是:

         ORM总体来说就是实现了5个映射:

        类对应数据库属性对应字段映射类型用集合映射表结果一行记录(实体)对应对象

(4)什么是ORM模型

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

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

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

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

(5)常见的ORM模型

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

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

(6)Mybatis和hibernate区别
  • Hibernate是全自动化ORM,Mybatis是半自动化ORM。
  • Hibernate简化dao层,不用考虑SQL语句的编写和结果映射,重点放在业务逻辑上;Mybatis需要手写SQL语句以及结果映射。
  • Hibernate是一个重量级的框架,内部生成SQL语句,反射操作太多,导致性能下降; Mybatis是一个轻量级的框架,需要自己写sql语句,有较少的反射操作。
  • Hibernate 不方便做SQL优化,遇到较复杂的SQL语句需要绕过框架实现复杂,对多字段的结构进行部分映射困难; Mybatis 不仅可以做SQL优化还可以SQL与Java分离,还可以自行编写映射关系,复杂的SQL语句Mybatis效率更高
(7)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定义输出结果的类型。

2、关于MyBatis的概念和搭建

(1)什么是MyBatis

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

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

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

(3)MyBaits的优势

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

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

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

(3)MyBatis的环境搭建

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

        其中bean层是实体类,主要映射数据库中的表,其中的属性映射的是数据库中的字段。dao层主要写的是加载和释放资源的代码,mapper层放的是xml文件和接口,用来映射sql代码。test层是测试类。mybatis-config是主配置文件。

         sql语句放到了sqlMapper文件中,让sql语句进入到了配置文件中从而解决sql硬编码问题。

        最后就是test测试类中,从SqlSessionFactory中打开一个新的SqlSession。SqlSession是MyBatis 的核心接口之一,用于执行SQL命令、获取映射器以及管理事务。

3、MyBatis的生命周期

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 对结果集的解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值