SpringBoot从小白到精通(十六)使用pagehelper和mybatis-plus的实现分页查询功能

 

mybatis+pagehelper

首先在pom.xml加入mybaits和pagehelper的依赖

<!-- 分页查询 -->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.4.6</version>
        </dependency>
		<dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <scope>runtime</scope>
        </dependency>
		<dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.3.0</version>
        </dependency>

然后在yml中加入

server:
  port: 9090
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/liantong_test?useUnicode=true&useSSL=false&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
    username: root
    password: 123456

mybatis:
  mapper-locations: classpath:mapper/*.xml  #扫描所有mybatis的xml文件
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    map-underscore-to-camel-case: true  #自动驼峰转换

  level:
    root: info
    org.apache.ibatis.session: warn
    org.mybatis: warn

pagehelper:
  helper-dialect: mysql
  reasonable: true
  support-methods-arguments: true

image
然后还有一个地方:就是这个@MapperScan("com.example.demo.mapper")

@SpringBootApplication
@MapperScan("com.example.demo.mapper")
public class Demo1Application {

    public static void main(String[] args) {
        SpringApplication.run(Demo1Application.class, args);
    }

}

之后就是代码:
controller

package com.example.demo.controller;


import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;

import com.baomidou.mybatisplus.core.metadata.IPage;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.demo.config.ResponseResult;
import com.example.demo.entity.Student;
import com.example.demo.service.IStudentService;

import com.github.pagehelper.PageHelper;

import com.github.pagehelper.PageInfo;
import org.springframework.data.domain.Example;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.List;
import java.util.Map;

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author lishipu
 * @since 2024-12-16
 */
@RestController
@RequestMapping("/student")
public class StudentController {
    @Resource
    private IStudentService iStudentService;

    //用pagehelper测试分页查询
    @PostMapping("/page")
    public ResponseResult<PageInfo<Student>> findPage1(@RequestBody Student student,
                                                   @RequestParam Integer pageNum,@RequestParam Integer pageSize){
        System.out.println("我爱你"+pageNum+" "+pageSize);
        PageInfo<Student> pageInfo = iStudentService.testStudentsPage(student, pageNum, pageSize);

        return ResponseResult.success(pageInfo);
    }
}


IStudentService

package com.example.demo.service;

import com.example.demo.entity.Student;
import com.baomidou.mybatisplus.extension.service.IService;
import com.github.pagehelper.PageInfo;

import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author lishipu
 * @since 2024-12-16
 */
public interface IStudentService extends IService<Student> {

    PageInfo<Student> testStudentsPage(Student student, Integer pageNum, Integer pageSize);
}

StudentServiceImpl

package com.example.demo.service.impl;

import com.example.demo.entity.Student;
import com.example.demo.mapper.StudentMapper;
import com.example.demo.service.IStudentService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author lishipu
 * @since 2024-12-16
 */
@Service
public class StudentServiceImpl extends ServiceImpl<StudentMapper, Student> implements IStudentService {
    @Autowired
    private StudentMapper studentMapper;


    @Override
    public PageInfo<Student> testStudentsPage(Student student, Integer pageNum, Integer pageSize) {
        PageHelper.startPage(pageNum, pageSize);
        List<Student> students = studentMapper.findStudents(student);
        return new PageInfo<>(students);
    }
}

然后就是StudentMapper

package com.example.demo.mapper;

import com.example.demo.entity.Student;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * <p>
 *  Mapper 接口
 * </p>
 *
 * @author lishipu
 * @since 2024-12-16
 */
public interface StudentMapper extends BaseMapper<Student> {


    List<Student> findStudents(Student student);
}

之后就是studentmapper.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.example.demo.mapper.StudentMapper">

    <select id="findStudents" resultType="com.example.demo.entity.Student">
        SELECT *
        FROM t_student
        WHERE 1=1
        <if test="stuName != null and stuName.trim() != ''">
            AND stu_name LIKE CONCAT('%', #{stuName}, '%')
        </if>
        <if test="stuId != null">
            AND stu_id = #{stuId}
        </if>
    </select>

</mapper>

用mabits-plus实现分页查询

前面有mabits-plus怎么怎么构建的,所以直接说怎么分页查询

@PostMapping("/page")
    public ResponseResult<IPage> findPage(@RequestBody Map<String, Object> params) {
        Integer pageNum = (Integer) params.get("pageNum");
        Integer pageSize = (Integer) params.get("pageSize");
        String stuName = (String) params.getOrDefault("stuName", "");

        QueryWrapper<Student> queryWrapper = new QueryWrapper<>();
        if (!"".equals(stuName)) {
            queryWrapper.like("stu_name", stuName);
        }
        queryWrapper.orderByDesc("stu_id");

        return ResponseResult.success(iStudentService.page(new Page<>(pageNum, pageSize),queryWrapper));
    }

然后这个前端就是直接生成一个

posted @   lipu123  阅读(18)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
历史上的今天:
2020-01-07 某点关于直线对称的点
2020-01-07 次大值
2020-01-07 斐波那契打表
2020-01-07 dfs(学姐的红包)
2020-01-07 排列组合(组合数)
2020-01-07 进制转换
点击右上角即可分享
微信分享提示