MyBatis 和 MyBatisPlus 的比较

MyBatis 和 MyBatisPlus 的比较

MyBatis

  • 一个简单易学、没有第三方依赖的 数据访问框架封装了 JDBC 底层访问数据库的细节

  • 解除 SQL 语句和程序代码的耦合,提供了 DAO 层(数据访问逻辑),将业务逻辑和数据访问逻辑分离(不会影响其他程序或数据库)。(必须这样,xml 文件就是要与数据访问接口相关联的)

  • 使用原生的 SQL 语句来完成数据访问,可以用 xml 文件或注解的方式编写 SQL 语句,方便维护、优化和统一管理。

  • 所有的 SQL 语句都是自己写的,这导致过度依赖数据库的 SQL 语句,不同的数据库 SQL 语句有差异,数据库移植性差,同时编写 SQL 语句的工作量很大。

  • 将查询到的数据进行存储时,支持驼峰命名映射与 xml 文件设置对象和数据库字段映射,有对象关系映射标签。

  • 手动解析实体关系映射转换为 MyBatis 内部对象,然后注入容器中进行操作。

  • 不支持 Lambda 形式调用。

  • xml 文件编写 SQL 语句的方式,不适合方法重载,不支持 DAO 类的方法重载,因为 xml 标签中,id(id 对应 DAO 类的方法的名称) 唯一。

  • xml 文件提供了动态 SQL 标签,支持编写动态 SQL

MyBatisPlus

  • 一键移植:MyBatisPlus 是在 MyBatis 的基础上进行扩展的、只做增强不做改变的 MyBatis 升级版。(即:引入 MybatisPlus 不会对现有的 Mybatis 构架产生任何影响)

  • 依赖同样少:仅依赖 MyBatis 和 MyBatis-Spring。

  • 损耗小内置了基本的单表 CURD(增删查改)语句,性能基本无损耗,面向对象操作。

  • 通用 CRUD 操作:内置的 CURD 方法是通用的泛型接口,DAO 类需要实现 BaseMapper接口,实体类需要序列化,Service 类同样有相应的泛型接口。(仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求)

  • 自动解析实体关系映射转换为 MyBatis 内部对象,然后注入容器中进行操作。

  • 支持 Lambda 形式调用。

  • 可以预防 SQL 注入:内置 Sql 注入剥离器,有效预防Sql注入攻击。

  • 多种主键策略:支持多达 4 种主键策略(内含分布式唯一 ID 生成器),可自由配置,完美解决主键问题。

  • 内置分页插件:基于 Mybatis 物理分页,开发者无需关心具体操作,配置好插件之后,写分页等同于普通 List 查询。

  • 内置性能分析插件:可输出 SQL 语句以及其执行时间,建议开发测试时启用该功能,能有效解决慢查询。

  • 内置全局拦截插件:提供全表 delete、update 操作智能分析阻断,预防误操作。

  • 实体类编写中:使用 @TableName(value=“table1”) 注解指定表名。(必加)

  • 使用 @TableId(value=“idName”) 指定表主键。(必加)

  • 使用 @TableField(value = "field") 指定表字段,若字段与表中字段名保持一致可不加注解。

  • 支持热加载:Mapper 对应的 XML 支持热加载,对于简单的 CRUD 操作,甚至可以无 XML 启动。

  • 支持 ActiveRecord:支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可实现基本 CRUD 操作。

  • 支持代码生成:采用代码或者 Maven 插件可快速生成 Mapper、Model、Service、Controller 层代码(生成自定义文件,避免开发重复代码),支持模板引擎、有超多自定义配置等。

  • 支持自定义全局通用操作:支持全局通用方法注入(Write once, use anywhere)。

  • 支持关键词自动转义:支持数据库关键词(order、key…)自动转义,还可自定义关键词 。

总结

  • MyBatisPlus 是 MyBatis 的升级版,可以直接将 MyBatis 框架替换成 MyBatisPlus 框架代码无需改动即可运行。(当然,想要使用 MyBatisPlus 的新功能就必须改动代码)

  • MyBatisPlus 在 MyBatis 的不支持 Lambda 形式调用上改为:支持 Lambda 形式调用

  • MyBatisPlus 在实体类配置中添加了:@TableName(value=“”)、@TableId(value=“”)、@TableField(value = "") 三个注解,用来映射数据库表及表字段 与 实体类的关系

  • 增加了:主键策略(4 种)分页插件全局拦截插件(智能拦截 delete、update 操作)性能分析插件 等等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十⑧

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值