SpringBoot如何使用JavaBean配置mybatis分页插件

系统环境:
SpringBoot(配置方式全部采用javaBean)
MyBatis
数据库:Oracle
以下是sqlSessionFactory的配置

clipboard.png

我想在现在的配置中增加mybatis的分页插件,经过一些尝试没有成功。
由于使用的javaBean的配置个人不太熟练,然后在开源的插件配置上都是xml的配置,哪位同学有经验请指教。
以下是我的一些参考资料

参考资料:
https://github.com/abel533/My...
http://blog.csdn.net/isea533/...

阅读 5.7k
3 个回答

PageHelper pageHelper这个没有实现Interceptor接口怎么给new Interceptor[]?
新版本中有个PageInterceptor类实现了Interceptor接口,这个时候赋值给new Interceptor[]才可行。

        // 设置MyBatis分页插件
        PageInterceptor pageInterceptor = new PageInterceptor();
        Properties properties = new Properties();
        properties.setProperty("helperDialect", "oracle");
        properties.setProperty("offsetAsPageNum", "true");
        properties.setProperty("rowBoundsWithCount", "true");
        pageInterceptor.setProperties(properties);
        bean.setPlugins(new Interceptor[]{pageInterceptor});
@Configuration
@EnableTransactionManagement
@MapperScan(basePackages = "com.example.schedule.dao")
@PropertySource("classpath:application.yml")
public class MyBatisConfig {

    @Autowired
    private Environment env;

    @Bean
    public DataSource dataSource() {
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setUrl(env.getProperty("druid.url"));
        dataSource.setUsername(env.getProperty("druid.username"));
        dataSource.setPassword(env.getProperty("druid.password"));
        dataSource.setInitialSize(Integer.parseInt(env.getProperty("druid.initial-size")));
        dataSource.setMinIdle(Integer.parseInt(env.getProperty("druid.min-idle")));
        dataSource.setMaxActive(Integer.parseInt(env.getProperty("druid.max-active")));
        dataSource.setTestOnBorrow(Boolean.valueOf(env.getProperty("druid.test-on-borrow")));
        try {
            dataSource.init();
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
        return dataSource;
    }

    @Bean
    public SqlSessionFactory sqlSessionFactory(DataSource dataSource) {
        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
        bean.setDataSource(dataSource);
        //分页插件
        PageHelper pageHelper = new PageHelper();
        Properties props = new Properties();
        props.setProperty("reasonable", "true");
        props.setProperty("supportMethodsArguments", "true");
        props.setProperty("returnPageInfo", "check");
        props.setProperty("params", "count=countSql");
        pageHelper.setProperties(props);
        //添加插件
        bean.setPlugins(new Interceptor[]{pageHelper});
        try {
            //指定基包
            bean.setTypeAliasesPackage(env.getProperty("mybatis.type-aliases-package"));
            bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("mapper/*.xml"));
            return bean.getObject();
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    @Bean
    public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) {
        return new SqlSessionTemplate(sqlSessionFactory);
    }

    @Bean
    public DataSourceTransactionManager transactionManager(DataSource dataSource) {
        DataSourceTransactionManager dataSourceTransactionManager = new DataSourceTransactionManager();
        dataSourceTransactionManager.setDataSource(dataSource);
        return dataSourceTransactionManager;
    }

}
    @Bean
    public SqlSessionFactoryBean sqlSessionFactory(DataSource dataSource, PageHelper pageHelper) throws IOException {
        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
        ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
        bean.setDataSource(dataSource);
        bean.setMapperLocations(resolver.getResources("classpath:mapper/*.xml"));
        bean.setPlugins(new Interceptor[]{pageHelper});
        bean.setConfiguration(mybatisSettings());
        return bean;
    }


    @Bean
    public PageHelper pageHelper() {
        PageHelper pageHelper = new PageHelper();
        Properties properties = new Properties();
        properties.setProperty("dialect", env.getProperty("mybatis.dialect"));
        pageHelper.setProperties(properties);
        return pageHelper;
    }
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题