mybatis-plus使用
目录
1、简介
- 官网:http://mp.baomidou.com/
- MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改 变,为简化开发、提高效率而生。
2、集成
1、创建数据库和表
2、创建springboot工程
3、引入mybatis-plus、数据源依赖
注意:
引入mybatis-plus依赖就不要再引入mybatis了以免冲突
在项目中使用Lombok可以减少很多重复代码的书写。
<?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.7.3</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--lombok 小辣椒-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<!--引入mybatis-plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.2</version>
</dependency>
<!--引入数据源-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</project>
4、设置配置文件(application.properties)
#mysql数据库连接 spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/mybatis_plus spring.datasource.username=root spring.datasource.password=123456 #mybatis日志 mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl#xml扫描路径
mybatis-plus.mapper-locations=classpath:/mapper/**.xml
5、创建实体类
- 创建与数据库对应的实体,遵循驼峰原则前提下mybatis-plus会自动映射,表名对应类名,字段名对应属性名
- 如有特殊需求要求不遵循驼峰命名那么需要借助两个注解:
- @TableName("表名")放在类上
- @TableField("字段名")放在属性上
6、mapper接口层继承【BaseMapper<实体类名>】
注意:注解【@Repository】可以加也可以不加,但是加上在【@Autowired】调用时不会有红线,建议加上
7、在配置文件中加上扫描注解@MapperScan("mapper包所在路径")
3、使用
3.1、添加操作
- 使用的方法为【insert()】,传入的是一个对象,默认自带主键策略,默认主键回填
- 主键策略
- 配置方法:在主键上面添加注解【@TableId(type = idType.主键策略)】
- 主键策略:
- assign_id【默认】:生成一个19为数字的ID,后面比前面大【递增,可用于排序】
- assign_uuid:生成为一个带数字和字母的ID,为字符串类型
- auto:主键自增长,需要表主键设置自动增长,且主键类型与实体主键属性均为int
- input:这种方式就是自己set一个 主键值
- none:不设置主键值
3.2、删除操作
- 根据ID删除
方法:delectById(ID值);
- 根据条件删除
方法:deleteByMap(封装条件的Map集合)
- 批量删除
方法:deleteByI(ID的list集合)
- 逻辑删除
本质上是修改操作、约定中0代表存在,1代表删除
实现:在表中添加字段【deleted】,实体类中添加对应的属性且在属性上加上注解【@TableLogic】
此时在进行删除操作就是逻辑删
3.3、修改操作
- 根据ID进行修改
方法:updatebyId(带ID的对象);
3.4、查询操作
3.4.1、简单查询
1、查询全部
方法:selectList(null);
2、根据ID查询
方法:selectById(ID值);
3、多个ID批量查询
方法:selectBatchIds(集合)
4、多个条件查询数据
方法:selectByMap(Map map)
3.4.2、分页查询
- 首先需要在配置类中配置分页插件
package com.example.demo.config;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration// 代表是一个配置类
public class mybatisplusConfig {
/**
* 分页插件
* @return
*/
@Bean
public PaginationInterceptor paginationInterceptor(){
return new PaginationInterceptor();
}
}
- 在你的查询方法代码中创建一个page对象,参数分别为当前页与没页记录数,泛型为要查询的实体
- 调用selectPage()方法,第一个参数为上面的page对象作用是设置分页,第二个条件为查询条件,可参考复杂查询
- 分页查询之后实际上是不需要返回数据的,因为查询的到的数据已经封装到分页条件【userPage】中了,其中还封装了:
- 查询结果集合:userPage.getRecords()
- 当前页:userPage.getCurrent()
- 总页数:userPage.getPages()
- 每页记录数:userPage.getSize()
- 总记录数:userPage.getTotal()
- 是否有下一页:userPage.hasNext()
- 是否有上一页:userPage.hasPrevious();
3.4.3、复杂查询
1、使用复杂查询
- 首先需要先new一个QueryWrapper对象用于封装条件
- 使用对象封装条件,见下文,封装条件时第一个参数为表中字段,第二个参数为条件
- 如果有多个条件多点几次就好
- 将对象作为参数放入查询语句中
- 以下文条件大于等于为例:用户年龄大于等于20的
2、条件
1、ge、gt、le、lt
- ge:大于等于
- gt:大于
- le:小于等于
- lt:小于
2、eq、ne、
- eq:等于
- ne :不等于
3 、between、notBetween
- between:范围内,包含大小边界
- notBetween:不在范围内
4、like、notLike、 LikeLeft、LikeRight
- like:模糊查询
- notlike:排除像的
- likeleft:%在左边
- likeRight:%在右边
5、orderBy、orderByDesc、orderByASC
- orderByDesc:降序
- orderByAsc:升序
6、last:
作用:在执行的sql语句后面拼接一个语句
可以用于分页,或者返回固定条数数据
不要加参数要写固定值,否则有注入风险
7、select
查询指定列
4、自定义SQL
配置方式有多种,只说最简单的一种,不要为难自己想学会全部没啥用
1、在配置文件中扫描我们的xml配置的位置
#mybatis日志 mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl #xml扫描路径 mybatis-plus.mapper-locations=classpath:/mapper/**.xml
2、我们将UserMapper.xml放在resource下的mapper目录中
3、剩下的就和mybatis一样,毕竟mybatisPlus只升级不改动