Spring Boot (maven)分页4.0.2版本 专业版- 模板化最终版(测试)

news/2025/2/23 15:27:45
前言:

通过实践而发现真理,又通过实践而证实真理和发展真理。从感性认识而能动地发展到理性认识,又从理性认识而能动地指导革命实践,改造主观世界和客观世界。实践、认识、再实践、再认识,这种形式,循环往复以至无穷,而实践和认识之每一循环的内容,都比较地进到了高一级的程度。

正片

java">@Data
public class RequestPageEntity {

    /**
     * id,username,roleId,lastLogin 数据库表
     * into,Max 分页查询映射参数
     */

    private int id;
    private String username;
    private int roleId;
    private Date lastLogin;
    private Integer into;
    private int Max;

    public Integer getPageBegin(){
        return (this.into - 1) * Max;
    }
}

这是专业版 · 改的实体类模板

由数据库表和分页参数组成

那我们每做一次分页,岂不是都要写数据库表和分页参数

最终测试版,首先优化的就是这个

我们将数据库表和分页分成两个实体类

java">@Data
public class RequestPageEntity {

    /**
     * 统一分页参数实体类
     */
    
    private Integer into;
    private int Max;

    public Integer getPageBegin(){
        return (this.into - 1) * Max;
    }
}
java">@Data
public class UserPageEntity extends RequestPageEntity{

    /**
     * 数据库实体类
     */
    
    private int id;
    private String username;
    private int roleId;
    private Date lastLogin;

}

我们只需要通过继承,就可以省去分页实体类那部分代码,还能获取分页实体类的属性,一举三得

这是剩余内容的模板

真 · 正片(九步法实现分页功能)

第一步:创建基础分页实体类(用于java映射sql的参数传输OR简单来说,这个类,提供了对sql语句参数的支持)

java">import lombok.Data;

@Data
public class RequestPageEntity {

    /**
     * 统一分页参数实体类
     */

    private Integer into;
    private int Max;

    public Integer getPageBegin(){
        return (this.into - 1) * Max;
    }
}

第二步:创建需要分页查询的实体类

java">import lombok.Data;

@Data
public class xxx类 extends RequestPageEntity{

    /**
     * 数据库表实体类
     * 只需要继承,就可以省去一大部分的代码
     * 具体内容实现在下
     */
}

第三步:创建java映射层 简称 mapper层

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

@Mapper
public interface xxxMapper {
    
    List<xxxEntity> requestPage(xxxEntity xxx);
}

第四步:创建mybatis映射器(用于连接Java和Sql)

java"><?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="java映射具体路径,mapper层具体映射">

</mapper>

第五步:创建java和sql的具体映射(java方法 对应 sql语句)

    <select id="java映射分页方法名" resultType="具体实体类路径">
        select * from 数据库表 limit #{pageBegin},#{Max}
#         注意大小写,getBig在进入mybatis映射器中会变成big
    </select>

第六步:创建业务层

java">import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;

@Service
public class UserPageServer {
    @Resource
    xxxMapper xxxMapper;

    public List<xxxEntity> USerPage(xxxEntity xxx){
        return xxxMapper.requestPage(xxx);
    }
}

第七步:创建控制层

java">@RestController
public class test {
    
    @Resource
    xxxService xxxService 

    
    @GetMapping("/page")    
    public String SelectByAll(xxxEntity xxx){
        return "打印成功" + xxxService.查询方法(xxx);
    }
}

第八步:测试

第九步:完成分页功能

实战

采用的示例数据库表

第一步:复制不变(你想变也可以)

java">​
import lombok.Data;

@Data
public class RequestPageEntity {

    /**
     * 统一分页参数实体类
     */

    private Integer into;
    private int Max;

    public Integer getPageBegin(){
        return (this.into - 1) * Max;
    }
}

​

实战

java">import lombok.Data;

@Data
public class RequestPageEntity {

    /**
     * 统一分页参数实体类
     */

    private Integer into;
    private int Max;

    public Integer getPageBegin(){
        return (this.into - 1) * Max;
    }
}

第二步:创建实体类并继承统一分页实体类

java">import lombok.Data;

@Data
public class xxx类 extends RequestPageEntity{

    /**
     * 数据库表实体类
     * 只需要继承,就可以省去一大部分的代码
     * 具体内容实现在下
     */
}

实战

java">import lombok.Data;

import java.util.Date;

@Data
public class UserPageEntity extends RequestPageEntity{


    /**
     * 数据库表实体类
     * 只需要继承,就可以省去一大部分的代码
     * 具体内容实现在下
     */

    private int id;
    private String username;
    private int roleId;
    private Date lastLogin;

}

第三步:创建java映射层 简称 mapper层

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

@Mapper
public interface xxxMapper {
    
    List<xxxEntity> requestPage(xxxEntity xxx);
}

实战

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

@Mapper
public interface RequestPageMapper {
    
    List<UserPageEntity> requestPage(UserPageEntity user);
}

第四步:创建mybatis映射器(用于连接Java和Sql)

java"><?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="java映射具体路径,mapper层具体映射">

</mapper>

实战

java"><?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="org.example.mybatis.Mapper.RequestPageMapper">


</mapper>

第五步:创建java和sql的映射

    <select id="java映射分页方法名" resultType="具体实体类路径">
        select * from 数据库表 limit #{pageBegin},#{Max}
#         注意大小写,getBig在进入mybatis映射器中会变成big
    </select>
