Spring Boot (maven)分页4.0.1版本 专业版- 改

前言:

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

正片

核心 · 环境搭建:spring boot 3(3.3.7版本) + spring web + mybatis + Mysql Driver + Lombk

专业版:在动态分页查询(通用版)的基础上,进行迭代

通用版本模板

第一步:创建用于数据传输和接受的实体类

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

@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;
}

这个实体类包含两部分,或者说实体类的作用有两部分

第一部分:接收数据库返回内容

第二部分:传输SQL语句映射参数

第二步:新建java映射

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

@Mapper
public interface RequestPageMapper {
    List<RequestPageEntity> requestPage(Integer into,int Max);//id改为实体类中的Max
}

@Mapper是为了告诉Springboot,这是一个映射,当然你也可以配置一下

@Configuration
@MapperScan(basePackages = "mapper层")
public class ApplicationConfig {

}

"mapper层" :存放mapper文件的路径

第三步:新建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="具体mapper层路径,精确到文件名">

</mapper>

为了避免不必要的路径问题,请务必让java映射和xml映射路径完全一致

1+2等于第二步的配置参数

1+2+3等于xml中的namespace的参数

1+2 = resource下的1+2,可以避免不必要的报错

<?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>

第四步:在Mapper.xml写增删改查业务

    <select id="java映射接口方法名" resultType="返回值类型">
        
    </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.RequestPageEntity">

    </select>
</mapper>

注意,不要import加上去

如何判断十分成功了呢?

利用IDEA的ctrl + 左键 会自动跳转

select * from user limit #{对应java接口的参数名,不一样会报错},#{对应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">

    <select id="requestPage" resultType="org.example.mybatis.entity.RequestPageEntity">
        select * from user limit #{into},#{id}
    </select>
</mapper>

mybatis会自动读取接口实体类中的全部get/set方法,去除掉get做为传输数据,去掉set作为返回类型状态,也就是一开始说的实体类的两个作用

我们测试一下

import jakarta.annotation.Resource;
import org.example.mybatis.Mapper.RequestPageMapper;
import org.example.mybatis.entity.RequestPageEntity;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.List;

@SpringBootTest
class MybatisApplicationTests {

    @Resource
    RequestPageMapper mapper;

    @Test
    void contextLoads() {
        List<RequestPageEntity> requestPageEntities = mapper.requestPage(1, 3);
        System.out.println(requestPageEntities);
    }

}

测试成功

作者这里偷懒,就不继续做了,你们要做可以参考

org.mybatis.spring.MyBatisSystemException: 
### 查询数据库时出错。原因:java.lang.IndexOutOfBoundsException: 索引 4 超出了长度为 4 的界限
### 错误可能存在于 org/example/mybatis/Mapper/RequestPageMapper.xml
### 错误可能涉及 org.example.mybatis.Mapper.RequestPageMapper.requestPage
### 错误发生在处理结果时
### SQL: select * from user limit ?,?
### 原因:java.lang.IndexOutOfBoundsException: 索引 4 超出了长度为 4 的界限

报错原因,在实体类中添加了有参数构造函数

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

@Data
// @AllArgsConstructor  报错原因
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;

}

自动计算分页点算法:起点 = (页数 - 1)* 查询最大值

@Data
// @AllArgsConstructor  报错原因
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;
    }
}

我们通过this自动获取参数,然后计算

修改我们的Mapper层

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

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

我们根据mybatis修改xml映射

我们直接在控制类测试

@RestController
public class user {

    @Resource
    RequestPageMapper mapper;

    @PostMapping("/list")
    public String getList(RequestPageEntity entity){
        List<RequestPageEntity> requestPageEntities = mapper.requestPage(entity);

        return "打印成功" + requestPageEntities;
    }
}

1

### Error querying database.  Cause: org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'PageBegin' in 'class org.example.mybatis.entity.RequestPageEntity'
### Cause: org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'PageBegin' in 'class org.example.mybatis.entity.RequestPageEntity'] with root cause

org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'PageBegin' in 'class org.example.mybatis.entity.RequestPageEntity'

这个报错是因为你mybatis映射自动映射导致的

mybatis会自动将getxxx的方法转换成xxx,然后作为参数传入

注意了

第二张图片报错了

getPageBegin

PageBegin报错了

