以下是使用 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 {@Beanpublic 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 {@Autowiredprivate 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 实现更复杂的分页逻辑。