Spring Boot 3(Maven)动态分页查询实战:从通用版到专业版的进阶之路

1. 从零开始:搭建你的Spring Boot 3分页查询环境

朋友们,今天咱们来聊聊一个后端开发里几乎每个项目都绕不开的话题:分页查询。你是不是也遇到过,数据量一大,页面加载就卡顿,用户体验直线下降?或者写分页逻辑时,总感觉代码又臭又长,每次新需求都要重写一遍?别担心,今天我就带你用Spring Boot 3,从最基础的通用版分页开始,一步步迭代升级到灵活高效的专业版动态分页。整个过程,我会把我踩过的坑、试过的好方法都分享给你,保证你听完就能上手。

咱们先得把“厨房”收拾好,也就是搭建开发环境。我这次用的是Spring Boot 3.3.7版本,这个版本目前很稳定,新特性也多。构建工具是Maven,数据库操作框架选MyBatis,数据库自然是MySQL。为了让代码更简洁,我还加上了Lombok这个神器。你可能会问,为什么不用JPA或者MyBatis-Plus?我的经验是,MyBatis给了你最大的灵活性,尤其是面对复杂、动态的查询条件时,它能让你像直接写SQL一样得心应手,这对于我们后面做动态分页至关重要。而Lombok呢,能帮你自动生成getter、setter这些样板代码,让实体类看起来清清爽爽。

具体怎么创建项目呢?如果你用的是IntelliJ IDEA,直接通过Spring Initializr创建就行。在依赖选择页面,勾选上“Spring Web”、“MyBatis Framework”、“MySQL Driver”和“Lombok”。这里有个小细节,我建议你手动检查一下pom.xml里MySQL驱动的版本,最好用8.0以上的版本,兼容性更好。环境搭好了,咱们就正式进入主题,先从人人都能看懂的通用版分页模板开始。

2. 通用版分页模板:快速实现基础数据分页

2.1 设计一个“身兼两职”的实体类

分页查询,第一步就是设计实体类。但咱们这个实体类有点特别,它得“身兼两职”。我把它叫做RequestPageEntity。第一份工作,是接收从数据库查询回来的数据行,比如用户的id、用户名这些字段。第二份工作,就更关键了,它要负责把分页查询需要的参数——也就是从第几条开始查(offset)、每页查多少条(pageSize)——传递给MyBatis的SQL映射。

来看看我是怎么写的:

import lombok.Data;
import java.util.Date;

@Data
public class RequestPageEntity {
    // 这部分字段对应数据库表里的列,用于接收查询结果
    private Integer id;
    private String username;
    private Integer roleId;
    private Date lastLogin;

    // 这部分字段是分页参数,用于传递给SQL
    private Integer pageNum;  // 当前页码
    private Integer pageSize; // 每页大小
}

这里我用了@Data注解,这是Lombok提供的,它会帮我们自动生成所有字段的getter、setter方法,还有toString()equals()hashCode()方法,非常省事。注意看,我把分页参数命名得更清晰了,pageNumpageSize,这比原文里的intoMax好理解多了吧?而且字段类型用了Integer而不是int,这样可以避免基本类型默认值0可能带来的歧义。

2.2 编写Mapper接口与XML映射文件

实体类准备好了,接下来就是MyBatis的核心部分:Mapper。首先创建一个Mapper接口RequestPageMapper

import org.apache.ibatis.annotations.Mapper;
import org.example.mybatis.entity.RequestPageEntity;
import java.util.List;

@Mapper
public interface RequestPageMapper {
    List<RequestPageEntity> selectByPage(RequestPageEntity entity);
}

接口里就一个方法selectByPage,它接收我们刚才那个“双功能”实体类作为参数,返回一个实体类的列表。@Mapper注解必不可少,它告诉Spring Boot:“这是一个MyBatis的映射接口,你得把它管理起来。”当然,你也可以在配置类里用@MapperScan批量扫描,但对于新手,我建议先用@Mapper一个个标清楚,不容易出错。

接口有了,SQL语句写在哪呢?这就轮到XML映射文件出场了。在resources目录下,创建一个对应的文件夹结构(比如mapper/),然后新建RequestPageMapper.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">
<mapp
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值