mybaits-plus自定义分页查询

1. 引入依赖

pom.xml 文件中添加必要的依赖:

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.1</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency>
</dependencies>

2. 配置文件

application.yml 文件中配置数据库连接信息:

spring:datasource:url: jdbc:mysql://localhost:3306/your_database?useSSL=false&serverTimezone=UTCusername: rootpassword: your_passworddriver-class-name: com.mysql.cj.jdbc.Drivermybatis-plus:mapper-locations: classpath*:mapper/*.xml

3. 实体类

com.example.entity 包下创建 User.java

package com.example.entity;import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;@Data
@TableName("user")
public class User {@TableIdprivate Long id;private String name;private Integer age;private String email;
}

4. Mapper 接口

com.example.mapper 包下创建 UserMapper.java

package com.example.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.entity.User;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;public interface UserMapper extends BaseMapper<User> {IPage<User> selectPageVo(Page<?> page, @Param("age") Integer age);
}

5. XML 配置

resources/mapper 目录下创建 UserMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.example.mapper.UserMapper"><select id="selectPageVo" resultType="com.example.entity.User">SELECT *FROM userWHERE age = #{age}</select>
</mapper>

6. 服务接口

com.example.service 包下创建 IUserService.java

package com.example.service;import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.entity.User;public interface IUserService {IPage<User> selectUserPage(Page<User> page, Integer age);
}

7. 服务实现类

com.example.service.impl 包下创建 UserServiceImpl.java

package com.example.service.impl;import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.entity.User;
import com.example.mapper.UserMapper;
import com.example.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;@Service
public class UserServiceImpl implements IUserService {@Autowiredprivate UserMapper userMapper;@Overridepublic IPage<User> selectUserPage(Page<User> page, Integer age) {return userMapper.selectPageVo(page, age);}
}

8. 控制器

com.example.controller 包下创建 UserController.java

package com.example.controller;import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.entity.User;
import com.example.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;@RestController
public class UserController {@Autowiredprivate IUserService userService;@GetMapping("/users")public IPage<User> getUsers(@RequestParam(name = "page", defaultValue = "1") int page,@RequestParam(name = "size", defaultValue = "10") int size,@RequestParam(name = "age", required = false) Integer age) {Page<User> userPage = new Page<>(page, size);return userService.selectUserPage(userPage, age);}
}

9. 应用程序启动类

com.example 包下创建 MyApplication.java

package com.example;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class MyApplication {public static void main(String[] args) {SpringApplication.run(MyApplication.class, args);}
}

10. 启动和测试

启动 Spring Boot 应用程序,访问 http://localhost:8080/users?page=1&size=10&age=25 以测试分页查询功能。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Git进阶(十四):Windows下 git 提示 Repository not found

文章目录 一、前言 一、前言 在Windows10下执行 git clone/pull 的时候出现Repository not found错误。解决方法如下&#xff1a; 打开控制面板 搜索“凭据” 选中“Windows凭据” 在“普通凭据”一栏中查看当前git服务器配置的凭据信息是否正确&#xff0c;出现以上问题的…

081、Python 关于方法重写

所谓方法重写&#xff0c;就是子类对父类已有的方法&#xff0c;重新编写自己的实现版本&#xff0c;这个过程就叫做方法重写&#xff08;override&#xff09;。 说到方法重写&#xff0c;就不得不提多态。因为方法重写是实现多态的一种重要方式。 所谓多态&#xff0c;就是…

Windows的包管理器Chocolatey

Chocolatey 是 Windows 平台上的一个软件包管理工具&#xff0c;类似于 Linux 上的 apt、yum 或者 macOS 上的 Homebrew。你可以通过命令行快速安装、更新和卸载软件包。 一、安装 Chocolatey 查看是否有安装 choco --version 2.3.0如果有显示版本号&#xff0c;说明安装成功…

Laravel IDE Helper:开发者的代码导航灯塔

Laravel IDE Helper&#xff1a;开发者的代码导航灯塔 在Laravel开发过程中&#xff0c;IDE&#xff08;集成开发环境&#xff09;的辅助工具可以极大地提高开发效率和代码质量。Laravel IDE Helper是一个专门为此目的设计的工具&#xff0c;它为PHP IDE提供了额外的上下文信息…

提高自动化测试脚本编写效率 5大关键注意事项

提高自动化测试脚本编写效率能加速测试周期&#xff0c;减少人工错误&#xff0c;提升软件质量&#xff0c;促进项目按时交付&#xff0c;增强团队生产力和项目成功率。而自动化测试脚本编写效率低下&#xff0c;往往会导致测试周期延长&#xff0c;增加项目成本&#xff0c;延…

Python项目部署到Linux生产环境(uwsgi+python+flask+nginx服务器)

1.安装python 我这里是3.9.5版本 安装依赖&#xff1a; yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make -y 根据自己的需要下载对应的python版本&#xff1a; cd local wget https://www.python.org/ftp…

git 提交远程仓库 方式

第一种方式&#xff1a; git init //初始化 gitgit clone https://github.com/luckygilrhpp/gitTest.git //克隆远程仓库代码将要提交的文件夹复制到这个clone的远程仓库里面 第二种方式&#xff1a; git init git remote add origin https://github.com/lucky…

