本文是動態多數據源集成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;
}