简单解析mybatis的流程原理

一.什么是mybatis,它有什么好处?

它是对jdbc的封装,是一款优秀的半自动持久层框架。它的好处是

1.支持定制化的sql、存储过程以及高级映射。

2.减少了jdbc繁琐的代码以及设置参数获取结果集。

3.通过xml/注解的形式将数据库行数据与pojo进行映射。

二.mybatis中最浅层次的流程解释

类似于jdbc要对数据库进行操作必须开启一个会话,在mybatis中也存在这样一个会话sqlSession(sql会话)mybatis通过sqlsession对数据库进行操作。那么如何获取sqlsession?mybatis中存在sqlSessionFactory(sql会话工厂),通过sqlSessionFactory.openSession();可以打开一个会话。那么sqlSessionFactory又是怎么来的,它是通过SqlSessionFactoryBuilder(sqlSession工厂建造者)建造的,new SqlSessionFactoryBuilder().build(参数);在这里要注意下build方法中的参数,这里的参数应该是什么?先往下看几行后解答。

三.mybatis中核心的两个配置文件与一个Java类

两个配置文件:

一个为config.xml 也就是Mybatis的配置文件

一个为XXXMapper.xml 也就是实体类的映射文件

一个Java类:Configuration

这里我们回到刚才遗留的问题,new SqlSessionFactoryBuilder().build(参数)参数应该是什么?

这里的参数可以使config.xml文件中的内容或者Configuration对象。

第一种config.xml文件中的内容:

(这种方式最终也是调用第二种方式:方法的重载)

第二种Configuration对象:

因为第一种和第二种最终都是通过Configuration对象为参数而获得SqlSessionFactory。所以:

1.我们应该研究下Configuration对象。

2.第一种方式config.xml文件为什么可以被解析为Configuration对象,他们之间有什么关系?

3.提前透露下XXXMapper.xml也与Configuration对象也存在很大关系故也要了解下Mapper.xml文件

四.config.xml文件、XXXMapper.xml文件和Configuration对象的关系

Configuration对象:

Configuration类保存了所有Mybatis的配置信息。而且mybaits-config.xml及xxMapper.xml中所有配置信息在解析后都会保存到Configruation对象相应的属性中。可以参考:https://blog.csdn.net/ashan_li/article/details/50338695

config.xml文件:

可以去mybatis官网了解:http://www.mybatis.org/mybatis-3/zh/configuration.html

总的来说,XMLConfigBuilder解析mybatis-config.xml的配置到Configuration中,

XMLMapperBuilder解析XXXMapper.xml文件的配置到Configuration中,new SqlSessionFactoryBuilder().build(Configuration)获取到SqlSessionFactory,最终获取到sqlsession进而操作数据库。

到这里mabatis最浅层次的流程已经完毕,下一步就是要了解

1.XMLConfigBuilder解析mybatis-config.xml的过程

2.XMLMapperBuilder解析XXXMapper.xml文件的过程

3.SqlSession如何操作数据库

4.缓存、懒加载等其他的一些东西。

如果想了解这些可以参考:https://blog.csdn.net/ashan_li/article/details/50338695

猜你喜欢

转载自blog.csdn.net/zf18234031156/article/details/82985242