当前位置: 移动技术网 > IT编程>开发语言>Java > 荐 13、mybatis框架学习

荐 13、mybatis框架学习

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

应用架构

在这里插入图片描述
MyBatis 是一个持久层框架,实现了对JDBC操作的封装,主要用于简化JDBC操作中的一些相对繁琐的步骤,例如参数的映射,结果集的映射等

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

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

产品架构

在这里插入图片描述
参考文档及图片来源:https://blog.csdn.net/luanlouis/article/details/40422941

技术架构

1、构成分析

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

注意:这种IO读取配置文件调用接口创建对象的操作方式,在一定程度上会影响性能,mybatis官网还提供一种直接配置生成对象的方式。其中的接口类其实就是配置文件中的节点
在这里插入图片描述

2、工作过程

在这里插入图片描述
参考文档及图片来源: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、具体对象工作过程

在这里插入图片描述

从框架中学习面向接口编程的思想,可以很好的降低模块之间的耦合性
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

会话工厂创建过程

在这里插入图片描述
根据解析出的配置信息,传入工厂构建方法,生成工厂接口对象

会话对象应用分析

也可以说是mybatis对jdbc的分装过程
在这里插入图片描述
在这里插入图片描述
参考文档:
1、https://blog.csdn.net/luanlouis/article/details/40422941
2、https://blog.csdn.net/aacm1992/article/details/80848994

基于Mapper接口会话

在这里插入图片描述

缓存

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

Mybatis 一级缓存(SqlSession),SqlSession关闭时一级缓存失效。在同一个事务内部多次执行同一个查询,后续查询会从此缓存取数据。
在这里插入图片描述
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>

在这里插入图片描述
参考文档:
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

日志

在这里插入图片描述
输出日志配置,要查看的包路径,打印级别

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

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网