MyBatis和MyBatis_Plus有什么区别【面试常考题】

导读:本篇文章讲解 MyBatis和MyBatis_Plus有什么区别【面试常考题】,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

MyBatis和MyBatis_Plus的区别

MyBatis_Plus

MyBatis_Plus 是一个 MyBatis 的增强工具,只是在 MyBatis 的基础上增强了却没有做改变,MyBatis-Plus支持所有MyBatis原生的特性,所有引入MyBatis-Plus不会对现有的MyBatis框架产生任何影响。

MyBatis 和 MyBatis-Plus 的区别

MyBatis

  • 所有SQL语句全部要自己写
  • 手动解析实体关系映射转换为MyBatis内部对象注入容器
  • 不支持Lambda形式调用

MyBatis-Plus

  • 支持Lambda形式调用
  • 强大的条件构造器,满足各类使用需求
  • 内置Mapper,通用的Service,少量的配置即可实现单表大部分CRUD操作
  • 提供了基本的CRUD功能连SQL语句都不用自己编写
  • 自动解析实体关系映射转换为MyBatis内部对象注入容器

MyBatis优缺点

优点:

  • MyBatis封装了JBDC底层访问数据库的细节,使我们程序猿不需要与JDBC API打交道,就可以访问数据库
  • MyBatis简单易学,程序猿直接编写SQL语句,适合于对SQL语句性能要求比较高的项目
  • SQL语句封装在配置文件中,便于统一管理与维护,降低了程序的耦合度
  • SQL代码从程序代码中彻底分离出来,可重用
  • 提供了动态SQL标签,支持编写动态SQL
  • 提供映射标签,支持对象与数据库的ORM字段关系映射

缺点:

  • 过于依赖数据库SQL语句,导致数据库移植性差,更换数据库,如果SQL语句有差异,SQL语句工作量大
  • 由于xml里标签id必须唯一,导致DAO中方法不支持方法重载

MyBatis-Plus优点

优点

  • 依赖少:仅仅依赖 Mybatis 以及 Mybatis-Spring 。

  • 损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作 。

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

  • 通用CRUD操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求 。

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

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

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

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

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

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

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

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

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

  • 默认将实体类的类名查找数据库中的表,使用@TableName(value=“table1”)注解指定表名,@TableId指定表主键,若字段与表中字段名保持一致可不加注解

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/119496.html

(0)
seven_的头像seven_bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!