MyBatis与MyBatis-Plus的区别详解
作者:路遥叶子
一、外观图标
MyBatis的图标:
MyBatis-Plus的图标:
两者关系:
MyBatis-Plus (简称 MP)是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
MyBatis-Plus的愿景:
我们的愿景是成为 MyBatis 最好的搭档,就像 魂斗罗 中的 1P、2P,基友搭配,效率翻倍。
二、功能强化
1、mybatis 是一个优秀的持久性框架,它简化了 jdbc 的代码,可以使用简单的 xml 或注解来配置来映射;
2、plus加强版的意思,对 mybatis 继续简化。
3、mybatis-plus 是 mybatis 的增强工具,它在 mybatis 的基础上又添加了许多的功能,在 mybatis-plus 上既可以使用自身特有的功能,还可以使用 mybatis 的原生功能;所以说mybatis-plus 是为简化开发,提高效率而生。
三、sql语句
MyBatis :
- SQL语句封装在配置文件中,便于统一管理与维护;提供了动态SQL标签,支持编写动态SQL。以及提供映射标签,支持对象与数据库的ORM字段关系映射。
- 访问数据库的 sql 语句存放于 mapper (或Dao) 包下的 xml 配置文件中。
Mybatis Plus:
- 内置通用 Mapper、通用 Service,不需要再写 xml 了,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求 。
- 内置 Sql 注入剥离器,有效预防Sql注入攻击 。
四、通用mapper
MyBatis:
对于一些简单的普通的增删改查,接口可继承通用Mapper进行实现;但对于一些复杂的增删改查功能可在接口方法上写明注解sql 开发实现。
注意:
- 仅仅适用于单表而言的增删改查
- 所创建的接口只需继承mapper接口,以及在javaBean类中注释说明表名和主键
public interface CourseMapper extends Mapper<Course> {}
@Table(name = "course") //对应数据库表名 public class Course { //课程类 @Id //标识主键 private int cid ; private String cname ; private int tid ; //一个课程对应一个老师 private Teacher teacher ; //一个课程对于一个成绩 private Score score ; //无参方法 //有参方法 //get/set方法 }
1、继承Mapper
2、JavaBean对其进行注释说明表名和主键
@Table(name = "表名") //对应数据库表名
@Id //标识主键
Mybatis Plus:
将Mybatis + 通用Mapper + PageHelper
升级成 MyBatis Plus
@TableName("user") //表名 public class User{ @TableId(type = IdType.AUTO) //标识主键Id,设置为自动增长 private Integer cid; private String cname; private String password; private String telephone; private String money; private Integer version; }
@Mapper public interface CustomerMapper extends BaseMapper<User> { }
1、继承BaseMapper;BaseMapper 封装CRUD操作。
2、JavaBean对其进行注释说明表名和主键
- @TableName("表名") //对应数据库表名
- @TableId //标识主键
Mybatis Plus:CRUD 接口,通用Service
service接口
public interface CustomerService extends IService<Customer> { }
service实现类
public class CustomerServiceImpl extends ServiceImpl<CustomerMapper,Customer> implements CustomerService { }
五、两者区别
如果Mybatis-Plus是扳手,那Mybatis Generator就是生产扳手的工厂。
MyBatis:
- 所有SQL语句全部自己写
- 手动解析实体关系映射转换为MyBatis内部对象注入容器
- 不支持Lambda形式调用
Mybatis Plus:
- 强大的条件构造器,满足各类使用需求
- 内置的Mapper,通用的Service,少量配置即可实现单表大部分CRUD操作
- 支持Lambda形式调用
- 提供了基本的CRUD功能,连SQL语句都不需要编写
- 自动解析实体关系映射转换为MyBatis内部对象注入容器
写到最后
到此这篇关于MyBatis与MyBatis-Plus的区别详解的文章就介绍到这了,更多相关MyBatis与MyBatis-Plus内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!