LoginSignup
0
0

More than 5 years have passed since last update.

Spring MyBatis @MapperScan Multiple

Last updated at Posted at 2018-09-20

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 {
}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0