0.主要核心类
(1)SqlSessionFactory接口 用于生产SqlSession(内部使用DefaultSqlSession 创建SqlSession)
SqlSessionFactory 的默认具体实现类:DefaultSqlSessionFactory
SqlSessionFactoryBuilder 用于创建SqlSessionFactory,内部实际是使用DefaultSqlSessionFactory创建
(1-1)SqlSessionManager类实现了SqlSessionFactory和SqlSession 即是工厂又是SqlSession,具体情况后续分析。
(2)SqlSession接口 用于执行命令、获取映射、管理事务
SqlSession 默认具体实现类:DefaultSqlSession 用于创建SqlSession
(3)BaseBuilder抽象类
具体实现类:XMLConfigBuilder,用于构建配置文件
XMLMapperBuilder,用于构建映射接口
XMLStatementBuilder,用于构建语句
SqlSourceBuilder
Configuration核心类,很多数据都在这里
使用以上类基本就可以把Mybatis构建起来,能满足基本使用需求,一般集成到spring,将实例的生命周期交给spring-IOC管理,将事务交给spring-aop管理,将数据源交给连接池等。后续分析Mybatis-spring,相对简单,涉及的类只有几个。
1.配置文件mybatis-config.xml,具体内容参考官网(https://mybatis.net.cn/configuration.html)
核心配置,常用的元素:setting,设置会影响mybatis的行为,比如说缓存、字段映射。
2.配置加载
mybatis的配置有默认行为,就是说手动不增加配置文件或者不使用Configuration进行设置的时候,是没有问题的。
配置有两种方式(1)配置文件(最终都会被保存到Configuration对象中)(2)使用Configuration类。
(1)使用XMLConfigBuilder加载配置文件
支持以Reader、InputStream、XPathParser的方式将配置文件传给构造方法,构造XMLConfigBuilder和Configuration对象,调用parse方法(内部实际调用parseConfiguration方法)进行设置相关配置,最后返回Configuration对象。
(2)使用Configuration配置
直接创建Configuration对象,将需要修改的配置set到对应字段中。
以上部分是配置的初始化。
3.获取SqlSession,有三种方式
(1)创建DefaultSqlSession对象
它是非线程安全的类,类注释上有相关说明,只有两个构造方法,接收三个参数:配置对象、执行器、是否自动提交。
(2)使用SqlSessionFactory
SqlSessionFactory创建SqlSession有两种方法,第一通过默认具体实现类DefaultSqlSessionFactory,它的构造器需要使用到Configuration对象;
第二个是通过SqlSessionFactoryBuilder类构建SqlSessionFactory(内部创建的是DefaultSqlSessionFactory),这种方式比较灵活,构建SqlSessionFactory可以使用配置文件或者Configuration对象。
(3)使用SqlSessionManger类,它即是工厂又是会话,这种方式有一定的好处,扩展性、灵活性更好。
4.使用SqlSession对象
(1)使用Mapper执行相关语句
通过<T> T getMapper(Class<T> type)获取映射接口,使用映射接口调用方法执行语句(映射接口和映射文件有映射关系),好处是类型安全,调用更明确,不需要知道具体的映射文件以及映射语句。
(2)直接使用封装的方法执行语句
调用更加直接,不需要额外定义映射接口,直接使用映射文件中的语句id进行执行语句,开发量少,因为类型不安全,要求使用人员了解映射语句的返回值、参数等相关内容。
以上就是大概的使用,使用注解方式和更具体的,后续补充。只是做笔记,有什么问题,欢迎大家积极沟通