TrueOctopus
2023-03-15

MybatisPlus的...

在继承MP的BaseMapper后已经有了基本的操作:

fwB86.png

返回值为int,指受影响的数据条数。

插入

设定id策略@TableId

1
2
3
4
5
6
7
8
9
10
@TableId(type = IdType.AUTO) //通过添加注解改变MP的id策略

AUTO(0), //id自增
NONE(1), //未设置主键类型
INPUT(2), //用户输入id,可通过自己注册自动填充插件进行填充
//以下类型只有当插入id为空时才会自动填充
ID_WORKER(3), //全局唯一id(idWorker)
UUID(4), //全局唯一id(UUID)
ID_WORKER_STR(5); //字符串全局唯一id(idWorker的字符串表示)

指定字段属性@TableField

1、解决属性名和字段名不一致的问题

2、解决属性字段在表中不存在的问题

1
2
3
4
5
6
7
8
@TableField(value = "email") //指定数据表中字段名  
private String mail;

@TableField(exist = false)
private String address; //在数据库表中是不存在的

@TableField(select = false) //查询时不返回该字段的值
private String password;

更新

根据id更新

1
2
3
4
5
6
7
8
public void testUpdateById() {  
User user = new User();
user.setId(1L); //条件,根据id更新
user.setAge(19); //更新的字段
user.setPassword("666666");

int result = this.userMapper.updateById(user);
}

根据条件更新

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public void testUpdate() {  
User user = new User();
user.setAge(20); //更新的字段
user.setPassword("8888888");

QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.eq("user_name", "zhangsan"); //匹配user_name = zhangsan 的用户数据

//根据条件做更新
int result = this.userMapper.update(user, wrapper);
}

public void testUpdate2() {

UpdateWrapper<User> wrapper = new UpdateWrapper<>();
wrapper.set("age", 21).set("password", "999999") //更新的字段
.eq("user_name", "zhangsan"); //更新的条件

//根据条件做更新
int result = this.userMapper.update(null, wrapper);
}

删除

根据id删除

1
2
3
4
public void testDeleteById(){  
// 根据id删除数据
int result = this.userMapper.deleteById(2L);
}

根据条件删除

1
2
3
4
5
6
7
8
9
public void testDeleteByMap(){  

Map<String,Object> map = new HashMap<>();
map.put("user_name", "zhangsan");
map.put("password", "999999");

// 根据map删除数据,多条件之间是and关系
int result = this.userMapper.deleteByMap(map);
}

根据包装条件删除

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public void testDelete(){  

//用法一:
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.eq("user_name", "caocao1")
.eq("password", "123456");

//用法二:
User user = new User();
user.setPassword("123456");
user.setUserName("caocao");

QueryWrapper<User> wrapper = new QueryWrapper<>(user);

// 根据包装条件做删除
int result = this.userMapper.delete(wrapper);
}

根据id批量删除数据

1
2
3
4
public void  testDeleteBatchIds(){  
// 根据id批量删除数据
int result = this.userMapper.deleteBatchIds(Arrays.asList(10L, 11L));
}

查询

根据id查询

1
2
3
4
public void testSelectById() {  
User user = this.userMapper.selectById(2L);
System.out.println(user);
}

根据id批量查询

1
2
3
4
5
6
7
public void testSelectBatchIds(){  
// 根据id批量查询数据
List<User> users = this.userMapper.selectBatchIds(Arrays.asList(2L, 3L, 4L, 100L));
for (User user : users) {
System.out.println(user);
}
}

查询一条数据

1
2
3
4
5
6
7
8
public void testSelectOne(){  
QueryWrapper<User> wrapper = new QueryWrapper<>();
//查询条件
wrapper.eq("password", "123456");

// 查询的数据超过一条时,会抛出异常
User user = this.userMapper.selectOne(wrapper);
}

根据条件查询数据条数

1
2
3
4
5
6
7
8
9
public void testSelectCount(){  

QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.gt("age", 20); // 条件:年龄大于20岁的用户

// 根据条件查询数据条数
Integer count = this.userMapper.selectCount(wrapper);
System.out.println("count => " + count);
}

查询多条数据

1
2
3
4
5
6
7
8
9
10
public void testSelectList(){  
QueryWrapper<User> wrapper = new QueryWrapper<>();
//设置查询条件
wrapper.like("email", "itcast");

List<User> users = this.userMapper.selectList(wrapper);
for (User user : users) {
System.out.println(user);
}
}

分页查询

MybatisPlusConfig.java

1
2
3
4
5
6
7
8
9
10
11
@Configuration  
@MapperScan("cn.itcast.mp.mapper") //设置mapper接口的扫描包
public class MybatisPlusConfig {


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

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public void testSelectPage(){  

Page<User> page = new Page<>(3,1); //查询第3页,查询1条数据

QueryWrapper<User> wrapper = new QueryWrapper<>();
//设置查询条件
wrapper.like("email", "itcast");

IPage<User> iPage = this.userMapper.selectPage(page, wrapper);
System.out.println("数据总条数: " + iPage.getTotal());
System.out.println("数据总页数: " + iPage.getPages());
System.out.println("当前页数: " + iPage.getCurrent());

List<User> records = iPage.getRecords();
for (User record : records) {
System.out.println(record);
}

}