MyBatis与MyBatis-Plus的区别详解

 更新时间:2023年05月29日 11:00:22   作者:路遥叶子  
本文主要介绍了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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:

相关文章

  • 一篇文章带你了解XGBoost算法

    一篇文章带你了解XGBoost算法

    XGBoost全名叫(eXtreme Gradient Boosting)极端梯度提升,经常被用在一些比赛中,其效果显著。它是大规模并行boosted tree的工具,它是目前最快最好的开源boosted tree工具包
    2021-08-08
  • idea +junit单元测试获取不到bean注入的解决方式

    idea +junit单元测试获取不到bean注入的解决方式

    这篇文章主要介绍了idea +junit单元测试获取不到bean注入的解决方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • spring中使用mybatis实现批量插入的示例代码

    spring中使用mybatis实现批量插入的示例代码

    这篇文章主要介绍了spring中使用mybatis实现批量插入的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • 如何解决SpringBoot集成百度UEditor图片上传后直接访问404

    如何解决SpringBoot集成百度UEditor图片上传后直接访问404

    在本篇文章里小编给大家整理的是一篇关于如何解决SpringBoot集成百度UEditor图片上传后直接访问404相关文章,需要的朋友们学习下。
    2019-11-11
  • 编程语言榜单Java与Python并列第二!Julia下滑

    编程语言榜单Java与Python并列第二!Julia下滑

    日新月异的技术圈,随着云、大数据、人工智能等主流技术的广泛应用,作为开发利器的编程语言的最新发展趋势也在无形中发生了变化,本文主要介绍了java、Python、Julia等语言在Resmonk榜单的排名
    2021-08-08
  • SpringBoot Event实现异步消费机制的示例代码

    SpringBoot Event实现异步消费机制的示例代码

    这篇文章主要介绍了SpringBoot Event实现异步消费机制,ApplicationEvent以及Listener是Spring为我们提供的一个事件监听、订阅的实现,内部实现原理是观察者设计模式,文中有详细的代码示例供大家参考,需要的朋友可以参考下
    2024-04-04
  • Java数据结构与算法之二分查找详解

    Java数据结构与算法之二分查找详解

    这篇文章主要介绍了Java数据结构与算法之二分查找详解,二分查找算法是一种在有序数组中查找某一特定元素的搜索算法,其思想就是不断地将有序查找表“一分为二”,逐渐缩小搜索区域,进而找到目标元素,需要的朋友可以参考下
    2023-12-12
  • spring-boot整合dubbo:Spring-boot-dubbo-starter

    spring-boot整合dubbo:Spring-boot-dubbo-starter

    这篇文章主要介绍了spring-boot整合dubbo:Spring-boot-dubbo-starter的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-05-05
  • SpringBoot项目速度提升之延迟初始化(Lazy Initialization)详解

    SpringBoot项目速度提升之延迟初始化(Lazy Initialization)详解

    延迟初始化(Lazy Initialization)是一种在需要时才创建或加载对象的策略,以减少启动时间和资源消耗,本文就来讲讲延迟初始化的具体使用吧
    2023-05-05
  • java数据结构基础:单,双向链表

    java数据结构基础:单,双向链表

    这篇文章主要介绍了Java的数据解构基础,希望对广大的程序爱好者有所帮助,同时祝大家有一个好成绩,需要的朋友可以参考下,希望能给你带来帮助
    2021-07-07

最新评论