当前位置: 首页 > news >正文

MyBatis-Plus一站式增强组件MyBatis-Plus-kit:打造更优雅的通用CRUD解决方案

MyBatis-Plus-Kit

🚀 mybatis-plus-kit 是基于 MyBatis-Plus 的二次封装组件,提供通用的 BaseService、BaseController 支持、分页查询、统一响应封装、异常处理器等能力,极大简化业务开发代码,让你专注于核心业务逻辑。项目地址:https://github.com/l4vid4/mybatis-plus-kit

✨ 特性

  • ✅ 通用的 BaseService / BaseController,快速构建基础 CRUD 接口

  • ✅ PageQuery + PageResult:统一分页查询模型

  • ✅ 自动封装 Controller 响应体(支持开启/关闭)

  • ✅ 自定义异常统一捕获(可配置启用)

  • ✅ 支持 Controller 接口精细化暴露

  • ✅ 支持 VO 转换的分页查询接口

  • ✅ 无侵入设计,可按需引入功能

🧩 模块结构

mybatis-plus-kit
├── kit-core       // 核心能力,通用Service、Controller、分页、封装等
├── kit-starter    // Spring Boot Starter,自动装配、配置处理、响应/异常支持
├── kit-example    // 示例模块,演示如何使用kit-core + kit-starter
├── kit-generator    // 代码生成器,尚未开发,静待后续...... 

📦 快速开始

  1. 引入依赖(Maven Central)
<dependency><groupId>io.github.l4vid4</groupId><artifactId>kit-starter</artifactId><version>0.1.0</version>
</dependency>
  1. 实体+Mapper
@Data
@TableName("user")
public class User {private Long id;private String name;private String email;
}
@Mapper
public interface UserMapper extends BaseMapper<User> {
}
  1. Service + Impl
public interface UserService extends BaseService<User> {
}@Service
public class UserServiceImpl extends BaseServiceImpl<UserMapper, User> implements UserService {
}
  1. Controller 使用通用能力
@RestController
@RequestMapping("/user")
@DisableApis({DisableApis.Api.DELETE, DisableApis.Api.UPDATE}) //自定义不想暴露的接口
public class UserController extends BaseController<User, UserService> {//重写User → UserVO转换方法@Overrideprotected Function<User, UserVO> voConvertor() {return user -> {UserVO userVO = new UserVO();BeanUtils.copyProperties(user, userVO);return userVO;};}
}

配置完上述所有后,自动拥有所有增删改查方法。

  • 可以在Controller类上加上@DisableApis({DisableApis.Api.DELETE, DisableApis.Api.UPDATE}) 自定义不想暴露的接口
HTTP 方法接口路径方法名称功能描述是否可禁用(通过注解)
GET/user/getById/{id}getById根据 ID 查询单个实体GET_BY_ID
GET/user/listlist查询所有数据(不分页)LIST
GET/user/listByIdslistByIds根据 ID 集合批量查询(不分页)LIST_BY_IDS
POST/user/listByConditionlistByCondition根据实体字段进行条件查询(不分页)LIST_BY_CONDITION
POST/user/pagepage分页查询实体(返回实体 T)PAGE
POST/user/pageVopageVo分页查询(返回 VO,默认无转换)PAGE_VO
POST/user/savesave新增数据SAVE
POST/user/updateupdate更新数据(根据 ID)UPDATE
GET/user/deleteById/{id}deleteById删除单条数据(根据 ID)DELETE_BY_ID
POST/user/deletedelete批量删除(根据 ID 集合)DELETE

🧾 通用分页组件

分页参数类

@Data
public class PageQuery {private Integer pageNo; // 页码private Integer pageSize; // 每一页数据量private String sortBy; // 排序字段private Boolean isAsc; // 是否正序// 将分页条件转换为Page<T>public <T> Page<T> toMpPage(OrderItem ... orders){}// 默认分页条件public <T> Page<T> toMpPage(String defaultSortBy, boolean isAsc){}// 按照create_time字段降序public <T> Page<T> toMpPageDefaultSortByCreateTimeDesc() {}// 按照update_time字段降序public <T> Page<T> toMpPageDefaultSortByUpdateTimeDesc() {}
}

分页响应类

@Data
@AllArgsConstructor
public class PageResult<T> {private Long total;  //总条数private Long pages; // 总页数private List<T> list; // 数据// 返回空分页结果public static <V, P> PageResult<V> empty(Page<P> p){}//将MybatisPlus分页结果转为 VO分页结果public static <V, P> PageResult<V> of(Page<P> p, Class<V> voClass) {}//将MybatisPlus分页结果转为 VO分页结果,允许用户自定义PO到VO的转换方式public static <V, P> PageResult<V> of(Page<P> p, Function<P, V> convertor) {}
}

⚙️ 配置项说明(application.yml

mybatis-plus-kit:response-wrapper-enabled: true  # 是否启用统一响应封装(默认 true)exception-handler-enabled: true # 是否启用全局异常处理(默认 true)

✅ TODO(未来计划)

  • 增加代码生成器支持(可选依赖)

  • 接口权限粒度控制支持(如注解 + AOP 拦截)

  • 通用字段自动填充(createTime, updateTime)

  • 多数据源/分表兼容支持

🧑‍💻 贡献指南

欢迎登录github PR 或 issue!如果你觉得这个项目对你有帮助,欢迎点个 ⭐!

📄 License

Apache 2.0

http://www.xdnf.cn/news/642511.html

相关文章:

  • 15 dart类(get,set,静态,继承,抽象,接口,混入)
  • AUTOSAR图解==>AUTOSAR_SRS_Libraries
  • java数组,ArrayList,LinkedList
  • win主机,Ubuntu,IMX6ULL开发板网络通讯
  • 神经网络学习-Day35
  • 麒麟V10 SP1 2303使用记录(一)安装google浏览器
  • 提高:RMQ问题:【例 3】与众不同
  • 固态硬盘颗粒类型、选型与应用场景深度解析
  • 基于PySide6与pycatia的CATIA几何阵列生成器开发实践
  • 5.25 note
  • uni-app学习笔记十二-vue3中创建组件
  • ISO 20000体系:需求管理与容量管理含义与解释
  • 以下是修改Java版《我的世界》字体的分步指南(DeepSeek)
  • uni-app学习笔记十一--vu3 watch和watchEffect侦听
  • IntelliJ IDEA 中配置 Gradle 的分发方式distribution
  • jvm垃圾回收
  • github项目:llm-guard
  • 函数[x]和{x}在数论中的应用
  • 李沐《动手学深度学习》| 4.4 模型的选择、过拟合和欠拟合.md
  • STL的map和set(关联式容器深度解析)
  • 2025第三届黄河流域网络安全技能挑战赛--Crypto--WriteUp
  • 网络原理入门详解:从零理解互联网如何工作
  • Modbus协议原理
  • 【Hive 开发进阶】窗口函数深度解析:OVER/NTILE/RANK 实战案例与行转列高级技巧
  • Day02
  • springboot日志
  • NotePad++编辑Linux服务器文档
  • 安全权限管理:从零到精通Android动态权限请求机制
  • CV中常用Backbone-3:Clip/SAM原理以及代码操作
  • Spring Boot 项目中常用的 ORM 框架 (JPA/Hibernate) 在性能方面有哪些需要注意的点?