简介
Mybatis是一款优秀的持久层框架,它支持定制化SQL。存储过程以及高级映射。Mybatis消除了几乎所有的JDBC代码和手动设置的参数以及获取结果集。Mybatis使用简单的XML用于配置和原始映射,将接口和java当中的pojo映射成数据库中的记录。
Mybatis的优点
(1)简单易学:Mybatis本身就很小,而且很简单。它没有任何第三方的依赖,只需要安装2个jar文件+配置几个SQL映射文件易于学习,也易于使用。通过文档和源代码,可以比较完全的掌握它的设计思路和实现。
(2)灵活:mybatis不会对应用程序或者数据库的现有设计强加任何影响。sql写在XML里面,便于统一管理和优化。通过SQL我们基本上可以实现对数据库的访问和操作。
(3)解除sql与程序代码的耦合:通过提供DAL层,将业务逻辑和数据访问逻辑分离。使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。
(4)提供映射标签:支持对象与数据库的orm字段关系映射。
(5)提供XML标签:支持编写动态SQL
Mybatis工作原理
(1)加载配置并初始化
触发条件:加载配置文件
处理过程:将SQL的配置信息加载成为一个个MappedStatement对象(包括了传入参数映射配置、执行的SQL语句、结果映射配置),存储在内存中。
(A)读取MyBatis的配置文件。mybatis-config.xml为MyBatis的全局配置文件,用于配置数据库连接信息。
(B)加载映射文件。映射文件即SQL映射文件,该文件中配置了操作数据库的SQL语句,需要在MyBatis配置文件mybatis-config.xml中加载。mybatis-config.xml 文件可以加载多个映射文件,每个文件对应数据库中的一张表。
©构建会话工厂。通过MyBatis的环境配置信息构建会话工厂SqlSessionFactory。
(D)创建会话对象。由会话工厂创建SqlSession对象,该对象中包含了执行SQL语句的所有方法。
(E)Executor执行器。MyBatis底层定义了一个Executor接口来操作数据库,它将根据SqlSession传递的参数动态地生成需要执行的SQL语句,同时负责查询缓存的维护。
(F)MappedStatement对象。在Executor接口的执行方法中有一个MappedStatement类型的参数,该参数是对映射信息的封装,用于存储要映射的SQL语句的id、参数等信息。
(2)接收调用请求
触发条件:调用Mybatis提供的API
传入参数:为SQL的ID和传入参数对象
处理过程:将请求传递给下层的请求处理层进行处理。
(3)处理操作请求
触发条件:API接口层传递请求过来
传入参数:为SQL的ID和传入参数对象
处理过程:
(A)根据SQL的ID查找对应的MappedStatement对象。
(B)根据传入参数对象解析MappedStatement对象,得到最终要执行的SQL和执行传入参数。
©获取数据库连接,根据得到的最终SQL语句和执行传入参数到数据库执行,并得到执行结果。
(D)根据MappedStatement对象中的结果映射配置对得到的执行结果进行转换处理,并得到最终的处理结果。
(E)释放连接资源。
(4)返回处理结果将最终的处理结果返回。
重点
1、mybatis是对持久层的封装;
2、核心对象:sqlsessionFactory sqlsession ,由工厂类得到session对象,再由session对象通过持久层接口的class文件得到接口对象,最后由接口对象调用接口中的方法,实现持久层的功能,然后关闭session。