Mybatis-Plus分页查询

分页插件

1、调用通用mapper提供的selectPage分页方法;
2、自定义查询方法使用分页功能:
    - mapper接口中的方法返回值是Page<User>类型
    - 第一个参数要求是Page<User>类型
3、映射文件中可以使用sql标签定义公共sql片段,在要使用的地方使用include标签进行引用。

application.yml

server:
  port: 8080

  #数据源配置
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/mybatisplus212?characterEncoding=utf-8&serverTimezone=UTC
    username: root
    password: 123456

    type: com.zaxxer.hikari.HikariDataSource
mybatis-plus:
  configuration:
    #配置日志信息
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    #配置mapper映射文件的位置,默认在类路径/mapper*.xml
  mapper-locations: classpath:/mapper/*.xml
  #设置指定包下所有类设置类型别名
  type-aliases-package: com.dzqc.pojo
  global-config:
    db-config:
      #统一设置实体类对应的数据表的默认前缀
      table-prefix: t_
      #设置主键自增
      id-type: auto

创建一个MyBatisPlusConfig类,先建一个包config

package com.dzqc.config;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MyBatisPlusConfig {
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor(){
        MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
        //添加分页插件
        mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        //添加乐观锁插件
        mybatisPlusInterceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
        return mybatisPlusInterceptor;
    }
}

测试类Page

package com.dzqc;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dzqc.mapper.UserMapper;
import com.dzqc.pojo.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.List;

@SpringBootTest
public class PageTest {
    @Autowired
    private UserMapper userMapper;
    @Test
    public void testpage(){
        //设置分页参数
        Page<User> page = new Page<>(1,2);
        //调用分页查询方法
        userMapper.selectPage(page,null);
        List<User> records = page.getRecords();
        records.forEach(System.out::println);

        System.out.println("总页数:"+page.getPages());
        System.out.println("总记录数:"+page.getTotal());
        System.out.println("当前页码:"+page.getCurrent());
        System.out.println("每页记录数:"+page.getSize());
        System.out.println("是否有上一页:"+page.hasPrevious());
        System.out.println("是否有下一页:"+page.hasNext());
    }
    @Test
    public void testPage2(){
        //设置分页参数
        Page<User> page = new Page<>(1, 2);
        //调用自定义分页查询方法
        userMapper.selectPageByAge(page,20);
        //获取分页查询结果
        List<User> records = page.getRecords();
        records.forEach(System.out::println);

        System.out.println("总页数:"+page.getPages());
        System.out.println("总记录数:"+page.getTotal());
        System.out.println("当前页码:"+page.getCurrent());
        System.out.println("每页记录数:"+page.getSize());
        System.out.println("是否有上一页:"+page.hasPrevious());
        System.out.println("是否有下一页:"+page.hasNext());
    }
}

测试结果

 

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
mybatis-plus 是基于 mybatis 的增强工具,提供了很多方便实用的功能,其中包括分页查询。分页查询通常用于处理海量数据时,对数据进行分页展示,以优化系统性能。 使用 mybatis-plus 进行分页查询需要注意以下几点: 1. 在 mapper 接口中定义方法时需要使用 IPage<T> 类型的参数,其中 T 为实体类。 2. 在 service 层调用 mapper 中的分页查询方法时,需要传入当前页数和每页显示的数量,可以通过 Page<T> 对象来实现。 3. 在 mapper 映射文件中使用 select 标签进行查询,需要按照 mybatis-plus 提供的语法结构来书写,主要包括表名、查询条件、分页条件等。 例如,以下是使用 mybatis-plus 进行分页查询的一个示例: 在 mapper 中定义方法: ``` public interface UserMapper extends BaseMapper<User> { IPage<User> selectUserByPage(Page<?> page, @Param("username") String username); } ``` 在 service 中实现分页查询: ``` @Override public IPage<User> getUserByPage(int pageNum, int pageSize, String username) { // 创建分页对象 Page<User> page = new Page<>(pageNum, pageSize); // 调用 mapper 方法进行分页查询 return userMapper.selectUserByPage(page, username); } ``` 在 mapper 映射文件中编写查询语句: ``` <select id="selectUserByPage" resultMap="userResultMap"> select * from user <where> <if test="username != null and username != ''"> and username like concat('%', #{username}, '%') </if> </where> order by id desc </select> ``` 通过以上步骤,就可以实现在 mybatis-plus 中进行分页查询并展示数据。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

kongbaidaima

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

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

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

打赏作者

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

抵扣说明:

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

余额充值