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.yml 或 application.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 实现更复杂的分页逻辑。

相关推荐
黄鹂鸟科技12 分钟前
进销存系统设计要点:从采购计划、库存监控到成本核算
后端·物联网·系统架构
撸串-研究生24 分钟前
基于Spring Boot的智慧社区垃圾分类与回收系统的设计与实现【附源码】
spring boot·后端·分类·垃圾分类·社区管理
ly768938 分钟前
PostgreSQL 流复制与高可用切换:主从延迟、同步提交与 Spring Boot 读写分离的边界
数据库·spring boot·postgresql·读写分离·流复制·高可用切换
技术小结-李爽1 小时前
【工具】怎么在终端中启动springboot项目?
java·spring boot·后端·maven
Msshu1231 小时前
PD快充诱骗取电芯片工作原理,XSP17诱骗取电5V9V12V15V20V功能测试
spring boot·spring cloud·sentinel·java-rocketmq·java-zookeeper·java-consul·java-activemq
乌暮1 小时前
从 `println` 到生产级日志:Spring Boot 日志体系完全指南
java·开发语言·jvm·spring boot·后端·学习·面试
脉动数据行情2 小时前
Java OkHttp 对接国际期货批量行情 SpringBoot 定时落库实践
java·spring boot·okhttp
鶴哥只手遮天2 小时前
Spring Boot 4.1.1 深度源码解析-第 29 章 · 测试体系:`@SpringBootTest`、切片测试、Testcontainers
java·后端·开源
yunwei372 小时前
eBPF 实例教程:BPF 动态指针处理可变长度数据
linux·后端·性能优化
tltwuyulw2 小时前
Java的函数式编程(五)
java·后端