我正在使用 mybatis-spring 建立一个 MyBatis 项目,并且我想对除实际 SQL 之外的所有内容使用 Java 配置(例如,映射器接口中没有 @Select 注释)。
我有以下设置,它有效,但它使用@Select:
数据源 Bean:
@Configuration
public class DataSourceConfig {
@Bean
public DataSource devDataSource() {
... set up data source
return dataSource;
}
}
MyBatis Beans:
@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“映射器”配对的方法。