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

相关推荐
SummerGao.11 分钟前
【实操】Mybatis-plus2.x升级到3.x
java·spring boot·mybatisplus·系统升级
Asthenia041233 分钟前
Seata:核心组件/工作流程/四大模式/事务传播/CAP与模式/三大组件/集成细节
后端
汤永红36 分钟前
springboot3.x+mybatisplus3.4.x+分页测试
spring boot·mybaitsplus3
为美好的生活献上中指42 分钟前
java每日精进 3.21 【SpringBoot规范2.0】
java·开发语言·spring boot·log4j·async·mail
码农幻想梦1 小时前
试验一 mybatis 入门操作
mybatis
kkk哥1 小时前
基于springboot的教师工作量管理系统(031)
java·spring boot·后端
可了~1 小时前
SpringBoot的配置文件了解
java·spring boot·后端
八股文领域大手子1 小时前
Redis Lua脚本实现令牌桶限流算法
java·数据库·redis·算法·junit·mybatis·lua
小丁爱养花2 小时前
MyBatis-Plus:告别手写 SQL 的高效之道
java·开发语言·后端·spring·mybatis
Asthenia04122 小时前
RocketMQ:队列选型/Broker存储机制/三种发送策略/消息有序性/消息积压与处理/集群与广播/Rebalance
后端