当前位置: 首页 > news >正文

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

以下是使用 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 {

    @Bean
    public 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 {

    @Autowired
    private 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 实现更复杂的分页逻辑。

相关文章:

  • C++|GLog开源库的使用 如何实现自定义类型消息日志
  • HCIA-AI人工智能笔记3:数据预处理
  • 编程语言选择分析:C#、Rust、Go 与 TypeScript 编译器优化
  • 二项式分布(Binomial Distribution)
  • YOLO魔改之SAM空间注意力模块
  • 网络基础梳理
  • GAF-CNN-DBO-LSSVM故障诊断/分类预测(Matlab)
  • 【AI速读】30分钟搭建持续集成:用Jenkins拯救你的项目
  • Python 用户账户(让用户拥有自己的数据)
  • “大国品牌”建设全面启动,工业电商生态加速成型
  • 清华大学《DeepSeek从入门到精通》04
  • MacOS安装 nextcloud 的 Virtual File System
  • 使用 Docker 部署 mysql 应用
  • STM32八股【2】-----ARM架构
  • 安装PaddlePaddle2.6.2和PaddleSpeech1.4的CPU版本——基于Ubuntu22.04
  • uniapp中的路由、本地存储与网络请求
  • 经典笔试题 小于 n 的最大整数 贪心 回溯 剪枝 全排列
  • YOLO-UniOW: 高效通用开放世界目标检测模型【附论文与源码】
  • 用户说 | 零基础用通义灵码 AI 程序员开发个人笔记网站
  • Docker与K8S是什么该怎么选?
  • 复星医药换帅:陈玉卿接棒吴以芳任董事长,吴以芳改任复星国际执行总裁
  • 邮储银行一季度净赚超252亿降逾2%,营收微降
  • 王毅:携手做世界和平与发展事业的中流砥柱
  • 泽连斯基承认乌情报部门刺杀俄军高官
  • 准85后青海海北州副州长、州公安局局长李贤荣赴山东临沂挂职
  • 第一集丨《无尽的尽头》值得关注,《榜上佳婿》平平无奇