高性能存储 SIG 月度动态:优化 xfs dax reflink 时延,独立选型并维护 mdadm 和 ledmon

本次高性能存储月度动态综合了 SIG 在 5、6 两个月的工作进展&#xff0c;包含多项特性支持&#xff0c;性能优化&#xff0c;以及 Bugfix 等。 01 SIG 整体进展 引入 xfs deferred inode inactivation&#xff0c;进一步优化 xfs dax reflink 过程中的抖动时延。 Intel 将在…

UE5.4新功能 - MotionDesign上手简介

MotionDesign是UE中集成的运动图形功能&#xff0c;我们在游戏中经常会见到&#xff0c;例如前方漂浮于空中的若干碎石&#xff0c;当玩家走进时碎石自动吸附合并变成一条路&#xff0c;或者一些装饰性的物件做随机运动等等&#xff0c;在引擎没有集成运动图形时&#xff0c;这…

网络爬虫开发:JavaScript与Python特性的小差异

JavaScript JavaScript具有以下一些主要特点&#xff1a; 动态类型&#xff1a; JavaScript是一种动态类型语言&#xff0c;变量可以存储任意类型的数据&#xff0c;无需事先声明变量的类型。事件驱动&#xff1a;JavaScript主要用于处理用户在浏览器中的各种交互事件&#x…

group by 与 distinct去重性能

GROUP BY和DISTINCT在数据库查询中都可以用于去重&#xff0c;但它们的性能差异取决于多个因素&#xff0c;包括数据集的大小、数据库的结构和索引、以及查询的具体内容。 处理方式&#xff1a; DISTINCT&#xff1a;它会扫描整个数据集&#xff0c;然后删除重复的记录&#xf…

机体坐标系和导航坐标系

目录 机体坐标系&#xff08;Body Frame&#xff09;例子&#xff1a;无人机的机体坐标系 导航坐标系&#xff08;Navigation Frame&#xff09;例子&#xff1a;地球固定的导航坐标系 具体例子说明机体坐标系描述导航坐标系描述 总结 机体坐标系&#xff08;Body Frame&#x…

什么是大数据信用?它的作用有哪些?怎么查询大数据?

在金融行业中&#xff0c;风险管理是至关重要的一环。传统的信用评估方法主要基于借款人的财务状况和信用历史&#xff0c;但这些信息往往无法全面反映借款人的信用状况。大数据信用的出现为金融风控提供了新的解决方案。 首先&#xff0c;大数据信用可以为金融机构提供更全面的…

jmeter持续学习之---控制器

IF控制器 下面这种写法jmeter不推荐有性能的问题 jmeter推荐勾选上的这种写法 使用"Interpret Condition as Variable Expression"工具的性能要好一些 循环控制器 ForEach控制器 与用户定义的变量或者正则表达式提取器配合使用,循环读取。用户定义的变量或者正则…

Vue 接口用FormData() 提交数据

例子&#xff1a; let data { id: 12, name: 测试, list: [{ id: 22, name: "za", age: 12 }] };// 创建 FormData 实例 要使用 FormData 将数据提交给接口&#xff0c;首先需要了解 FormData 是如何工作的。FormData 是一种用于异步上传数据的表单数据结构&#xf…

C语言-分支与循环(2)

目录 1、while循环 1.1 if 和 while 的对比 1.2 while 语句的执行流程 6.3 while循环简单例题 2、for 循环 2.1 语法形式 2.2 for循环与while循环对比 2.3 for循环的执行流程 2.4 for循环的简单例题 2.5 扩展&#xff1a;for循环的初始化&#xff0c;判断&#xff0c;…

django学习入门系列之第四点《图标》

文章目录 图标往期回顾 图标 图标网站&#xff1a; Font Awesome&#xff0c;一套绝佳的图标字体库和CSS框架 (dashgame.com) bootstrap提供的不多 注意&#xff0c;要用框架启动&#xff0c;但用html启动的话是用不了的&#xff08;图标启动不了&#xff09; 如何使用 如果…

DAMA学习笔记(六)-数据安全

1.引言 数据安全包括安全策略和过程的规划、建立与执行&#xff0c;为数据和信息资产提供正确的身份验证、授权、访问和审计。数据安全实践的目标是根据隐私和保密法规、合同协议和业务要求来保护信息资产。这些要求来自以下几个方面: 1&#xff09;利益相关方: 应识别利益相关…

YOLO--置信度(超详细解读)

YOLO&#xff08;You Only Look Once&#xff09;算法中的置信度&#xff08;Confidence&#xff09;是一个关键概念&#xff0c;用于评估模型对预测框内存在目标对象的信心程度以及预测框对目标对象位置的准确性。 一、置信度的定义 数值范围&#xff1a;置信度是一个介于0和…

ES6 对象的扩展(十五)

1. 属性的简洁表示&#xff08;Property Shorthand&#xff09; 特性&#xff1a;在对象字面量中&#xff0c;如果属性名和变量名相同&#xff0c;可以省略属性名&#xff0c;直接使用变量值。 用法&#xff1a;简化对象字面量的书写。 const x 1, y 2; const obj { x, y …