1.添加一個配置文件
package com.hanhuide.driver.config;
import com.hanhuide.driver.dataSource.DataSourceNames;
import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
/**
* @ProjectName: maven
* @Package: com.hanhuide.driver.config
* @ClassName: TransactionConfig
* @Author: 韓惠德
* @Description: 多數據源多事務管理器
* @Date: 2020/1/15 14:59
* @Version: 1.0
*/
@Configuration
public class TransactionConfig {
@Bean(name = DataSourceNames.MASTER)
public DataSourceTransactionManager transactionMASTER(@Qualifier(DataSourceNames.MASTER) DataSource firstDataSource) {
DataSourceTransactionManager dataSourceTransactionManager = new DataSourceTransactionManager(firstDataSource);
return dataSourceTransactionManager;
}
@Bean(name = DataSourceNames.CLUSTER)
public DataSourceTransactionManager transactionCLUSTER(@Qualifier(DataSourceNames.CLUSTER) DataSource firstDataSource) {
DataSourceTransactionManager dataSourceTransactionManager = new DataSourceTransactionManager(firstDataSource);
return dataSourceTransactionManager;
}
}
在使用的類上添加註解就可以使用不同的事務管理器了
package com.hanhuide.core.mapper;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.hanhuide.core.model.SysUser;
import com.hanhuide.driver.annotation.DataSource;
import com.hanhuide.driver.dataSource.DataSourceNames;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* @program: maven
* @description:
* @author: 韓惠德
* @create: 2019-12-24 16:39
* @version: 1.0
**/
@Service
public interface CeshiMapper extends BaseMapper<SysUser> {
@Select("select * from sys_user")
List<SysUser> findAll();
@Select("select * from sys_user")
@DataSource(DataSourceNames.CLUSTER)
@Transactional(value = DataSourceNames.CLUSTER, rollbackFor = Exception.class)
List<SysUser> findAll2();
}
注意bean的名字不能衝突