Live2D

mybtais-plus

1.需要用的依赖



mysql
mysql-connector-java
5.1.49



org.projectlombok
lombok
true



com.alibaba
druid
1.1.12



com.baomidou
mybatis-plus-boot-starter
3.0.5

2.快速入门

1.建表语句

DROP TABLE IF EXISTS user;
CREATE TABLE user
(
id BIGINT(20) NOT NULL COMMENT '主键ID',
name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',
age INT(11) NULL DEFAULT NULL COMMENT '年龄',
email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱',
PRIMARY KEY (id)
);

2.数据语句

DELETE FROM user;

INSERT INTO user (id, name, age, email) VALUES
(1, 'Jone', 18, 'test1@baomidou.com'),
(2, 'Jack', 20, 'test2@baomidou.com'),
(3, 'Tom', 28, 'test3@baomidou.com'),
(4, 'Sandy', 21, 'test4@baomidou.com'),
(5, 'Billie', 24, 'test5@baomidou.com');

3.配置完成连接数据库

spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=qq2315290571
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis_plus?useUnicode=true&amp&characterEncoding=utf-8

3.配置日志

mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

4.然后只需要配置一个pojo实体类和一个mapper接口继成BaseMapper
1.实体类

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
private Integer id;
private String name;
private Integer age;
private String email;

}

2.mapper接口(wrapper是条件构造器)

@Repository
public interface UserMapper extends BaseMapper {
}

3.最后在启动类扫描一下

image

3.插入测试(主键生成策略)

1.插入记录进行测试,我在添加记录的时候没有添加id

image

2.数据库中也没有设置主键自增

image

3.但是在执行的时候发现,有主键id

image

这时候就是mybtais-plus的几种主键策略了,我们在实体类中的id成员变量上加上注解@TableId,发现有以下几种策略

public enum IdType {

AUTO(0), // id自增,要在数据库中也设置id自增

NONE(1), // 未设置主键

INPUT(2), // 手动添加

ID_WORKER(3), // 默认的全局唯一ID

UUID(4), // 全局唯一ID,uuid

ID_WORKER_STR(5); // 默认的全局唯一ID的字符串表示形式

}

4.自动填充处理

代码级别填充,首先在数据库中加入create_time,update_time 两个字段

image

再把实体类更新一下

image

然后在实体类中加入自动填充的注解
image

还需要我们自己配置一下
image

5.乐观锁

1.在实体类中加入字段version并加上注解 @Version

@Version
private Integer version;
2.注册配置

@Configuration
@EnableTransactionManagement
public class OptimisConfig {
// 注册bean
@Bean
public OptimisticLockerInterceptor optimisticLockerInterceptor() {
return new OptimisticLockerInterceptor();
}
}

6.查询操作

1.通过id批量查询(selectBatchIds)

List users = userMapper.selectBatchIds(Arrays.asList(1, 2, 3));
System.out.println(users);

2.根据map的条件进行查询(selectByMap)

// 根据要查询的条件批量进行查询
HashMap<String, Object> map = new HashMap<>();
map.put("version",1);
List users = userMapper.selectByMap(map);

7.分页操作

首先在配置类中加入以下内容
image

代码如下

// 注册分页插件
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}

分页测试

// current:当前页 size:每页显示几条数据
Page page = new Page<>(2,5);
// 分页查询
userMapper.selectPage(page,null);
page.getRecords().forEach(System.out::println);

8.删除操作

// 批量删除
userMapper.deleteBatchIds(Arrays.asList(8, 9));
// 根据id删除
userMapper.deleteById(10L);
// 根据map的key进行删除
userMapper.deleteByMap(map);

9.逻辑删除

1.在properties中配置以下

mybatis-plus.global-config.db-config.logic-delete-value=1
mybatis-plus.global-config.db-config.logic-not-delete-value=0

2.在数据库中添加字段deleted

image

3.在实体类中添加以下字段并添加注解@TableLogic

@TableLogic
private Integer deleted;

4.配置类中添加配置

@Bean
public ISqlInjector ISqlInjector(){
return new LogicSqlInjector();
}

5.测试

image

然后发现我们在删除的时候,其实执行的是一条更新语句
image

10.性能分析插件

1.首先在properties中开启开发测试环境

spring.profiles.active=dev

2.然后在配置类中配置以下

// sql执行插件(性能分析)
@Bean
@Profile({"dev","test"}) // 设置dev测试开发环境
public PerformanceInterceptor performanceInterceptor(){
PerformanceInterceptor performanceInterceptor = new PerformanceInterceptor();
// sql最大执行时间 单位毫秒
performanceInterceptor.setMaxTime(12);
// 开启格式化
performanceInterceptor.setFormat(true);
return performanceInterceptor;
}

7.wrapper(条件构造器)

1.测试

// 条件构造器的测试
// 测试姓名不为空并且年龄大于20岁的
QueryWrapper wrapper = new QueryWrapper<>();
wrapper.isNotNull("name").ge("age",20);
userMapper.selectList(wrapper);

2.相关api

1.allEq #全条件执行,参数是map
2.eq #等于,参数是String,Object
3.ne #不等于
4.gt #大于
5.ge #大于或等于
6.lt #小于
7.le #小于或等于
8.between #BETWEEN 值1 AND 值2
9.notBetween #NOT BETWEEN 值1 AND 值2
10.isNull #是空的
11.isNotNull #非空
12.in #LIKE '%值%'
13.like #模糊查询
14.like #LIKE '%值%'

posted @ 2021-07-11 19:08  没有梦想的java菜鸟  阅读(187)  评论(0)    收藏  举报