Mybatis-Plus

MybatisPlus

1. 什么是MybatisPlus

MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

2.MybatisPlus预先配置

2.1 导入依赖

SpringBoot2版本

1
2
3
4
5
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.4</version>
</dependency>

2.x 配置yaml

1
2
3
4
5
6
7
mybatis-plus:
#设置mapper.xml文件所在位置
mapper-locations: classpath*:/mapper/**/*.xml
type-aliases-package: com.itheima.mp.domain.po
global-config:
db-config:
id-type: auto

2.x 继承BaseMapper接口

在需要使用MybatisPlus的Mapper接口中继承BaseMapper

1
2
public interface UserMapper extends BaseMapper<User> {
}

3.使用MybatisPlus

1.基础查询

使用BaseMapper中自带的单表查询语句

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
@Test
void testInsert() {
User user = new User();
user.setId(5L);
user.setUsername("Lucy");
user.setPassword("123");
user.setPhone("18688990011");
user.setBalance(200);
user.setInfo("{\"age\": 24, \"intro\": \"英文老师\", \"gender\": \"female\"}");
user.setCreateTime(LocalDateTime.now());
user.setUpdateTime(LocalDateTime.now());
userMapper.insert(user);
}

@Test
void testDelete(){
int i = userMapper.deleteById(5L);
System.out.println("删除受影响行"+i);

}

@Test
void testSelect(){
User user = userMapper.selectById(4L);
System.out.println(user);
}

@Test
void testUpdate(){
User user = new User();
user.setUpdateTime(LocalDateTime.now());
user.setUsername("Lucy");
user.setId(5L);
int i = userMapper.updateById(user);
System.out.println("更新受影响行"+i);
}

x.处理对象属性

x.1 创建属性对象POJO类

1
2
3
4
5
6
7
8
9
10
11
package com.itheima.mp.domain.po;


import lombok.Data;

@Data
public class UserInfo {
private Integer age;
private String intro;
private String gender;
}

x.2 这实体类中添加注解

属性

1
2
@TableField(typeHandler = JacksonTypeHandler.class)
private UserInfo info;

1
2
3
@Data
@TableName(value = "tb_user",autoResultMap = true)
public class User {

x. 使用MybatisPlusInterceptor分页插件

x.1 编写拦截器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package com.itheima.mp.config;

import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MybatisPlusConfig {

@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor();
paginationInnerInterceptor.setMaxLimit(1000L);
interceptor.addInnerInterceptor(paginationInnerInterceptor);
return interceptor;
}
}

x.2 使用分页插件

1
2
3
4
5
6
7
8
9
10
11
12
13
@Test
void pageSelect(){
Page<User> page = new Page<>(2,3);
//排序规则
page.addOrder(new OrderItem("balance",false))
.addOrder(new OrderItem("id",true));
Page<User> pageResult = userService.page(page);
System.out.println("total:"+ pageResult.getTotal());
System.out.println("pages:"+ pageResult.getPages());
List<User> records = pageResult.getRecords();
records.forEach(System.out::println);

}

Mybatis-Plus
http://example.com/2024/03/15/Mybatis-Plus/
作者
kangkang
发布于
2024年3月15日
许可协议