如果需要用到Mybatis-Plus里面BaseMapper的默认实现的一些方法,而不通过mapper.xml的方式自定义方法,那么在构建SqlSessionFactory的时候需要注意应该通过Mybatis-Plus中的MybatisSqlSessionFactoryBean来获取SqlSessionFactory,使用Mybatis中的SqlSeesionFactoryBuilder.build()方法构建的时候会出现无法调用selectList()等默认方法的异常。
public interface UserMaper extends BaseMapper<User> {
}
JdbcTransactionFactory transactionFactory = new JdbcTransactionFactory();
// dataSource是javax.sql包中的DataSource接口
Environment environment = new Environment("development", transactionFactory, dataSource);
// 这里需要使用MybatisConfiguration,因为后面的FactoryBean只能接收这个类
MybatisConfiguration configuration = new MybatisConfiguration(environment);
// 这里将需要用到的Mapper手动添加
configuration.add(UserMapper.class)
MybatisSqlSessionFactoryBean sqlSessionFactoryBean = new MybatisSqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(dataSource);
sqlSessionFactoryBean.setConfiguration(configuration);
SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBEan.getObject();
后来发现使用SqlSeesionFactoryBuilder.build()
来构建也没有问题,Configuration不能使用ibatis的Configuration
,需要使用MybatisConfiguration
的配置类。