MyBatis和MyBatis-Plus的差别和优缺点

MyBatis和MyBatis-Plus的主要差别在于功能和特性方面。MyBatis是一个优秀的持久层框架,它支持自定义SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解来配置和映射原生信息,将接口和Java的POJOs(Plain Old Java Objects, 普通的Java对象)映射成数据库中的记录。

然而,MyBatis-Plus(简称MP)是MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生。MyBatis-Plus提供了更加丰富的功能特性,如分页插件、代码生成器、注解支持等。编码方式上,MyBatis在进行数据持久化时需要编写大量的XML配置文件和SQL语句,需要熟悉XML和SQL的编写规范。而MyBatis-Plus使用注解和API的方式进行数据持久化,使用更加便捷和简洁。性能和效率方面,MyBatis-Plus在功能扩展的同时也对性能进行了优化,提供了高效的SQL语句构建和执行功能,并支持动态SQL语句生成,从而提高了应用的性能和效率。

至于优缺点,MyBatis的优点包括:

  1. 简单易学:MyBatis本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个Sql映射文件易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。
  2. 灵活:MyBatis不会对应用程序或者数据库的现有设计强加任何影响。SQL写在XML里,从Java代码彻底分离,便于统一管理;提供XML标签,支持编写动态SQL。并且要调整SQL语句非常方便,无需要改变Java代码。
  3. 解除数据库耦合:通过提供DAO层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。DAO层封装了数据访问细节,调用者只需要关心参数和返回值,无需关注内部实现。
  4. 提供映射标签,支持对象关系映射的映射过程中,对象属性的命名和数据库字段的命名也可以通过映射文件进行匹配,而不需要修改Java代码。
  5. 提供XML标签,支持编写动态SQL。并且要调整SQL语句非常方便,无需要改变Java代码。

MyBatis的缺点包括:

  1. SQL语句的编写工作量较大,尤其是当字段多、关联表多时,对开发人员编写SQL语句的功底有一定要求。
  2. SQL语句依赖于数据库,导致数据库移植性差,不能随意更换数据库。

至于MyBatis-Plus的优缺点,优点主要包括:

  1. 提供了分页插件,开发者无需关心具体操作,配置好插件之后,写分页等同于普通List查询。
  2. 提供了代码生成器,可以通过代码来自动快速生成Mapper、Model、Service、Controller层代码,大大减少了开发者的开发量。
  3. 支持全局通用方法注入,可以减少重复的代码编写。
  4. 提供了多种主键策略,支持多达4种主键策略(内含分布式唯一ID生成器),可自由配置,完美解决主键问题。
  5. 支持关键词自动转义,支持数据库关键词(order、key…)自动转义,还可自定义关键词。

至于MyBatis-Plus的缺点,主要在于其过于依赖Mybatis以及Mybatis-Spring,如果要实现多表联查的业务需求,会比Mybatis更加复杂。此外,项目引入第三方插件包,未来升级有一定的兼容性问题。

总的来说,MyBatis和MyBatis-Plus各有其优点和适用场景,选择使用哪个框架取决于项目的具体需求和开发团队的实际情况。

相关推荐

  1. MyBatisMyBatis-Plus差别优缺点

    2024-03-10 12:58:04       23 阅读
  2. jpa mybatis 优缺点

    2024-03-10 12:58:04       12 阅读
  3. mybatismybatis-plus区别

    2024-03-10 12:58:04       13 阅读
  4. MybatisMybatis-Plus面试题

    2024-03-10 12:58:04       18 阅读
  5. MyBatisMyBatis Plus比较详解

    2024-03-10 12:58:04       18 阅读
  6. MybatisSpring Data Jpa优缺点比较(八股文)

    2024-03-10 12:58:04       20 阅读
  7. mybatis-plus使用

    2024-03-10 12:58:04       20 阅读
  8. MyBatis-Plus

    2024-03-10 12:58:04       24 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-10 12:58:04       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-10 12:58:04       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-10 12:58:04       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-10 12:58:04       18 阅读

热门阅读

  1. Jetty的ssl模块

    2024-03-10 12:58:04       23 阅读
  2. Linux的环境安装以及项目部署

    2024-03-10 12:58:04       20 阅读
  3. WPF Interaction

    2024-03-10 12:58:04       21 阅读
  4. 当Github启用PSA之后...

    2024-03-10 12:58:04       18 阅读
  5. 鸿蒙 进程模型-公共事件

    2024-03-10 12:58:04       19 阅读
  6. 解释 Git 的基本概念和使用方式

    2024-03-10 12:58:04       21 阅读
  7. VGG16-CF-VGG11实验报告

    2024-03-10 12:58:04       23 阅读