Mybatis-Plus其实是Mybatis的升级版,他简化了原先mybatis需要手动写CURD语句转而继承BaseMapper来实现。具体变化如下:
1,MyBatis-Plus简介:MP,是mybatis的增强工具,是基于mybatis上开发的。
特点:
Maven坐标:
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.3</version>
</dependency>
配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.0</version>
<relativePath/>
</parent>
<groupId>com.itheima</groupId>
<artifactId>mp-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<properties>
<java.version>11</java.version>
</properties>
<dependencies>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.3</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.16</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
配置数据源:
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/mybatisplus_db?serverTimezone=UTC
username: root
password: root
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #开启mp日志,将sql输出到控制台
2,CURD接口
我们只需要直接调用就好了:在ymi文件中加入
3,常用注解
@TableName()用来指定当前类对应的数据库的表名
@TableFile()用来指定当前属性在数据库表中对应的字段
@TableId()用来指定当前属性为数据库表中的主键
示例:
public class User {
@TableId(type = IdType.AUTO) //当前id属性和表的主键字段id对应,并且设置主键生成策略为AUTO
private Long id;
}
4,条件构造器(MyBatis-Plus的特色)
我们一般常用:QueryWrapper,UpdateWrapper和LembdaQueryWrapper,LembdaUpdateWrapper两组条件构造器来进行查询语句的构造和修改语句的构造
5,扩展功能
(1)逻辑删除
(2)MP对于Service层的支持
我们只需要在XXService接口上继承IService和XXServiceImpl接口上继承ServiceImpl<使用的Mapper, 插入的实体(XX)>
在业务实现类中可以调用 ServiceImpl 中的 getBaseMapper 方法获得对应的mapper对象
(3)代码生成器
在生成器中我们一般使用了生成代码之后还需要做一定的修改,比如生成器中生成的代码并没有给mapper加入@Mapper注解,还有需要注意的是在生成的实体类中可能主键生成的方法我们在配置文件中有设置,此时我们需要把实体类中的@TableId(type = IdType.AUTO)中括号里面的给注释掉,从而实现我们使用自己的设置