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