Spring、MybatisPlus分页功能,PaginationInterceptor过时处理,分页语句示例

基于SpringBoot、MybatisPlus创建动态数据源,增加分页功能。

关于创建动态数据源参见:Spring jdbc ,druid动态数据源、固定容量Map_as350144的博客-CSDN博客_druid动态数据源

核心代码就是在MybatisPlus中增加分页插件

PaginationInterceptor 已过时,可用 PaginationInnerInterceptor 代替。

依赖

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus</artifactId>
    <version>3.4.1</version>
</dependency>

代码

注册分页插件

    /**
     * 注册分页插件
     * @return
     */
   @Bean
    public MybatisPlusInterceptor paginationInterceptor(){
        MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
        PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor();
        // 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求  默认false
        paginationInnerInterceptor.setOverflow(false);
        //设置最大单页限制数量,默认 500 条,-1 最大999条
        paginationInnerInterceptor.setMaxLimit(-1L);
        mybatisPlusInterceptor.addInnerInterceptor(paginationInnerInterceptor);
        return mybatisPlusInterceptor;
    }

    /**
     * 注册sqlSession工厂类
     * @return
     * @throws Exception
     */
    @Bean
    public SqlSessionFactory sqlSessionFactory() throws Exception {
        MybatisSqlSessionFactoryBean factoryBean = new MybatisSqlSessionFactoryBean();
        factoryBean.setDataSource(this);
        factoryBean.setConfigLocation(new ClassPathResource("mybatis/mybatis-config.xml"));
        ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
        factoryBean.setMapperLocations(resolver.getResources("mapper/*.xml"));
        factoryBean.setTypeAliasesPackage("com.yourpackage.po");
        //添加分页插件
        factoryBean.setPlugins(paginationInterceptor());
        return factoryBean.getObject();
    }

使用分页查询

// Service

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

@Service
public class QueryService {
    @Autowired
    private Dao dao;

    public IPage<List<Map<String, Object>>> listData(String querySQL){
        //分页查询数据
        Integer pageNo = 1;
        Integer pageSize = 20;
        IPage<List<Map<String, Object>>> iPage = dao.selectDataWithPage(new Page<>( (pageNo - 1) * pageSize, pageSize), querySQL);

        //分页数据
        List records = iPage.getRecords();
        //总数
        long total = iPage.getTotal();
        return iPage;
    }
}   
// Dao

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

public interface Dao {

    //分页查询数据
    IPage<List<Map<String, Object>>> selectDataWithPage(Page<T> page, @Param("querySQL") String querySQL);

}
// Dao.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yourpackage.Dao">

    <select id="selectDataWithPage" resultType="java.util.LinkedHashMap">
        ${querySQL}
    </select>

</mapper>

各个数据库分页语句示例

-- MySQL
select *  from person limit 0,10;

-- Oracle
SELECT *
FROM (SELECT TMP.*, ROWNUM ROW_ID
      FROM (SELECT * FROM PERSON) TMP
      WHERE ROWNUM <= 10)
WHERE ROW_ID > 0;


-- click house
select *  from person limit 0,10;


-- SQL server
WITH selectTemp AS (SELECT TOP 100 PERCENT ROW_NUMBER() OVER (ORDER BY age ) as __row_number__, *
                    FROM (SELECT * from person) as tb0
)
SELECT *
FROM selectTemp
WHERE __row_number__ BETWEEN 1 AND 10
ORDER BY __row_number__;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Mybatis-Plus 是一个 Mybatis 的增强工具,提供了很多实用的功能,其中包括分页查询。 Mybatis-Plus 的分页查询使用 Page 类来实现。以下是使用 Mybatis-Plus 进行分页查询的步骤: 1. 引入 Mybatis-Plus 和分页插件的依赖: ```xml <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.2</version> </dependency> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.3.0</version> </dependency> ``` 2. 在 Mybatis-Plus 的配置文件中开启分页插件: ```java @Configuration public class MybatisPlusConfig { @Bean public PaginationInterceptor paginationInterceptor() { return new PaginationInterceptor(); } } ``` 3. 在 Mapper 中定义分页查询方法: ```java public interface UserMapper extends BaseMapper<User> { List<User> selectPage(Page<User> page, @Param("name") String name); } ``` 4. 在 Service 中调用分页查询方法: ```java @Service public class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; @Override public IPage<User> selectPage(Page<User> page, String name) { return userMapper.selectPage(page, name); } } ``` 其中,`Page` 类是 Mybatis-Plus 提供的分页参数类,`IPage` 接口是 Mybatis-Plus 提供的分页结果类,`BaseMapper` 是 Mybatis-Plus 提供的基础 Mapper 接口。 以上就是使用 Mybatis-Plus 进行分页查询的基本步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

as350144

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值