mybatis-plus极大简化单表crud开发:无需sql和xml,通过注解+继承basemapper即可调用全量方法;需引入starter、配置数据源与驼峰映射、注册分页拦截器、实体类加@tablename/@tableid等注解,mapper继承basemapper即获基础操作,支持lambdaquerywrapper条件查询和selectpage分页。

MyBatis-Plus 能让单表 CRUD 开发变得极简:不用写 SQL、不用配 XML,靠注解+继承就能直接调用全量操作方法。核心在于它把重复性最高的基础逻辑全部封装好了,开发者只需聚焦业务语义。
引入依赖并完成基础配置
在 pom.xml 中添加 MyBatis-Plus Starter(自动整合 MyBatis,无需再引原生 mybatis-spring-boot-starter):
- MySQL 驱动按实际版本选择,如
mysql-connector-j - 推荐搭配 Lombok,减少实体类的 getter/setter 等模板代码
-
application.yml 中配置数据源后,只需开启下划线转驼峰:
mybatis-plus.configuration.map-underscore-to-camel-case=true - 分页功能需手动注册
PaginationInnerInterceptorBean,否则selectPage不生效
实体类加注解,明确映射关系
实体类不是普通 POJO,需通过注解告诉 MP 如何对应数据库:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
-
@TableName("user")显式指定表名(避免类名小写转下划线出错) -
@TableId(type = IdType.ASSIGN_ID)推荐雪花 ID,分布式安全且不依赖数据库自增 -
@TableField(fill = FieldFill.INSERT)标记创建时间字段,再配合MetaObjectHandler实现自动填充 - 普通字段如
userName默认匹配user_name,无需额外注解
Mapper 继承 BaseMapper,开箱即用
定义接口时直接继承 BaseMapper<user></user>,立刻获得以下方法:
-
selectById、insert、updateById、deleteById - 条件查询用
QueryWrapper或更安全的LambdaQueryWrapper,例如:lambdaQueryWrapper.eq(User::getStatus, 1).like(User::getName, "张") - 分页查用
selectPage(new Page(1, 10), wrapper),MP 自动改写为物理分页 SQL
Service 层可选继承 IService,进一步封装
如果希望统一管理事务或扩展批量操作,推荐使用 Service 模式:
- Service 接口继承
IService<user></user> - 实现类继承
ServiceImpl<usermapper user></usermapper> - 即可直接调用
saveBatch、remove(支持条件删除)、list等方法 - 复杂逻辑仍可在 Service 中调用 Mapper 原生方法,不锁死扩展能力
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










