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
然后还有一个地方:就是这个@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));
}
然后这个前端就是直接生成一个
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需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 进制转换