在test里面进行测试:
//查询测试
分页在网站的使用很多
1.原始的limit进行分页
2.pageHelper第三方插件
3.MP也内置了分页插件
如何使用
1.配置拦截器组件即可
在config的MyBatisPlusConfig.java里面配置的
/**
* 新的分页插件,一缓和二缓遵循mybatis的规则,需要设置 MybatisConfiguration#useDeprecatedExecutor = false 避免缓存出现问题(该属性会在旧插件移除后一同移除)
*/
测试:
2.直接使用Page对象即可!
//测试分页查询
基本的删除操作:
//测试删除
工作中会遇到的一些问题:逻辑删除
物理删除:从数据库中直接移除 相当于deleted = 1
逻辑删除:在数据库中没有被移除,而是通过一个变量来让它失效!deleted = 0类似于 => deleted = 1
管理员可以查看被删除的用户,防止数据的丢失,类似于回收站!
测试:
1.在数据表中增加一个deleted字段

2.实体类中增加属性
在pojo 的 User.java中增加
package com.kuang.pojo;
?
import com.baomidou.mybatisplus.annotation.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
?
import java.util.Date;
?
3.逻辑删除。
官网地址:
不用配置删除组件了,不用注册Bean了,官网已经没有这个配置。
在application.properties进行配置
# 配置逻辑删除
mybatis-plus.global-config.db-config.logic-delete-value=1
mybatis-plus.global-config.db-config.logic-not-delete-value=0
?

逻辑删除中记录还在数据库中,只是值变了:

再次去查询被删除的数据时,会被自动过滤掉

我们在平时的开发中,会遇到一些慢sql。可以通过测试比如:druid....测试出来。
SQL默认有个规定:只要10秒钟没有按照规定的时间返回结果,都属于慢查询,存放到日志中
MP也提供性能分析插件,如果超过这个时间就停止运行。
MP3.2以后版本移除了性能分析插件可以通过druid执行sql的性能分析。
十分重要:Wrapper
我们写一些复杂的sql就可以使用它来替代!
pom.xml中的mybatis-plus-boot-starte版本换成:
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.2</version>
</dependency>
?
测试一:
package com.kuang;
?
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.kuang.mapper.UserMapper;
import com.kuang.pojo.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
2.测试二
3.测试三
4.测试四 模糊查询

5.测试五

6.测试六

AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码,极大的提升了开发效率。
dao pojo service controller 需要自己去编写:
类似写成这样的:


#服务端口
server.port=9000
spring.profiles.active=dev
#禁用模板缓存
spring.thymeleaf.cache=false
?
# mysql 8 需要增加时区配置 数据库连接配置
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis_plus?useSSL=true&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# 配置日志
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
# 配置逻辑删除
mybatis-plus.global-config.db-config.logic-delete-value=1
mybatis-plus.global-config.db-config.logic-not-delete-value=0
?
?
要生成哪个表就修改这个地方就行 strategy.setInclude("user");
package com.kuang;
?
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.core.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.po.TableFill;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
?
?
import java.util.ArrayList;
?
//代码自动生成器
public class KuangCode {
public static void main(String[] args) {
// 需要构建一个代码自动生成器 对象
AutoGenerator mpg = new AutoGenerator();
?
?
// 全局配置
GlobalConfig gc = new GlobalConfig();
String projectPath = System.getProperty("user.dir");
gc.setOutputDir(projectPath+"/src/main/java");
gc.setAuthor("狂神说");
gc.setOpen(false);
gc.setServiceName("%sService");//去Service的I前缀
gc.setIdType(IdType.ID_WORKER);
gc.setDateType(DateType.ONLY_DATE);
gc.setSwagger2(true);
mpg.setGlobalConfig(gc);
//2.设置数据源的配置
DataSourceConfig dsc = new DataSourceConfig();
dsc.setUrl("jdbc:mysql://localhost:3306/mybatis_plus?useSSL=true&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8");
dsc.setDriverName("com.mysql.cj.jdbc.Driver");
dsc.setUsername("root");
dsc.setPassword("123456");
dsc.setDbType(DbType.MYSQL);
mpg.getDataSource(dsc);
?
//3.包的配置
PackageConfig pc = new PackageConfig();
pc.setModuleName("blog");
pc.setParent("com.kuang");
pc.setEntity("entity");
pc.setMapper("mapper");
pc.setService("service");
pc.setController("controller");