網(wǎng)上爬坑一上午 很多沒說明到位 分享下自己解決過程.
有可能出錯地點(diǎn):
1.spring boot 使用 @Configuration 注解 java類 配置方式 沒設(shè)置上插件 interceptor
2.沒設(shè)置數(shù)據(jù)庫方言 DialectType
3.引入了多個分頁插件
4.代碼里面重復(fù)實(shí)例化了多個page
@Configuration
@MapperScan("com.**.mapper")
@EnableTransactionManagement
public class MybatisDataSourceConfig {
private static final Logger log = LoggerFactory.getLogger(MybatisDataSourceConfig.class);
private static final String MAPPER_LOCATION = "classpath*:mybatis/**/*.xml";
@Value("${mybatis-plus.global-config.dbColumnUnderline}")
private Boolean dbColumnUnderline;
@Autowired
@Qualifier("mybatisDataSource")
private DataSource mybatisDataSource;
@Bean(name = "mybatisTransactionManager")
public DataSourceTransactionManager masterTransactionManager() {
return new DataSourceTransactionManager(mybatisDataSource);
}
@Bean(name = "mybatisSessionFactory")
public SqlSessionFactory mybatisSessionFactory() throws Exception {
//解決查詢返回結(jié)果含null沒有對應(yīng)字段值問題
MybatisConfiguration configuration = new MybatisConfiguration();
configuration.setCallSettersOnNulls(true);
//配置slq打印日志
configuration.setLogImpl(org.apache.ibatis.logging.stdout.StdOutImpl.class);
//峰駝轉(zhuǎn)換
configuration.setMapUnderscoreToCamelCase(dbColumnUnderline);
//注意把SqlSessionFactory 換成mybitaisPlus的 否則使用自帶方法會報(bào)錯
MybatisSqlSessionFactoryBean sessionFactory = new MybatisSqlSessionFactoryBean();
sessionFactory.setDataSource(mybatisDataSource);
//mybatis對應(yīng)spring boot環(huán)境的配置
sessionFactory.setVfs(SpringBootVFS.class);
//xml掃描路徑
sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(MybatisDataSourceConfig.MAPPER_LOCATION));
//配置實(shí)體包路徑
sessionFactory.setTypeAliasesPackage("com.**.entity");
//配置自定義類型轉(zhuǎn)換 類包路徑
sessionFactory.setTypeHandlersPackage("com.**.convert");
//添加分頁插件 注意要添加到插件很多沒說明這一步
Interceptor[] interceptor = {paginationInterceptor()};
sessionFactory.setPlugins(interceptor);
sessionFactory.setConfiguration(configuration);
return sessionFactory.getObject();
}
@Bean
public SqlSessionTemplate sqlSessionTemplate() throws Exception {
return new SqlSessionTemplate(mybatisSessionFactory());
}
/**
* 分頁插件
*/
@Bean
public PaginationInterceptor paginationInterceptor() {
PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
paginationInterceptor.setDialectType("mysql");
// paginationInterceptor.setLimit(你的最大單頁限制數(shù)量,默認(rèn) 500 條,小于 0 如 -1 不受限制);
return paginationInterceptor;
}
成功調(diào)用后sql 語句會添加 分頁部分

image.png