mybatis-plus分页设置无效解决方法
mybatis-plus分页设置无效解决方法mybatis-plus自带分页功能,这样可以省去很多麻烦,也不用再去引入其他jar包。IPage分页的使用@Overridepublic IPage<User> getLimit() {// 参数一:当前页面 currentPage参数二:每页展示数 pageSizePage<User> page = new Page<&
·
mybatis-plus分页设置无效解决方法
mybatis-plus自带分页功能,这样可以省去很多麻烦,也不用再去引入其他jar包。
IPage分页的使用
@Override
public IPage<User> getLimit() {
// 参数一:当前页面 currentPage 参数二:每页展示数 pageSize
Page<User> page = new Page<>(1, 3);
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.like("realname", "高");
IPage<User> userIPage = userMapper.selectPage(page, wrapper);
return userIPage;
}
如上代码一顿操作后,结果发现并没有分页成功。
这是因为我们缺少了PaginationInterceptor的配置。
单数据源下PaginationInterceptor的配置
package com.gyt.demo.common.config;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* @author gaoyuntao
* @date 2020/12/24 15:35
**/
@Configuration
@ConditionalOnClass(value = {PaginationInterceptor.class})
public class MyBatisPlusPageConfig {
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
}
新建一个MyBatisPlusPageConfig类,简单配置完后就可以了。
多数据源下PaginationInterceptor的配置
如果你的项目是存在多个数据源,这里提供一种配置方式,以供参考:
package com.gyt.demo.common.config;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import com.baomidou.mybatisplus.extension.plugins.pagination.optimize.JsqlParserCountOptimize;
import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
import org.apache.ibatis.plugin.Interceptor;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import javax.sql.DataSource;
/**
* @author gaoyuntao
* @date 2020/10/10 14:10
**/
@Configuration
@MapperScan(basePackages = "com.gyt.demo.mapper.db1"
,sqlSessionTemplateRef = "SqlSessionTemplate"
,sqlSessionFactoryRef = "SqlSessionFactory")
public class DataSourceConf {
@Bean(name = "DataSource")
@Primary
@ConfigurationProperties(prefix = "spring.datasource.db1")
public DataSource DataSource(){
return DataSourceBuilder.create().build();
}
@Bean("SqlSessionFactory")
@Primary
public SqlSessionFactory SqlSessionFactory() throws Exception {
// 一般情况下使用SqlSessionFactotyBean 即可(包括使用mybatis-generator)
// SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
// 当使用myBatis-plus的时候需要使用 MybatisSqlSessionFactoryBean
MybatisSqlSessionFactoryBean sqlSessionFactoryBean = new MybatisSqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(DataSource());
sqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/db1/*.xml"));
// Mybatis-plus 分页查询设置
Interceptor[] plugins = new Interceptor[1];
plugins[0] = MpPaginationInterceptor();
sqlSessionFactoryBean.setPlugins(plugins);
return sqlSessionFactoryBean.getObject();
}
@Bean(name ="TxMananger")
@Primary
public DataSourceTransactionManager TxMananger() {
return new DataSourceTransactionManagerDataSource());
}
@Bean(name ="SqlSessionTemplate")
@Primary
public SqlSessionTemplate SqlSessionTemplate() throws Exception {
return new SqlSessionTemplate(SqlSessionFactory());
}
/*
myBatis-plus 分页查询配置
*/
@Bean(name="MpPaginationInterceptor")
public PaginationInterceptor MpPaginationInterceptor() {
PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
paginationInterceptor.setLimit(300);
paginationInterceptor.setDialectType(DbType.MYSQL.getDb());
paginationInterceptor.setCountSqlParser(new JsqlParserCountOptimize(true));
return paginationInterceptor;
}
}
如上代码,自定义一个PaginationInterceptor的Bean,并插入到SqlSessionFactory 中即可。
关于MyBatis-plus多数据源配置请移步:https://blog.csdn.net/Mr_going/article/details/111590622
更多推荐
已为社区贡献1条内容
所有评论(0)