一.什么是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