Live2D

mybtais-plus

1.需要用的依赖

    <!--数据库连接驱动-->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.49</version>
    </dependency>
    <!--lombok-->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
    <!--Druid连接池-->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>1.1.12</version>
    </dependency>
    <!--mybatis-plus-->
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>3.0.5</version>
    </dependency>

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<User> {
}
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<User> 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<User> users = userMapper.selectByMap(map);

7.分页操作

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

代码如下
// 注册分页插件
@Bean
public PaginationInterceptor paginationInterceptor() {
    return new PaginationInterceptor();
}
分页测试
    // current:当前页  size:每页显示几条数据
    Page<User> 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<User> 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菜鸟  阅读(104)  评论(0编辑  收藏  举报