<mapper namespace="org.example.mybatis.Mapper.RequestPageMapper">
    <select id="requestPage" resultType="org.example.mybatis.entity.UserPageEntity">
        select * from user limit #{pageBegin},#{Max}
#         注意大小写,getBig在进入mybatis映射器中会变成big
    </select>

完整的映射

<?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="org.example.mybatis.Mapper.RequestPageMapper">
    <select id="requestPage" resultType="org.example.mybatis.entity.UserPageEntity">
        select * from user limit #{pageBegin},#{Max}
#         注意大小写,getBig在进入mybatis映射器中会变成big
    </select>

</mapper>

第六步:创建业务

java">import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;

@Service
public class UserPageServer {
    @Resource
    xxxMapper xxxMapper;

    public List<xxxEntity> USerPage(xxxEntity xxx){
        return xxxMapper.requestPage(xxx);
    }
}

实战

java">@Service
public class UserPageServer {
    @Resource
    RequestPageMapper requestPageMapper;

    public List<UserPageEntity> USerPage(UserPageEntity userPageEntity){
        return requestPageMapper.requestPage(userPageEntity);
    }
}

第七步:创建控制类

java">@RestController
public class test {
    
    @Resource
    xxxService xxxService 

    
    @GetMapping("/page")    
    public String SelectByAll(xxxEntity xxx){
        return "打印成功" + xxxService.查询方法(xxx);
    }
}

实战

java">@RestController
public class test {

    @Resource
    UserPageServer userPageServer;


    @GetMapping("/page")
    public String SelectByAll(UserPageEntity userPageEntity){
        return "打印成功" + userPageServer.USerPage(userPageEntity);
    }
}

完结

其中的疑问

第一个:关于映射器中sql是如何读取到

java">    public Integer getPageBegin(){
        return (this.into - 1) * Max;
    }

mybatis会自动映射,将getPageBegin自动转换成pageBegin(这个为结论)

第二个:如果自定义,xxx,这些xxx为自定义内容


http://www.niftyadmin.cn/n/5863532.html

相关文章

高性能缓存设计:如何解决缓存伪共享问题

大家好&#xff0c;我是 方圆。在多核高并发场景下&#xff0c;缓存伪共享&#xff08;False Sharing&#xff09; 是导致性能骤降的“隐形杀手”。当不同线程频繁修改同一缓存行&#xff08;Cache Line&#xff09;中的独立变量时&#xff0c;CPU缓存一致性协议会强制同步整个…

Linux第十三节 — 进程状态详解

只要一个进程的PCB还存在内存当中&#xff0c;哪怕此时该进程对应的代码和数据已经在磁盘当中&#xff0c;此时依然认为该进程仍然存在&#xff01; 一、Linux进程的运行状态R 接下来我们看下面这个例子&#xff1a; 当我们执行这个程序的时候&#xff0c;我们认为该进程的状…

BFS算法解决最短路径问题(典型算法思想)—— OJ例题算法解析思路

目录 一、1926. 迷宫中离入口最近的出口 - 力扣&#xff08;LeetCode&#xff09; 算法代码&#xff1a; 代码分析 各个部分的解释 注意事项 整体的含义 具体情况 使用 e[0] 和 e[1] 的优势 总结 示例代码中的用法 整体流程 示例 复杂度分析 总结 二、433. 最小基…

AWS S3深度解析:十大核心应用场景与高可用架构设计实践

摘要&#xff1a;作为全球领先的对象存储服务&#xff0c;Amazon S3凭借其高扩展性、持久性和安全性&#xff0c;已成为企业云原生架构的核心组件。本文将深入探讨S3的典型技术场景&#xff0c;并揭秘其背后的架构设计逻辑。 一、AWS S3核心技术特性解析 Amazon Simple Storag…

【系统架构设计师】操作系统的分类

目录 1. 说明2. 批处理操作系统3. 分时操作系统4. 实时操作系统5. 网络操作系统6. 分布式操作系统7. 微型计算机操作系统8.嵌入式操作系统9.例题9.1 例题1 1. 说明 1.通常&#xff0c;操作系统可分为批处理操作系统、分时操作系统、实时操作系统、网络操作系统、分布式操作系统…

ath9k(Atheros芯片)开源驱动之wifi连接

为什么会推荐这个wifi 驱动进行学习&#xff1f; ath9k&#xff08;Atheros芯片&#xff09;&#xff1a;代码结构清晰&#xff0c;适合学习实践 为什么我只在开篇写了一个wifi连接的操作&#xff1f; 先让一个开源驱动在你的硬件上跑起来&#xff0c;再逐步修改&#xff0c…

深搜专题2:组合问题

描述 组合问题就是从n个元素中抽出r个元素(不分顺序且r < &#xff1d; n)&#xff0c; 我们可以简单地将n个元素理解为自然数1&#xff0c;2&#xff0c;…&#xff0c;n&#xff0c;从中任取r个数。 例如n &#xff1d; 5 &#xff0c;r &#xff1d; 3 &#xff0c;所…

Ubuntu 22.04安装K8S集群

以下是Ubuntu 22.04安装Kubernetes集群的步骤概要 一、设置主机名与hosts解析 # Master节点执行 sudo hostnamectl set-hostname "k8smaster" # Worker节点执行 sudo hostnamectl set-hostname "k8sworker1"# 所有节点的/etc/hosts中添加&#xff1a; ca…