本文是动态多数据源集成PageHelper分页工具的填坑记录
动态多数据源见SpringBoot+MyBatis 动态数据源(内附项目地址)
看了很多资料,都是用xml的方式进行配置的,感觉比较繁琐。
那这里我在方法中去进行配置
早起的4.0版本是这样配置的
PageHelper pageHelper = new PageHelper();
Properties properties = new Properties();
properties.setProperty("dialect", "mysql");
properties.setProperty("reasonable", "true");
properties.setProperty("supportMethodsArguments", "true");
properties.setProperty("pageSizeZero", "true");
pageHelper.setProperties(properties);
sqlSessionFactoryBean.setPlugins(new Interceptor[]{pageHelper});
那在4.0之后的版本进行了更新,dialect改成了helperDialect,而且也可以不写,PageHelper会自动识别连接的数据库类型。
同时org.apache.ibatis.plugin.Interceptor的参数也不能再传pageHelper了,提示是类型不匹配
那我们得自己来个新的写法了
@Bean
public SqlSessionFactoryBean sqlSessionFactoryBean() throws Exception {
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(dynamicDataSource());
//PageHelper pageHelper = new PageHelper();
Properties properties = new Properties();
//properties.setProperty("helperDialect", "mysql");
properties.setProperty("reasonable", "true");
properties.setProperty("supportMethodsArguments", "true");
properties.setProperty("pageSizeZero", "true");
//pageHelper.setProperties(properties);
PageInterceptor interceptor = new PageInterceptor();
interceptor.setProperties(properties);
sqlSessionFactoryBean.setPlugins(new Interceptor[]{interceptor});
sqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/*Mapper.xml"));
return sqlSessionFactoryBean;
}
最后就可以使用了,例:
@ApiOperation(value="获取用户列表",notes = "获取所有用户列表", httpMethod = "GET")
@RequestMapping("/getUsers")
public ResultData getUsers() {
PageHelper.startPage(1,3);
ResultData resultData = new ResultData();
List<ResultUser> list = userServiceImpl.getAllUsers();
resultData.setCount(list.size());
resultData.setData(list);
return resultData;
}