springboot继承使用mybatis-plus举例相关配置,包括分页插件以及封装分页类

news/2025/3/27 15:17:41/

以下是使用 MyBatis-Plus 分页插件的完整配置和封装步骤,包括日志输出、驼峰转下划线、逻辑删除以及分页属性类的封装。


1. 引入依赖

确保在 pom.xml 中已经引入 MyBatis-Plus 的依赖:

<XML>

<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.3</version>
</dependency>

2. 配置 MyBatis-Plus

application.ymlapplication.properties 中配置 MyBatis-Plus:

YAML 配置:

<YAML>

mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 控制台输出 SQL 日志map-underscore-to-camel-case: true # 开启驼峰转下划线global-config:db-config:logic-delete-field: deleted # 逻辑删除字段名logic-delete-value: 1 # 逻辑已删除值logic-not-delete-value: 0 # 逻辑未删除值

Properties 配置:

<PROPERTIES>

mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
mybatis-plus.configuration.map-underscore-to-camel-case=true
mybatis-plus.global-config.db-config.logic-delete-field=deleted
mybatis-plus.global-config.db-config.logic-delete-value=1
mybatis-plus.global-config.db-config.logic-not-delete-value=0

3. 配置分页插件

在 Spring Boot 配置类中添加分页插件:

<JAVA>

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class MybatisPlusConfig {@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();// 添加分页插件interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); // 指定数据库类型return interceptor;}
}

4. 创建分页属性封装类

创建一个分页属性类 PageParam,用于封装分页查询的参数:

<JAVA>

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;@Data
@ApiModel("分页参数封装类")
public class PageParam {@ApiModelProperty(value = "当前页码", example = "1")private Long pageNum = 1L; // 默认第 1 页@ApiModelProperty(value = "每页大小", example = "10")private Long pageSize = 10L; // 默认每页 10 条
}

5. 使用分页查询

在 Service 层或 Controller 层使用分页查询:

Service 层示例:

<JAVA>

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {public Page<User> getUserByPage(PageParam pageParam) {// 创建分页对象Page<User> page = new Page<>(pageParam.getPageNum(), pageParam.getPageSize());// 执行分页查询return baseMapper.selectPage(page, null);}
}

Controller 层示例:

<JAVA>

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@RequestMapping("/user")
public class UserController {@Autowiredprivate UserService userService;@GetMapping("/list")public Page<User> list(@RequestBody PageParam pageParam) {return userService.getUserByPage(pageParam);}
}

6. 逻辑删除字段

在实体类中添加逻辑删除字段:

<JAVA>

import com.baomidou.mybatisplus.annotation.TableLogic;
import lombok.Data;@Data
public class User {private Long id;private String name;private Integer age;@TableLogic // 标记为逻辑删除字段private Integer deleted;
}

7. 注意事项

  1. 分页参数校验:在实际使用中,需要对分页参数进行校验,确保 pageNum 和 pageSize 合法。
  2. 性能优化:分页查询时,尽量使用索引字段作为查询条件,避免全表扫描。
  3. 逻辑删除:逻辑删除字段需要在数据库中定义,默认为 deleted,值为 1 表示已删除,0 表示未删除。

总结

通过以上步骤,你可以快速配置 MyBatis-Plus 分页插件,并实现分页查询功能。同时,通过配置日志输出、驼峰转下划线和逻辑删除,可以提升开发效率和代码可维护性。如果需要进一步扩展,可以结合条件构造器(QueryWrapper)或自定义 SQL 实现更复杂的分页逻辑。

文章来源:https://blog.csdn.net/z2637305611/article/details/146429290
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ppmy.cn/news/1583142.html

相关文章

《Python深度学习》第七讲:生成式深度学习

在深度学习的世界里,生成式模型是一种非常有趣且富有创造力的技术。它们能够生成全新的内容,比如文本、图像、音乐等,甚至可以创造出从未见过的虚拟世界。这一讲,我们将深入探讨生成式深度学习的核心技术,包括 LSTM 文本生成、DeepDream、神经风格迁移、变分自编码器(VAE…

阿里开源的免费数据集成工具——DataX

企业里真实的数据流转是什么样子的呢&#xff1f; 左侧描述了一个企业真实的样子&#xff0c;我们总是需要把数据从一个地方搬到另一个地方&#xff0c;最后就是搬来搬去搬成了一张张解不开的网。 右侧则表达了使用DataX为中心实现数据的同步。 什么是DataX DataX是一个异构…

大数据Trino面试题及参考答案

目录 解释 Trino 的协调节点(Coordinator)与工作节点(Worker)的职责与交互流程 Trino 为何采用多阶段执行模型(Multi - stage Execution)?其优势是什么? 描述 Trino 查询从提交到结果返回的完整生命周期 Trino 的 “无共享”(Shared - Nothing)架构如何实现高并发…

MacOS使用GVM管理Go版本

1. 安装 bash < <(curl -s -S -L https://github.com/moovweb/gvm/raw/master/binscripts/gvm-installer)然后重新加载 shell&#xff1a; source ~/.gvm/scripts/gvm2. 安装多个Go版本 例如安装 Go 1.19 和 Go 1.21&#xff1a; gvm install go1.19 gvm install go1…

Spring Security核心源码和功能实现

Spring Security 是一个强大的安全框架,用于保护基于 Spring 的应用程序。它提供了认证、授权、防止常见安全攻击等功能。下面是对 Spring Security 的核心功能和实现的详细分析,并使用 Mermaid 绘制相关流程图。 1. 核心功能 1.1 认证(Authentication) 用户认证:验证用…

使用 Python 爬取 TikTok 评论的实现与解析

在今天的博客中&#xff0c;我将分享如何使用 Python 爬取 TikTok 视频的评论信息。通过构建一个简单的爬虫&#xff0c;我们可以抓取 TikTok 上某个视频的所有评论&#xff0c;并将其保存到 CSV 文件中。以下是详细的代码实现与解释。 一、引入必要的库 在代码开始的部分&am…

【蓝桥杯】每日练习 Day10

目录 前言 空调 分析 代码 棋盘 分析 代码 重新排序 分析 代码 牛的学术圈I 分析 代码 日志统计 分析 代码 火柴排队 分析 代码 前言 复习第十天了&#xff0c;虽然每天都勤勤恳恳的做题但是发现好像没有什么成长&#xff0c;每次感觉有些进步了去比赛结果…

Atlas 800I A2 双机直连部署DeepSeek-R1-w8a8

一、环境信息 1.1、硬件信息 Atlas 800I A2 * 2 1.2、环境信息 操作系统&#xff1a;openEuler 22.03 LTS NPU驱动&#xff1a;Ascend-hdk-910b-npu-driver 24.1.0 linux-aarch64.run NPU固件&#xff1a;Ascend-hdk-910b-npu-firware 7.5.0.3.220.run MindIE镜像&#xff…