Mybatis
概述:
-
它是一款优秀的持久层框架,它支持定制化SQl,存储过程以及高级映射。
-
它避免了几乎所有的JDBC代码手动设置参数以及获取结果集。
-
可以使用简单的XML或注解来配置和映射原生信息。
-
将基本的JDBC常用接口封装,对外提供操作即可。
传统的JDBC编程的问题:
传统的编程步骤:
- 加载数据库驱动
- 创建并获取数据库链接
- 创建statement对象
- 拼写sql语句
- 执行sql语句
- 对sql执行结果进行解析处理
- 释放资源
JDBC编程问题
-
数据库连接的创建,释放频繁造成系统资源浪费,如果使用数据库连接池可解决该问题。
-
sql语句编写在Java代码中,造成代码不易维护的问题。当sql需要改动是需要修改源代码。
-
对结果集解析存在硬编码,SQL 语句变化导致解析代码变化,系统不易维护
MyBatis 架构:
MyBatis 是优秀的持久层框架,它能够解决 JDBC 编程中存在的问题。接下来先了解 MyBatis 的架构。
- SqlMapConfig.xml,此文件作为 mybatis 的全局配置文件,配置了 mybatis的运行环境等信息。mapper.xml 文件即 sql 映射文件,文件中配置了操作数据库的 sql 语句。此文件需要在 SqlMapConfig.xml 中加载。
- 通过 mybatis 环境等配置信息构造 SqlSessionFactory,即会话工厂。
- 由会话工厂创建 sqlSession,即会话,操作数据库需要通过 sqlSession 进行。
- mybatis 底层自定义了 Executor 执行器接口来操作数据库,Executor 接口有两个实现,一个是基本执行器、一个是缓存执行器。
- Mapped Statement 也是 mybatis 一个底层封装对象,它包装了 mybatis配置信息及sql映射信息等。mapper.xml文件中一个sql对应一个MappedStatement 对象,sql 的 id 即是 Mapped statement 的 id。
- Mapped Statement 对 sql 执行输入参数进行定义,包括 HashMap、基本类型、PPOJO,Executor 通过 Mapped Statement 在执行 sql 前将输入的java 对象映射至 sql 中,输入参数映射就是 jdbc 编程中对preparedStatement 设置参数。
入参数映射就是 jdbc 编程中对preparedStatement 设置参数。 - Mapped Statement 对 sql 执行输出结果进行定义,包括 HashMap、基本类型、PPOJO,Executor 通过 Mapped Statement 在执行 sql 后将输出结果映射至 java 对象中,输出结果映射过程相当于 jdbc 编程中对结果的解析处理过程。