mybatis 批量添加_Spring 整合MyBatis

1。Spring的pom.xml添加MyBatis起步依赖,查看启动配置MybatisAutoConfiguration类,添加MybatisProperties类,对应项目配置中的mybatis.***相应配置添加。

2。MybatisAutoConfiguration中注入SqlSessionFactory,设置SqlSessionFactory的dataSource,configuration。

重点----- a):SqlSessionFactory是通过SqlSessionFactoryBean.getObject()获取,在SqlSessionFactoryBean.afterPropertiesSet()方法中会创建SqlSessionFactoryBean,在这里面会解析mybatis-config.xml与项目配置中文件中的mapperLocations:

SqlSessionFactoryBean.buildSqlSessionFactory()->

XMLConfigBuilder.parse(),解析mybatis-config.xml配置

XMLMapperBuilder.parse(),解析mapperLocations映射类

9e9311037d2eefcfe5773e8c16a7ac8f.png

3。MybatisAutoConfiguration中注入SqlSessionTemplate

4。DataSourceAutoConfiguration配置类是在SpringBoot的AutoConfi中注入,添加DataSourceProperties配置类。对应项目配置中的spring.datasource.***相应配置

5。通过@MapperScan注解导入相应路径下的Mapper Interface类。在MapperScannerRegistrar类中通过ClassPathMapperScanner.processBeanDefinitions()方法将相应MapperInterface注入,类型为MapperFactoryBean

6。获取相应MapperInterface接口类的Bean时通过MapperFactoryBean.getObject()方法。获取的是相应的代理对像MapperProxy,通过MapperProxyFactory生成。

7。调用相应的接口中的方法时就会获取MapperInteface的代理对像MapperProxy。通过MapperProxy.invoke执行相应的方法。MapperProxy.invoke->MapperMethod.execute(SqlSession, Object[])然后一步一步往下。

部分细节清单:

1.

Mybatis的执行器有三种:

SimpleExecutor,每次执行完关闭Statement

BatchExecutor,支持批量

ReuseExecutor,同一个Sql的情况下Statement会复用

2.

StatementHandler有三类:

SimpleStatementHandler

PreparedStatementHandler

CallableStatementHandler

3.分页可以在StatementHandler中的RowBounds,不过此种方法属于内存分页

4.Mybatis的缓存,默认一级缓存在BaseExecutor中的PerpetualCache localCache,Session级别。查询不会清除,delete/update会清空

5.自定义插件:

1):首先在mybatis-config.xml文件中配置plugins节点

2):一个实现Interceptor接口的自定义方法

后面interceptorChain.pluginAll获取经过插件增强的

parameterHandler,

resultSetHandler

statementHandler

6.Mapper Interface类的方法名应与Mapper**.xml文件中的ID一致,因为后面要通过Mapper Interface的方法名从configuration.getMappedStatement(statement)获取对应的MappedStatement语句。

7.配置文件中的mappers节点有packagesmapper

mapper下的节点又分resourceurlclass。顺序为1):resource,2):url,

3):class

角色的过程在XMLConfigBuilder.parseConfiguration(parser.evalNode("/configuration"))中,可自行细看。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值