以下是使用 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. 注意事项
- 分页参数校验 :在实际使用中,需要对分页参数进行校验,确保
pageNum
和pageSize
合法。 - 性能优化:分页查询时,尽量使用索引字段作为查询条件,避免全表扫描。
- 逻辑删除 :逻辑删除字段需要在数据库中定义,默认为
deleted
,值为1
表示已删除,0
表示未删除。
总结
通过以上步骤,你可以快速配置 MyBatis-Plus 分页插件,并实现分页查询功能。同时,通过配置日志输出、驼峰转下划线和逻辑删除,可以提升开发效率和代码可维护性。如果需要进一步扩展,可以结合条件构造器(QueryWrapper
)或自定义 SQL 实现更复杂的分页逻辑。