pageBegin没报错

说明mybatis自动映射会将get后面的第一个单词转换成小写

P会变成p

Big会编程big

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/973524.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

装修流程图: 装修前准备 → 设计阶段 → 施工阶段 → 安装阶段 → 收尾阶段 → 入住

文章目录 引言I 毛坯房装修的全流程**1. 装修前准备****1.1 确定装修预算****1.2 选择装修方式****1.3 选择装修公司****1.4 办理装修手续****2. 设计阶段****2.1 量房****2.2 设计方案****2.3 确认方案****3. 施工阶段****3.1 主体拆改****3.2 水电改造****3.3 防水工程****3.…

若依-@Excel新增注解numberFormat

Excel注解中原本的scale会四舍五入小数&#xff0c;导致进度丢失 想要的效果 显示的时候保留两个小数真正的数值是保留之前的数值 还原过程 若以中有一個專門的工具类&#xff0c;用来处理excel的 找到EXCEL导出方法exportExcel()找到writeSheet,写表格的方法找到填充数据的方法…

鸿蒙5.0实战案例:基于自定义注解和代码生成实现路由框架

往期推文全新看点&#xff08;文中附带全新鸿蒙5.0全栈学习笔录&#xff09; ✏️ 鸿蒙&#xff08;HarmonyOS&#xff09;北向开发知识点记录~ ✏️ 鸿蒙&#xff08;OpenHarmony&#xff09;南向开发保姆级知识点汇总~ ✏️ 鸿蒙应用开发与鸿蒙系统开发哪个更有前景&#…

让浏览器AI起来:基于大模型Agent的浏览器自动化工具

最近有个非常火的项目,利用大模型Agent驱动浏览器完成各种操作,如网页搜索、爬虫分析、机票酒店预定、股票监控等,号称全面替代所有在浏览器上的操作,试用方式还是比较简单的,以下将进行简单介绍。 快速开始 通过pip安装: pip install browser-use安装web自动化框架:…

模电知识点总结(6)

1.选取频率高于1000Hz的信号时&#xff0c;可选用高通滤波器&#xff1b;抑制50Hz的交流干扰时&#xff0c;可选用带阻滤波器如果希望抑制500Hz以下的信号&#xff0c;可选用高通滤波器。 2.有用信号频率高于1000Hz&#xff0c;可选用高通滤波器&#xff1b;希望抑制50Hz的交流…

MyBatis:动态SQL高级标签使用方法指南

一、引言 目前互联网大厂在搭建后端Java服务时&#xff0c;常使用Springboot搭配Mybatis/Mybatis-plus的框架。Mybatis/Mybatis-plus之所以能成为当前国内主流的持久层框架&#xff0c;与其本身的优点有关&#xff1a;支持定制动态 SQL、存储过程及高级映射&#xff0c;简化数…

快速入门——Axios网络请求

学习自哔哩哔哩上的“刘老师教编程”&#xff0c;具体学习的网站为&#xff1a;11.Axios网络请求_哔哩哔哩_bilibili&#xff0c;以下是看课后做的笔记&#xff0c;仅供参考。 第一节Axios的使用 第二节与Vue整合 第三节跨域 第一节Axios的使用 在实际项目开发中&#xff0…

Typora的Github主题美化

对Typora的Github主题进行一些自己喜欢的修改&#xff0c;主要包括&#xff1a;字体、代码块、表格样式 美化前&#xff1a; 美化后&#xff1a; 字体更换 之前便看上了「中文网字计划」的「朱雀仿宋」字体&#xff0c;于是一直想更换字体&#xff0c;奈何自己拖延症作祟&#…

DeepSeek 助力 Vue 开发:打造丝滑的 键盘快捷键(Keyboard Shortcuts)

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 Deep…

[深度学习][python]yolov12+bytetrack+pyqt5实现目标追踪

【算法介绍】 实时目标检测因其低延迟特性而持续受到广泛关注&#xff0c;具有重要的实际应用价值[4, 17, 24, 28]。其中&#xff0c;YOLO系列[3, 24, 28, 29, 32, 45-47, 53, 57, 58]通过有效平衡延迟与精度&#xff0c;在该领域占据主导地位。尽管YOLO的改进多集中在损失函数…

