版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_36594703/article/details/81301518
1.首先pom.xml配置文件和上一篇整合mybatis的完全一样,直接拿过来用就可以了。
2.创建两个数据库test01和test02,一个数据库呢对应一个数据源这时候就不能使用默认的数据源了。
3.说下多数据源:例如公司分为两个数据库,一个数据库专门存放共同的配置文件,一个数据库垂直业务数据库,垂直是根据业务划分的,在一个项目中有多个数据源指不同库jdbc连接,多数据源划分可以分包划分(业务)、注解方式划分。
4.现在application.properties配置文件中写这两个数据源,注意前面配置的名字要小心:
spring.datasource.test1.jdbc-url=jdbc:mysql://localhost:3306/test01
spring.datasource.test1.username=root
spring.datasource.test1.password=123456
spring.datasource.test1.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.test2.jdbc-url=jdbc:mysql://localhost:3306/test02
spring.datasource.test2.username=root
spring.datasource.test2.password=123456
spring.datasource.test2.driver-class-name=com.mysql.jdbc.Driver
5.创建两个包test01和test02,然后每个包里面包含mapper、service,以test01包下的文件为例,test02包下的一样只需要把1改为2.
UserMapperTest01.java:
@Mapper
public interface UserMapperTest01 {
@Select("select * from user where name=#{name}")
User findByName(@Param("name")String name);
@Insert("insert into user(name,age) values(#{name},#{age})")
int insert(@Param("name")String name,@Param("age")Integer age);
}
UserServiceTest01.java:
@Service
public class UserServiceTest01 {
@Autowired
private UserMapperTest01 userMapperTest01;
public int insertUser(String name,Integer age) {
int insertUserResult=userMapperTest01.insert(name, age);
int i=1/age;
System.out.println(insertUserResult);
//怎么验证事务开启成功
return insertUserResult;
}
}
6.创建两个datasource的配置文件,DataSource1Config.java和DataSource2Config.java,以1为例,2一样只需要把 1改为2.
@Configuration
@MapperScan(basePackages="com.itmayiedu.test01",sqlSessionFactoryRef="test1SqlSessionFactory")
public class DataSource1Config {
@Bean(name="test1DataSource")
@ConfigurationProperties(prefix="spring.datasource.test1")
@Primary
public DataSource testDataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name="test1SqlSessionFactory")
@Primary
public SqlSessionFactory testSqlSessionFactory(@Qualifier("test1DataSource")DataSource dataSource) throws Exception {
SqlSessionFactoryBean bean=new SqlSessionFactoryBean();
bean.setDataSource(dataSource);
return bean.getObject();
}
@Bean(name="test1TransactionManager")
@Primary
public DataSourceTransactionManager testTransactionManager(@Qualifier("test1DataSource")DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
@Bean(name="test1SqlSessionTemplate")
@Primary
public SqlSessionTemplate testSqlSessionTemplate(@Qualifier("test1SqlSessionFactory")SqlSessionFactory sqlSessionFactory) {
return new SqlSessionTemplate(sqlSessionFactory);
}
}
7.Controller层:
@RestController
public class MybatisMultiDataSourceController {
@Autowired
private UserServiceTest01 userServiceTest01;
@Autowired
private UserServiceTest02 userServiceTest02;
@RequestMapping("/insertUserTest01")
public Integer insertUserTest1(String name,Integer age) {
return userServiceTest01.insertUser(name, age);
}
@RequestMapping("/insertUserTest02")
public Integer insertUserTest2(String name,Integer age) {
return userServiceTest02.insertUser(name, age);
}
}
8.启动类:
@SpringBootApplication
//@MapperScan(basePackages= {"com.itmayiedu.test01.mapper"})
public class MyBatisApp01 {
public static void main(String[] args) {
SpringApplication.run(MyBatisApp01.class,args);
}