SpringBootパケットによるデータソースの分割


1.まずpom.xmlプロファイルは、前回の統合mybatisと全く同じで、直接持ってきて使えばいいです.
2.2つのデータベースtest 01とtest 02を作成します.1つのデータベースが1つのデータソースに対応している場合、デフォルトのデータソースは使用できません.
3.複数のデータソースについて説明します.例えば、会社は2つのデータベースに分けられ、1つのデータベースは共通のプロファイルを保存し、1つのデータベースは垂直な業務データベースであり、垂直は業務によって区分され、1つのプロジェクトに複数のデータソースが異なるライブラリjdbc接続を指し、複数のデータソース区分はパケット分割(業務)、注釈方式で区分することができます.
4.アプリケーションpropertiesプロファイルには、この2つのデータソースが書かれています.前の構成の名前に注意してください.
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.2つのパッケージtest 01とtest 02を作成し、各パッケージにはmapper、serviceが含まれている.test 01パッケージのファイルを例にとると、test 02パッケージの同じように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.2つのdatasourceのプロファイルを作成し、DataSource 1 Config.JAvaとDataSource 2 config.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);
	}