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

【Java后端】MyBatis 和 MyBatis-Plus (MP) 的区别

MyBatisMyBatis-Plus (MP) 的区别


一、定位不同

  • MyBatis
    一款优秀的 ORM 框架,主要提供 SQL 映射 功能,需要开发者手写 SQL,并在 XML 或注解中维护映射关系。它强调 SQL 可控,灵活度高,但需要写很多重复的代码。

  • MyBatis-Plus (MP)
    基于 MyBatis 开发的 增强工具,在保持 MyBatis 特性的同时,提供了 大量的 CRUD 封装、分页、代码生成器、条件构造器等功能,减少了模板化的 SQL 编写,提升开发效率。


二、主要区别点

对比点MyBatisMyBatis-Plus
定位持久层框架MyBatis 的增强工具
SQL手写为主,全部需要自己维护内置通用 CRUD,大部分场景不用写 SQL
DAO 层Mapper 接口必须写增删改查方法提供 BaseMapper,继承后自动拥有 CRUD 方法
分页功能需要自己写分页逻辑或插件内置分页插件,开箱即用
代码生成官方无支持内置代码生成器,可快速生成 Entity、Mapper、Service、Controller
条件构造需要写动态 SQL 或使用 OGNL提供 Wrapper 条件构造器,链式调用,简洁优雅
学习曲线灵活但代码量大,SQL 掌控度高上手简单,适合快速开发
适用场景复杂 SQL、多表关联、性能调优中小型项目、快速迭代、CRUD 占多数场景

三、代码对比示例

MyBatis(传统写法):

// UserMapper.java
@Mapper
public interface UserMapper {@Select("SELECT * FROM user WHERE id = #{id}")User selectById(Long id);@Insert("INSERT INTO user(name, age) VALUES(#{name}, #{age})")int insert(User user);
}

调用:

User user = userMapper.selectById(1L);

MyBatis-Plus(简化后):

// UserMapper.java
@Mapper
public interface UserMapper extends BaseMapper<User> {// 继承 BaseMapper 即可,基本的 CRUD 都不用写了
}

调用:

User user = userMapper.selectById(1L);
userMapper.insert(new User("Tom", 18));

四、总结建议

  • 如果项目里 业务 SQL 较复杂(比如几十个表关联、大量存储过程),建议用 MyBatis,保持 SQL 的灵活性和可控性。

  • 如果项目里 CRUD 居多、迭代快,尤其是中后台管理系统,建议用 MyBatis-Plus,大幅减少重复代码,提高开发效率。

  • 实际上很多团队会 混用:复杂 SQL 用 MyBatis 手写,简单表就交给 MP 的内置方法。


http://www.dtcms.com/a/403103.html

相关文章:

  • iOS PPBluetoothKit接入无法找到头文件问题
  • leetcode orb slam3 3/99--> leetcode49 Group Anagrams
  • c# 读取xml到datagridview
  • 开源的 CSS 动画库
  • (三)过滤器及组件化开发
  • [NewBeeBox] A JavaScript error occurred in the main process
  • 【LangGraph】ReAct构建-LangGraph简单实现
  • 做毕业设计哪个网站好网站怎样做百度推广
  • Python高效合并Excel多Sheet工作表,告别繁琐手动操作
  • 自动跳转到wap网站外贸网站建设制作设计案例
  • 【Linux】 服务器无 sz 命令时的文件传输和日志查看方案
  • 【TVM 教程】设置 RPC 系统
  • 在ssh远程连接的autodl服务器(中国无root权限服务器)上使用copilt的Claude模型
  • Ansible 自动化运维:集中化管理服务器实战指南
  • 自动化运维工具 Ansible 集中化管理服务器
  • 【好玩的开源项目】使用Docker部署LMS轻量级音乐服务器
  • Netty从0到1系列之RPC通信
  • Coze源码分析-资源库-创建数据库-后端源码-安全与错误处理
  • LeetCode:52.腐烂的橘子
  • LeetCode算法日记 - Day 52: 求根节点到叶节点数字之和、二叉树剪枝
  • 四种方法解决——力扣189.轮转数组
  • ⸢ 伍-Ⅱ⸥ ⤳ 默认安全治理实践:水平越权检测 前端安全防控
  • 力扣856
  • Leetcode94.二叉数的中序遍历练习
  • 多种解法全解析——力扣217. 存在重复元素
  • 用python做的网站多吗二手书交易网站策划书
  • phpcms网站源码ui培训班多少钱
  • Android Studio 导入 opencv
  • 在线网站做成appdede网站地图样式修改
  • 全新尚界H5凭借HUAWEI XMC数字底盘引擎技术,让湿滑路面也“稳”操胜券