mybatis 和mybatis-plus 有什么区别?

发布于:2021-12-03 08:48:03

mybatis 和mybatis-plus 有什么区别?

MyBatis 是持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。MyBatis前身是iBatis,是Clinton Begin在2001年发起的一个开源项目。最初侧重于码软件开发,后续发展成为一款基于java的持久层框架。Mybatis是一款优秀的持久层框架支持自定义SQL查询、存储过程和高级映射,消除了几乎所有的JDBC代码和参数的手动设置以及结果集的检索。MyBatis可以使用简单的XML或者注解进行映射和配置,通过将参数映射到配置的SQL最终解析为执行的SQL语句,查询后将SQl结果集映射成java对象返回。MyBatis提供的持久层框架包括SQL Maps(Mapper)和Data Access Objects(DAO),相对于Hibernate而言它提供的是一种把自动化的ORM实现。MyBatis中一级缓存会默认启用(本地缓存)且不受控制,一般说缓存时指的是MyBatis的二级缓存 。
MyBatis-plus是一款MyBatis的增强工具,在MyBatis 的基础上只做增强不做改变。其是国内团队苞米豆在MyBatis基础上开发的增强框架,扩展了一些功能,以提高效率。引入 Mybatis-Plus 不会对现有的 Mybatis 构架产生任何影响,而且 MyBatis-plus 支持所有 Mybatis 原生的特性。主要做了那些改动呢? 首先是将简单的增删改查变得更加简化了,咱细细聊聊做了那些增强那些改动。

依赖少:仅仅依赖 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指定表主键,若字段与表中字段名保持一致可不加注解。

Mybatis-Plus(MP)在 MyBatis 的基础上只做增强不做改变,简化开发、提高效率。但它也提供了一些很有意思的插件,比如SQL性能监控、乐观锁、执行分析等。


举个比较生动的例子,就是如果Mybatis Plus是扳手,那Mybatis Generator就是生产扳手的工厂,像极了设计模式中的简单工厂模式。
MyBatis:一种操作数据库的框架,提供一种Mapper类,支持让你用java代码进行增删改查的数据库操作,省去了每次都要手写sql语句的麻烦。但是!有一个前提,你得先在xml中写好sql语句,也是很麻烦的。
MyBatis-Plus的存在就是为了稍稍弥补Mybatis的不足。在我们使用Mybatis时会发现,每当要写一个业务逻辑的时候都要在DAO层写一个方法,再对应一个SQL,即使是简单的条件查询、即使仅仅改变了一个条件都要在DAO层新增一个方法,针对这个问题, MyBatis-Plus就提供了一个很好的解决方案,它可以让我们避免许多重复性的工作。

相关推荐

最新更新

猜你喜欢