项目 github地址:https://github.com/winterme/pkusoft-mybatis
jar 包地址:链接:https://pan.baidu.com/s/1MMsZgjbm9yKkn4GfcZ1WIQ 提取码:to0t
在工作中,发现我们经理写的一个包很好用,就是只需要在 yml 上配置 数据库连接信息,包路径,xml路径,mybatis 就能跑了,很方便,也是也想自己写一个,参考了下经理的代码,自己写了个
其具体思路就是,实现 BeanDefinitionRegistryPostProcessor 接口,在 ioc注入的时候,读取 配置文件,进行动态注入。
注入方法和原来的java配置mybatis 一样,先创建 DataSource,然后 sqlSessionFactory,然后transaction。
yml 格式:
mybatis:
datasource:
config[0]:
# druid 监控类
type: com.alibaba.druid.pool.DruidDataSource
# 数据库连接驱动
driver-class-name: com.mysql.jdbc.Driver
# 数据库连接地址
url: jdbc:mysql://127.0.0.1:3306/zhangzq?useUnicode=true&characterEncoding=utf-8&useSSL=false&useLegacyDatetimeCode=false&serverTimezone=Hongkong&zeroDateTimeBehavior=convertToNull
username: root
password: xxxx
# tkmybatis 的扫描器,不写默认 MyBatis 的扫描器
mapper-scanner: tk.mybatis.spring.mapper.MapperScannerConfigurer
# mapper.java 所在包
base-package: com.zzq.zhangzq.mapper
# mapper.xml 所在包
mapper-location: classpath:com/zzq/zhangzq/mapper/*.xml
默认 0 为主数据源,其他的为从数据源。从 config[0] 开始,config[1],config[2]....
代码参考:
import com.alibaba.druid.pool.DruidDataSource;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.boot.autoconfigure.SpringBootVFS;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.beans.factory.config.RuntimeBeanReference;
import org.springframework.beans.factory.support.BeanDefiniti