mybatis-spring を使用して MyBatis プロジェクトをセットアップしています。実際の SQL 以外のすべてに Java 構成を使用したいと考えています (マッパー インターフェイスに @Select アノテーションがないなど)。
次のセットアップがありますが、これは機能しますが、@Select を使用します。
データソース Bean:
@Configuration
public class DataSourceConfig {
@Bean
public DataSource devDataSource() {
... set up data source
return dataSource;
}
}
MyBatis Bean:
@Configuration
@MapperScan("myproject.persistence")
public class MyBatisConfig {
@Autowired
DataSource dataSource;
@Bean
public SqlSessionFactory sqlSessionFactory() throws Exception {
final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(dataSource);
return sessionFactory.getObject();
}
}
マッパー インターフェイス:
package myproject.persistence;
public interface PersonMapper {
@Select("SELECT * FROM PersonTable WHERE PersonTable.LAST_NAME = #{lastName}")
List<Person> getByLastName(@Param("lastName") String lastName);
}
サービス:
@Service
public class PeopleService {
@Autowired
PersonMapper personMapper;
public List<Person> getByLastName(final String lastName) {
return personMapper.getByLastName(lastName);
}
}
@Select アノテーションの SQL ステートメントを XML ファイルに移動する方法を探しています (ただし、すべての Bean の Java 構成を維持し、引き続き @MapperScan を使用します)。私が探しているミッシング リンクは、SQL ステートメントを定義する XML "マッパー" とマッパー インターフェイスをペアにする方法です。