至于选哪种方式呢,就看你自己了
二 传统 xml 方式
<!-- datasource -->
<bean id="testerDataSource" class="com.alipay.zdal.client.jdbc.ZdalDataSource"
init-method="init" destroy-method="close">
<property name="appName" value="xxx"/>
<property name="appDataSourceName" value="xxx_ds"/>
<property name="version" value="xxx"/>
<property name="configProperties">
<map>
<entry key="zdal_password_encrypt" value="true"/>
</map>
</property>
</bean>
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="sqlSessionFactoryBeanName" value="testerSqlSessionFactory"/>
<!-- mapper 包的位置 -->
<property name="basePackage" value="com.xxx.xxx.dal.mapper"/>
</bean>
<bean id="testerTransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="testerDataSource"/>
</bean>
<bean id="testerTransactionTemplate"
class="org.springframework.transaction.support.TransactionTemplate">
<property name="transactionManager">
<ref bean="testerTransactionManager"/>
</property>
</bean>
二 代码方式
1 配置 ZdalDataSource
代码的方式要注释写着三个的类要加上 @Configuration
配置数据源的文档参考步骤三
/**
* 第一种
*/
@Bean(initMethod = "init")
public ZdalDataSource testDataSource() {
return ZdalDataSourceBuilder.create()
//应用数据源
.appDsName("xxxx")
//如果 appName 为当前应用,不需要声明该字段
.appName("xxx")
//应用数据源版本
.version("xxx")
//是否 dbMesh 数据源
.useDbMesh(false).build();
}
/**
* 第二种
*/
@Bean(initMethod = "init")
public ZdalDataSource test01DataSource() {
ZdalDataSource testerDataSource = new ZdalDataSource();
testerDataSource.setAppDsName("xxx");
testerDataSource.setAppDataSourceName("xxx");
testerDataSource.setVersion("xxx");
testerDataSource.setUseDbMesh(false);
return testerDataSource;
}
/**
* 事务管理器
*/
@Bean
public TransactionManager txManagerForSingle(@Qualifier(value = "testDataSource") DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
2 配置 SqlSessionFactoryBean
@Bean(name = "xxx")
public SqlSessionFactoryBean coreConfSqlSessionFactoryBean(DataSource testerDataSource) throws IOException {
SqlSessionFactoryBean coreConfSqlSessionFactoryBean = new SqlSessionFactoryBean();
//设置你自己的 mapping 文件的位置
coreConfSqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mybatis/com/xxx/xxx/base/mapper/*.xml"));
coreConfSqlSessionFactoryBean.setDataSource(testerDataSource);
return coreConfSqlSessionFactoryBean;
}
3 扫描 Mapper 配置
第一种代码的方式
@Bean
public MapperScannerConfigurer mapperScannerConfigConf() {
MapperScannerConfigurer config = new MapperScannerConfigurer();
config.setBasePackage("com.xxx.xxx.dal.mapper");
config.setSqlSessionFactoryBeanName("xxx");
return config;
}
第二种注解的方式
明显第二种方式牛*多了😍
@MapperScan(basePackages = "com.xxx.xxx.dal.mapper", sqlSessionFactoryRef = "sqlSessionFactoryConf")