Spring Boot 2.0+Mybatis+Mybatis Generator+IDEA作成多データソース
Spring Boot 2.0+Mybatis+Mybatis Generator+マルチデータソース+IDEA
突っ込みを入れる
昨日はネットで「完璧」版のSpringBoot 2.0+Mybatisを使って多データソースを実現しましたが、実は一部のコードが欠けていました。被害は甚大で、時間がかかりすぎました。
開発環境、技術スタック
IDEAを使って、次の機能点を集めました。Spring Boot 2.0+Mybatis Generator+XMLはXMLの形式でデータベースとインタラクションします。注釈を使う方式ではなく、プロジェクトの後で複雑なSQL文に出会うのはまだXMLの形です。
プロジェクト作成手順 IDEAを使ってSpring Boot 2.0プロジェクトを作成する過程は を省略しました。 pom.xmlの全コード: プロジェクトの構造を説明します。もともとは各パッケージ、ファイルの役割を図に表示したいです。見すぎです。やはり文字の表現です。コントローラ類、comp.xdf.multid.dao.test 1とcomp.xdf.multid.dao.test 2はそれぞれ2つのデータベースに対応するdao類を保存して、comp.xdf.multic.datasourceは2つのデータベースに対応するデータベース接続を保存して、2つのデータベーステーブルに対応するORM類をcomultic.vidmultimultic.multimultimultimultimultic.multimultic.multic.multic.multimultic.multimultic.multimultiresourceディレクトリのファイルについて説明します。mapperはMybatis Generatorが生成したmapperファイルの保存場所です。生成後に対応するmappers.test 1またはmappers.test 2にコピーします。以下の3つのファイルのapperation.yml、appration-dev.yml、appration-multinersは多環境構成パラメータです。mybatis-config.xmlはORMをマッピングする時のデータタイプの対応関係で、最後のmysql-connector-java-51.34 jarはMybatis Generatorデータベースをリンクする時に使う駆動です。 appration.ymlの全コード: mybatis-config.xmlの全コード: は、2つのデータベースに対応するデータソースを作成し、2つのファイルは、comp.xdf.multi.datasourceの下に置かれています。ここで、DataSource 1 Configペアのすべてのコードは以下の通りです。 残りの仕事は、Mybatis Generatorを使ってORMクラスを生成し、対応するディレクトリにコピーして、自分でサービスクラスとコントローラを手動で作成して、 をテストすることです。
突っ込みを入れる
昨日はネットで「完璧」版のSpringBoot 2.0+Mybatisを使って多データソースを実現しましたが、実は一部のコードが欠けていました。被害は甚大で、時間がかかりすぎました。
開発環境、技術スタック
IDEAを使って、次の機能点を集めました。Spring Boot 2.0+Mybatis Generator+XMLはXMLの形式でデータベースとインタラクションします。注釈を使う方式ではなく、プロジェクトの後で複雑なSQL文に出会うのはまだXMLの形です。
プロジェクト作成手順
4.0.0
org.springframework.boot
spring-boot-starter-parent
2.1.8.RELEASE
com.xdf
multd
0.0.1-SNAPSHOT
multd
Demo project for Spring Boot
1.8
org.springframework.boot
spring-boot-starter-data-jdbc
org.springframework.boot
spring-boot-starter-web
org.mybatis.spring.boot
mybatis-spring-boot-starter
2.1.0
org.springframework.boot
spring-boot-devtools
runtime
true
mysql
mysql-connector-java
runtime
org.springframework.boot
spring-boot-configuration-processor
true
org.projectlombok
lombok
true
org.springframework.boot
spring-boot-starter-test
test
org.springframework.boot
spring-boot-maven-plugin
org.mybatis.generator
mybatis-generator-maven-plugin
true
true
spring:
profiles:
active: mult
appration-mult.ymlの全コード:server:
port: 8083
# mybatis generator
mybatis:
config-location: classpath:mybatis-config.xml
mapper-locations: classpath:mapper/*.xml
type-aliases-package: com.xdf.multd.model
spring:
datasource:
test1:
driver-class-name: com.mysql.cj.jdbc.Driver
jdbc-url: jdbc:mysql://localhost:3306/femis?userUnicode=true&characterEncoding=utf-8&serverTimezone=UTC
username: root
password: chanchaw
test2:
driver-class-name: com.mysql.cj.jdbc.Driver
jdbc-url: jdbc:mysql://localhost:3306/femisimg?userUnicode=true&characterEncoding=utf-8&serverTimezone=UTC
username: root
password: chanchaw
generatoConfig.xmlの全コード:
package com.xdf.multd.datasource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import javax.sql.DataSource;
@Configuration
@MapperScan(basePackages = "com.xdf.multd.dao.test1", sqlSessionTemplateRef = "test1SqlSessionTemplate")
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);
// XML
ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
try {
bean.setMapperLocations(resolver.getResources("classpath*:mappers/test1/*.xml"));
return bean.getObject();
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
@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) throws Exception {
return new SqlSessionTemplate(sqlSessionFactory);
}
}
DataSource 2 figのすべてのコードは以下の通りです。