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

总结

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

相关推荐
Shadow(⊙o⊙)11 分钟前
进程分析—从操作系统到Linux内核深入
linux·运维·服务器·开发语言·网络·c++·后端
无风听海9 小时前
深入剖析 YARP 的 Transforms:构建灵活的反向代理转换管道
后端·中间件·asp.net
Gopher_HBo9 小时前
负载均衡
后端
自由生长20249 小时前
RAG已死?什么标题党啊!
后端
东方小月10 小时前
5分钟搞懂Harness Engineering(驾驭工程):从提示词到AI Agent的进化之路
前端·后端·架构
折哥的程序人生 · 物流技术专研13 小时前
Java面试85题图解版(一):基础核心篇
java·开发语言·后端·面试
哆啦A梦158813 小时前
20, Springboot3+vue3实现前台轮播图和详情页的设计
javascript·数据库·spring boot·mybatis·vue3
Moment13 小时前
面试官:如果产品经理给你多个需求,怎么让AI去完成❓❓❓
前端·后端·面试
每天进步一点_JL14 小时前
JVM 内存模型与 OOM 排查:从入门到实战
后端
REDcker14 小时前
个人博客网站建设指南 Markdown资产化与静态站选型部署
前端·后端·博客·markdown·网站·资产·建站