mabatis-plus 和mabatis 的区别

MyBatis-PlusMyBatis 的增强工具,在 MyBatis 的基础上做了扩展和封装,让开发更高效。以下是核心区别:


核心定位

表格

MyBatis MyBatis-Plus
定位 持久层框架 MyBatis 的增强插件/工具
关系 基础框架 基于 MyBatis,不能独立使用
开发方式 需手写大量 SQL/XML 提供通用 CRUD,减少手写 SQL

主要功能对比

表格

功能 MyBatis MyBatis-Plus
基础 CRUD 需手写 insert/update/delete/select 内置通用方法,直接调用,零 SQL
条件构造器 QueryWrapper / LambdaQueryWrapper 动态拼 SQL
分页插件 需自行实现或使用 PageHelper 内置分页插件,一行代码搞定
代码生成器 自动生成 Entity、Mapper、Service、Controller
主键策略 需配置或手写 内置雪花算法、自增等多种主键生成策略
逻辑删除 需自行实现 注解 @TableLogic 自动支持
自动填充 @TableField(fill = ...) 自动填充创建/更新时间
多租户/SQL 注入 需自行实现 内置插件支持
性能分析 内置 SQL 执行性能分析插件

代码对比示例

MyBatis 写法

java

复制

复制代码
// 需手写 XML 或注解 SQL
@Select("SELECT * FROM user WHERE id = #{id}")
User selectById(Long id);

@Insert("INSERT INTO user(name, age) VALUES(#{name}, #{age})")
int insert(User user);

MyBatis-Plus 写法

java

复制

复制代码
// 继承 BaseMapper,自带全套 CRUD,无需写任何 SQL
public interface UserMapper extends BaseMapper<User> {}

// 直接使用
userMapper.selectById(1L);           // 根据 ID 查
userMapper.insert(user);             // 插入
userMapper.updateById(user);         // 根据 ID 更新
userMapper.deleteById(1L);           // 根据 ID 删除

MyBatis-Plus 条件构造器(动态 SQL)

java

复制

复制代码
// 复杂查询无需手写 SQL
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(User::getAge, 18)
       .like(User::getName, "张")
       .orderByDesc(User::getCreateTime);

List<User> list = userMapper.selectList(wrapper);
// 自动生成: SELECT * FROM user WHERE age = 18 AND name LIKE '%张%' ORDER BY create_time DESC

如何选择?

表格

场景 建议
简单 CRUD 多、追求开发效率 MyBatis-Plus(推荐)
复杂 SQL 多、需要精细控制 MyBatis 原生 + Plus 混合使用
老项目维护、已有大量手写 SQL 保持 MyBatis 原生
新项目、Spring Boot 项目 直接用 MyBatis-Plus Starter

一句话总结

MyBatis 是"给你工具,你自己造";MyBatis-Plus 是"常用功能已经造好了,你直接用"。

两者可以完全共存------简单操作用 Plus 的通用方法,复杂业务写原生 MyBatis SQL,互不冲突。

相关推荐
瀚高PG实验室37 分钟前
java中间件无法连接数据库
java·数据库·中间件·瀚高数据库
ULIi096kr40 分钟前
MySQL大表优化终极方案:单表数据量上限、卡顿解决、分表分库实战教程
数据库·mysql
东南门吹雪41 分钟前
JAVA TCP socket编程框架
java·高并发·socket·tcp·nio
霖霖总总41 分钟前
[MongoDB小技巧07]MongoDB 深度解析:find中投影与排序的底层机制与性能调优实战
数据库·mongodb
xingyuzhisuan41 分钟前
缓存命中率提升方案:从 30% 优化至 82% 全流程优化记录
java·开发语言·缓存·ai
TechWayfarer43 分钟前
云服务器地域怎么选:用离线IP数据库识别用户来源并优化部署
服务器·数据库·python·tcp/ip·数据分析
deviant-ART1 小时前
MySQL里的三个concat函数
数据库·mysql
一条泥憨鱼1 小时前
Java开发效率神器:Lombok从入门到精通!
java·后端·学习·开发·lombok
Jinkxs1 小时前
Python基础 - 初识内置函数 Python自带的便捷工具
android·java·python
熠熠仔1 小时前
Spring Boot 与 MyBatis-Plus 空间几何数据集成指南
spring boot·后端·mybatis