标签:SqlSessionFactory Mybatis3 映射 spring SqlSession 使用 mybatis Configuration 配置文件
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进行执行语句,开发量少,因为类型不安全,要求使用人员了解映射语句的返回值、参数等相关内容。
以上就是大概的使用,使用注解方式和更具体的,后续补充。只是做笔记,有什么问题,欢迎大家积极沟通
标签:SqlSessionFactory,Mybatis3,映射,spring,SqlSession,使用,mybatis,Configuration,配置文件 来源: https://www.cnblogs.com/niejianqiang/p/15018235.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。