MyBatis:
- 手动解析实体类关系映射转换为MyBatis内部对象注入容器
- 不支持Lambda形式调用
- 所有的SQL语句全部都要自己写
优点:
1、MyBatis简单易学,程序猿直接编写SQL语句,适合于对SQL语句性能要求比较高的目
2、SQL语句封装在配置文件中,便于统一管理与维护,降低了程序的耦合度
3、SQL代码从程序代码中彻底分离出来,可重用
4、提供了动态SQL标签,支持编写动态SQL
5、提供映射标签,支持对象与数据库的ORM字段关系映射
缺点:
过度依赖数据库SQL语句,导致数据库移植性差,更换数据库,如果SQL语句有差异,SQL语句工作量会很大
MyBatis-plus:
- 支持Lambda形式调用
- 强大的条件构造器,满足各类使用需求
- 内置Mapper,通用的service,少量的配置即可实现大部分操作
- 提供了基本的CRUD功能
- 自动解析实体关系映射转换为MyBatis内部对象注入
优点:
1、依赖少:仅仅依赖 Mybatis 以及 Mybatis-Spring 。
2、损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作 。
3、预防Sql注入:内置 Sql 注入剥离器,有效预防Sql注入攻击 。
4、通用CRUD操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求 。
5、多种主键策略:支持多达4种主键策略(内含分布式唯一ID生成器),可自由配置,完美解决主键问题 。
6、支持热加载:Mapper 对应的 XML 支持热加载,对于简单的 CRUD 操作,甚至可以无 XML 启动
7、支持ActiveRecord:支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可实现基本 CRUD 操作
缺点:
由于SQL代码分离,如果有报错不容易找到错误所在