【MyBatis】 MyBatis与MyBatis-Plus的区别

简介: 【MyBatis】 MyBatis与MyBatis-Plus的区别

一、外观图标


MyBatis的图标:


001e120c622b40929fd97971bf3cc98f.png


MyBatis-Plus的图标:


8a21ef1065644b85a1c7f8c17e823886.png


两者关系:


MyBatis-Plus (简称 MP)是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。


MyBatis-Plus的愿景:


我们的愿景是成为 MyBatis 最好的搭档,就像 魂斗罗 中的 1P、2P,基友搭配,效率翻倍。


4157f49eb5394e888b43c5b0a31d1c21.png


二、功能强化


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 配置文件中。


d4b4d0f07ae04cc0a5e3eec69c1822c1.png


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

56715cac4fdc431891570fcaddc42080.png

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内部对象注入容器


相关文章
|
1月前
|
SQL 安全 Java
MyBatis(6)#{}和${}的区别
在MyBatis中,`#{}`和`${}`是用于在SQL语句中嵌入参数的两种方式。`#{}`用于预处理参数,可以防止SQL注入;而`${}`进行直接字符串替换,适用于动态插入表名或列名,但存在SQL注入风险。建议优先使用`#{}`,并在必要时谨慎使用`${}`。
|
3月前
|
SQL XML Java
mybatis复习02,简单的增删改查,@Param注解多个参数,resultType与resultMap的区别,#{}预编译参数
文章介绍了MyBatis的简单增删改查操作,包括创建数据表、实体类、配置文件、Mapper接口及其XML文件,并解释了`#{}`预编译参数和`@Param`注解的使用。同时,还涵盖了resultType与resultMap的区别,并提供了完整的代码实例和测试用例。
mybatis复习02,简单的增删改查,@Param注解多个参数,resultType与resultMap的区别,#{}预编译参数
|
2月前
|
Java 数据库连接 mybatis
Springboot整合Mybatis,MybatisPlus源码分析,自动装配实现包扫描源码
该文档详细介绍了如何在Springboot Web项目中整合Mybatis,包括添加依赖、使用`@MapperScan`注解配置包扫描路径等步骤。若未使用`@MapperScan`,系统会自动扫描加了`@Mapper`注解的接口;若使用了`@MapperScan`,则按指定路径扫描。文档还深入分析了相关源码,解释了不同情况下的扫描逻辑与优先级,帮助理解Mybatis在Springboot项目中的自动配置机制。
173 0
Springboot整合Mybatis,MybatisPlus源码分析,自动装配实现包扫描源码
|
3月前
|
SQL XML Java
springboot整合mybatis-plus及mybatis-plus分页插件的使用
这篇文章介绍了如何在Spring Boot项目中整合MyBatis-Plus及其分页插件,包括依赖引入、配置文件编写、SQL表创建、Mapper层、Service层、Controller层的创建,以及分页插件的使用和数据展示HTML页面的编写。
springboot整合mybatis-plus及mybatis-plus分页插件的使用
|
4月前
|
Java 数据库连接 mybatis
成功解决: Invalid bound statement (not found) 在已经使用mybatis的项目里引入mybatis-plus,结果不能共存的解决
这篇文章讨论了在已使用MyBatis的项目中引入MyBatis-Plus后出现的"Invalid bound statement (not found)"错误,并提供了解决方法,主要是通过修改yml配置文件来解决MyBatis和MyBatis-Plus共存时的冲突问题。
成功解决: Invalid bound statement (not found) 在已经使用mybatis的项目里引入mybatis-plus,结果不能共存的解决
|
5月前
|
SQL Java 数据库连接
idea中配置mybatis 映射文件模版及 mybatis plus 自定义sql
idea中配置mybatis 映射文件模版及 mybatis plus 自定义sql
115 3
|
4月前
|
SQL Java 数据库连接
MyBatis 和 Hibernate 有什么区别?
【8月更文挑战第21天】
73 0
|
4月前
|
SQL Java 数据库连接
在mybatis中#{}和${}的区别
在MyBatis中,使用#{}可以防止SQL注入,它通过预处理语句来安全地设置参数值,而${}会将传入的数据直接插入SQL语句中,不安全,通常用于传入数据库对象或在确保数据安全的情况下使用。
|
5月前
|
Java 数据库连接 Maven
文本,使用SpringBoot工程创建一个Mybatis-plus项目,Mybatis-plus在编写数据层接口,用extends BaseMapper<User>继承实体类
文本,使用SpringBoot工程创建一个Mybatis-plus项目,Mybatis-plus在编写数据层接口,用extends BaseMapper<User>继承实体类
|
6月前
|
Java 数据库连接 mybatis
在Spring Boot应用中集成MyBatis与MyBatis-Plus
在Spring Boot应用中集成MyBatis与MyBatis-Plus
133 5