MyBatis与MyBatis-Plus的区别

1. 什么是MyBatis
MyBatis是一种持久层框架,也属于ORM映射。
MyBatis是一个实现了JPA规范的用来连接数据库并对其进行增删改查操作的开源框架 (就和传统的JDBC一样,就是个连接数据库的东西),其实,它底层就是一个JDBC封装的组件。MyBatis的前身是Ibatis,Ibatis创建与2002年最初为Apache下面的一个开源项目,2010迁移到google code下面并改名为MyBatis。
*

MyBatis的优缺点:*

1.sql语句与代码分离,存放于xml配置文件中:
优点:便于维护管理,不用在java代码中找这些语句;

缺点: JDBC方式可以用用打断点的方式调试,但是Mybatis不能,需要通过log4j日志输出日志信息帮助调试,然后在配置文件中修改。

2.用逻辑标签控制动态SQL的拼接:
优点:用标签代替编写逻辑代码;

缺点:拼接复杂SQL语句时,没有代码灵活,拼写比较复杂。不要使用变通的手段来应对这种复杂的语句。

3.查询的结果集与java对象自动映射:

优点:保证名称相同,配置好映射关系即可自动映射或者,不配置映射关系,通过配置列名=字段名也可完成自动映射。

缺点:对开发人员所写的SQL依赖很强。

4.编写原声SQL:
优点:接近JDBC,比较灵活。

缺点:对SQL语句依赖程度很高;并且属于半自动,数据库移植比较麻烦,比如mysql数据库编程Oracle数据库,部分的sql语句需要调整。

2.什么是MyBatis-Plus
Mybatis-Plus(简称MP)是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发、提高效率而生。这是官方给的定义,关于mybatis-plus的更多介绍及特性,可以参考mybatis-plus官网。那么它是怎么增强的呢?其实就是它已经封装好了一些crud方法,我们不需要再写xml了,直接调用这些方法就行,就类似于JPA。
MyBatis-Plus的存在解决了我们使用Mybatis时,每当要写一个业务逻辑的时候都要在dao层写一个方法,再对应一个SQL

总结:MP的宗旨是简化开发,但是它在提供方便的同时却容易造成代码层次混乱,我们可能会把大量数据逻辑写到service层甚至contoller层中,使代码难以阅读。在使用MP时一定要做分析,不要将所有数据操作都交给MP去实现。毕竟MP只是mybatis的增强工具,它并没有侵入mybatis的原生功能,在使用MP的增强功能的同时,原生mybatis的功能依然是可以正常使用的。

### MyBatis MyBatis-Plus 的主要差异 #### 1. **核心定位** MyBatis 是一个持久层框架,专注于 SQL 手动编写和映射关系管理。它提供了灵活的手写 SQL 能力以及强大的动态 SQL 支持[^1]。然而,随着业务复杂度增加,手写重复性的 CRUD 操作会显著降低开发效率。 相比之下,MyBatis-Plus (MP) 是 MyBatis 的增强工具,其设计目标是在不改变 MyBatis 核心行为的前提下提供额外的功能支持,从而减少冗余代码并提升开发效率。 --- #### 2. **内置功能扩展** ##### 自动化 CRUD MyBatis 需要手动编写 Mapper 接口及其对应的 XML 文件实现基本的增删改查操作。而在 MyBatis-Plus 中,这些基础的操作已经被封装到通用 Service 层接口 `IService` 和基类 `BaseMapper` 中,无需再单独定义方法。 示例代码展示如何快速完成数据查询: ```java // 使用 BaseMapper 提供的方法直接执行查询 List<User> users = userMapper.selectList(null); ``` ##### 分页插件 分页是常见的需求之一,但在原生 MyBatis 下通常需要自行拼接 LIMIT 子句或者引入第三方库(如 PageHelper)。而 MyBatis-Plus 内置了分页插件,只需简单配置即可启用。 启动分页插件的方式如下所示: ```java @GlobalTable(pageSize = 10) public class User {} ``` --- #### 3. **性能优化特性** MyBatis-Plus 还针对一些常见场景进行了性能上的改进。例如,当批量插入大量记录时,默认情况下每条语句都会触发一次提交动作,这可能导致事务开销过高。为此,该框架新增了一个名为 BatchExecutor 的机制用于集中处理此类任务。 以下是利用批处理方式向数据库导入多条数据的例子: ```java userMapper.insertBatchSomeColumn(userList); ``` --- #### 4. **迁移注意事项** 尽管两者兼容良好,但从传统 MyBatis 切换至 MyBatis-Plus 可能遇到某些特殊情况需要注意解决办法: - 如果存在全局配置文件路径指定,则需移除相关属性以防冲突发生; - 默认开启下划线转驼峰命名规则可能影响原有逻辑运行效果,建议重新评估设置状态后再决定是否保留此项开关[^4]。 --- #### 5. **生态体系完善程度** 除了上述提到的核心能力外,围绕着 MyBatis-Plus 构建起来的一系列周边组件同样值得关注。比如专门服务于代码生成环节的产品——mybatis-plus-generator-ui ,不仅能够满足日常所需模板渲染要求,还允许用户借助可视化界面自由调整参数选项以适应不同环境下的特殊诉求[^3]。 总结来说,无论是从易用性还是功能性角度来看,选用 MyBatis-Plus 对于大多数 Java Web 应用而言都是明智之举。 ---
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值