Python大数据可视化:基于大数据技术的共享单车数据分析与辅助管理系统_flask+hadoop+spider

开发语言&#xff1a;Python框架&#xff1a;flaskPython版本&#xff1a;python3.7.7数据库&#xff1a;mysql 5.7数据库工具&#xff1a;Navicat11开发软件&#xff1a;PyCharm 系统展示 管理员登录 管理员功能界面 场地信息界面 单车信息界面 归还信息界面 共享单车界面 系…

ssm-day06 ssm整合

从springMVC总结再回顾一下 60节 整合就是应用框架&#xff0c;并且把这个框架放到IOC容器中 web容器&#xff1a;装springMVC和controller相关的web组件 root容器&#xff1a;装业务和持久层相关的组件 子容器可以引用父容器中的组件&#xff0c;父容器不能调子容器 一个容器…

MATLAB基础学习相关知识

MATLAB安装参考&#xff1a;抖音-记录美好生活 MATLAB基础知识学习参考&#xff1a;【1小时Matlab速成教程-哔哩哔哩】 https://b23.tv/CnvHtO3 第1部分&#xff1a;变量定义和基本运算 生成矩阵&#xff1a; % 生成矩阵% 直接法% ,表示行 ;表示列 a [1,2,3;4,5,6;7,8,9];%…

Windows - 通过ssh打开带有图形界面的程序 - 一种通过计划任务的曲折实现方式

Windows(奇思妙想) - 通过ssh打开带有图形界面的程序 - 一种通过计划任务的曲折实现方式 前言 Windows启用OpenSSH客户端后就可以通过SSH的方式访问Windows了。但是通过SSH启动的程序&#xff1a; 无法显示图形界面会随着SSH进程的结束而结束 于是想到了一种通过执行“计划…

WPS接入deepseek-OfficeAI助手插件下载

功能简介 OfficeAI 助手 是一款免费的智能AI办公工具软件&#xff0c;专为 Microsoft Office 和 WPS 用户打造。 无论你是在寻找如何输入“打勾&#xff08;√&#xff09;符号”的方法&#xff0c;还是想知道“怎么在插入表格前添加文字”&#xff0c;或者“该用哪个公式”&a…

【JavaEE进阶】Spring MVC(4)-图书管理系统案例

欢迎关注个人主页&#xff1a;逸狼 创造不易&#xff0c;可以点点赞吗 如有错误&#xff0c;欢迎指出~ 图书管理系统 创建书籍类BookInfo import lombok.Data;import java.math.BigDecimal;Data //这个类基本上是和数据库对应起来的 public class BookInfo {private Integer id…

路由器的WAN口和LAN口有什么区别?

今时今日&#xff0c;移动终端盛行的时代&#xff0c;WIFI可以说是家家户户都有使用到的网络接入方式。那么路由器当然也就是家家户户都不可或缺的设备了。而路由器上的两个实现网络连接的基础接口 ——WAN 口和 LAN 口&#xff0c;到底有什么区别&#xff1f;它们的功能和作用…

AI客服-接入deepseek大模型到微信(本地部署deepseek集成微信自动收发消息)

1.本地部署 1.1 ollama Ollama软件通过其高度优化的推理引擎和先进的内存管理机制&#xff0c;显著提升了大型语言模型在本地设备上的运行效率。其核心采用了量化技术&#xff08;Quantization&#xff09;以降低模型的计算复杂度和存储需求&#xff0c;同时结合张量并行计算&…

基于COSTAR模型的内容创作:如何用框架提升写作质量

目录 前言1. Context&#xff08;上下文&#xff09;&#xff1a;理解背景&#xff0c;奠定写作基础1.1 何为上下文1.2 上下文的作用1.3 案例解析 2. Objective&#xff08;目标&#xff09;&#xff1a;明确写作方向&#xff0c;避免跑题2.1 确立目标2.2 如何设定目标2.3 案例…

kafka-集群缩容

一. 简述&#xff1a; 当业务增加时&#xff0c;服务瓶颈&#xff0c;我们需要进行扩容。当业务量下降时&#xff0c;为成本考虑。自然也会涉及到缩容。假设集群有 15 台机器&#xff0c;预计缩到 10 台机器&#xff0c;那么需要做 5 次缩容操作&#xff0c;每次将一个节点下线…