Spring と MyBatis を使用してるプロジェクトで ExecutorType をかえて MapperScan を定義したくなった
DataSorce は同じのを使用して ExecutorType だけ BATCH, REUSE に変更する
BATCH の 複数更新 を実行する処理に適用、REUSE はそれ以外に適用
MapperScan を同一の class に定義できた
SqlSessionConfig.java
@Configuration
public class SqlSessionConfig {
@Bean
public SqlSessionFactory sqlSessionFactory(DataSource datasource) throws Exception {
SqlSessionFactoryBean sqlSessionFactory = new SqlSessionFactoryBean();
sqlSessionFactory.setDataSource(datasource);
return (SqlSessionFactory) sqlSessionFactory.getObject();
}
@Bean(name = "defaultSqlSessionTemplate")
public SqlSessionTemplate sqlSessionFactory(SqlSessionFactory sqlSessionFactory) throws Exception {
return new SqlSessionTemplate(sqlSessionFactory);
}
@Bean(name = "reuseSqlSessionTemplate")
public SqlSessionTemplate sqlSessionFactory(SqlSessionFactory sqlSessionFactory) throws Exception {
return new SqlSessionTemplate(sqlSessionFactory, ExecutorType.REUSE);
}
@Bean(name = "batchSqlSessionTemplate")
public SqlSessionTemplate sqlSessionFactory(SqlSessionFactory sqlSessionFactory) throws Exception {
return new SqlSessionTemplate(sqlSessionFactory, ExecutorType.BATCH);
}
}
@MapperScan(basePackages = "jp.co.sample.mapper.defaul", sqlSessionTemplateRef = "defaultSqlSessionTemplate")
class DefaultMapperScan {
}
@MapperScan(basePackages = "jp.co.sample.mapper.reuse", sqlSessionTemplateRef = "reuseSqlSessionTemplate")
class ReuseMapperScan {
}
@MapperScan(basePackages = "jp.co.sample.mapper.batch", sqlSessionTemplateRef = "batchSqlSessionTemplate")
class BatchMapperScan {
}