欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

荐 13、mybatis框架学习

程序员文章站 2022-04-19 14:11:23
应用架构MyBatis 是一个持久层框架,实现了对JDBC操作的封装,主要用于简化JDBC操作中的一些相对繁琐的步骤,例如参数的映射,结果集的映射等为何使用mybatis实现数据持久层应用?稳定,灵活(动态SQL),功能强大(池,日志,缓存)学习以及使用成本低解耦,SQL的可维护性,可复用性比较高。产品架构参考文档及图片来源:https://blog.csdn.net/luanlouis/article/details/40422941技术架构1、构成分析1、首先获取两个主要的...

应用架构

荐
                                                        13、mybatis框架学习
MyBatis 是一个持久层框架,实现了对JDBC操作的封装,主要用于简化JDBC操作中的一些相对繁琐的步骤,例如参数的映射,结果集的映射等

为何使用mybatis实现数据持久层应用?

  1. 稳定,灵活(动态SQL),功能强大(池,日志,缓存)
  2. 学习以及使用成本低
  3. 解耦,SQL的可维护性,可复用性比较高。

产品架构

荐
                                                        13、mybatis框架学习
参考文档及图片来源:https://blog.csdn.net/luanlouis/article/details/40422941

技术架构

1、构成分析

荐
                                                        13、mybatis框架学习
1、首先获取两个主要的依赖jar包,mybatis框架包数据库连接包
2、mybatis主配置文件,通常是mybatis-config.xml
3、在mybatis主配置文件中会引入需要执行SQL语句的sqlMapper.xml文件
4、准备工作完成以后,后续直接在Java文件中创建工厂对象SqlSessionFactory生成SqlSession对象,可生成Dao中Mapper接口对象调用方法执行sql操作,或直接调用方法执行sql操作
5、获取返回结果并处理

注意:这种IO读取配置文件调用接口创建对象的操作方式,在一定程度上会影响性能,mybatis官网还提供一种直接配置生成对象的方式。其中的接口类其实就是配置文件中的节点
荐
                                                        13、mybatis框架学习

2、工作过程

荐
                                                        13、mybatis框架学习
参考文档及图片来源:https://www.jianshu.com/p/15781ec742f2

1、读取解析mybatis-config.xml,将信息解析封装到Configuration类
2、将sqlMapper.xml或Dao中的Mapper抽象类中的注解信息加载形成多个MappedStatement对象(包括了传入参数映射配置、执行的SQL语句、结果映射配置)
3、当API接口层收到请求时,传入id参数对象(实例对象或Map集合),mybatis根据id找到对应的MappedStatement对象,将参数对象传入并解析,得到待执行的sql和参数
4、执行sql语句,获得结果
5、将结果按照映射的配置进行转换,获得结果集(HashMap、实例对象或基本数据类型)

3、具体对象工作过程

荐
                                                        13、mybatis框架学习

从框架中学习面向接口编程的思想,可以很好的降低模块之间的耦合性
Java代码中创建和获得的对象基本都是接口对象

1、获取相关配置文件流对象
2、构建模式new SqlSessionFactoryBuilder().build(in)生成工厂对象SqlSessionFactory
3、工厂模式工厂实例.openSession()生成SqlSession会话对象
4、会话对象获取执行器Executor并传入MappedStatement对象id参数对象,Executor调用MappedStatement执行sql语句,并根据配置维护缓存
5、MappedStatement负责整合参数,以及对结果集的处理转换

会话对象操作执行器时才会获得Connection对象
参考文档:https://blog.csdn.net/baidu_38558076/article/details/88801227

构建者模式

构建者模式,又称建造者模式,
将一部负责对象的构建分为许多小对象的构建,最后在整合构建的模式。

构建者模式一般用在构建流程或者组成部件固定的场合,
将这些部件分开构建成为组件对象,再将这些组件对象整合成为目标对象。

最佳实例就是组装台式电脑的情况,我们可以分别购买主板、CPU、内存、硬盘等部件,
然后将这些部件组装在一起就形成了一台完整的电脑。

参考文档
1、https://www.cnblogs.com/V1haoge/p/6553374.html

工厂模式

属于创建型模式,又叫做静态工厂方法模式。
是由一个工厂对象决定创建出哪一种产品类的实例。
实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类
(这些产品类继承自一个父类或接口)的实例。

参考文档
1、https://www.jianshu.com/p/d951ac56136e
2、https://blog.csdn.net/lemon_tree12138/article/details/46225213

会话工厂创建过程

荐
                                                        13、mybatis框架学习
根据解析出的配置信息,传入工厂构建方法,生成工厂接口对象

会话对象应用分析

也可以说是mybatis对jdbc的分装过程
荐
                                                        13、mybatis框架学习
荐
                                                        13、mybatis框架学习
参考文档:
1、https://blog.csdn.net/luanlouis/article/details/40422941
2、https://blog.csdn.net/aacm1992/article/details/80848994

基于Mapper接口会话

荐
                                                        13、mybatis框架学习

缓存

Mybatis 中提供缓存的目的主要是为了提高查询性能,但可能会有一定的脏读问题.并且会分为一级缓存和二级缓存,默认开启都是开启的,一级缓存可以直接使用,二级缓存需要在Mapper.xml中配置才能使用.

Mybatis 一级缓存(SqlSession),SqlSession关闭时一级缓存失效。在同一个事务内部多次执行同一个查询,后续查询会从此缓存取数据。
荐
                                                        13、mybatis框架学习
MyBatis二级缓存:(SqlSessionFactory),跨session共享数据时,可以对二级缓存在mapper文件中进行配置。
mybatis-config.xml中配置

<settings>
    <!-- 开启二级缓存(默认是开的,这里写出来是为了方便代码维护) -->
    <setting name="cacheEnabled" value="true" />
</settings>

sqlMapper.xml中配置

<cache eviction="LRU" readOnly="true" flushInterval="100000" size="1024"></cache>

荐
                                                        13、mybatis框架学习
参考文档:
1、https://www.cnblogs.com/jian0110/p/9387941.html
2、https://blog.csdn.net/sinat_32133675/article/details/76691009
3、https://funyan.cn/p/281.html

日志

荐
                                                        13、mybatis框架学习
输出日志配置,要查看的包路径,打印级别

本文地址:https://blog.csdn.net/caomushi/article/details/107211177