博客
关于我
MyBatis-Plus CURD示例及条件构造器示例
阅读量:798 次
发布时间:2023-02-09

本文共 4351 字,大约阅读时间需要 14 分钟。

数据库与简单CRUD示例

数据库结构

本文使用了两个主要表:userrole。具体字段定义如下:

  • user

    • id:BIGINT(20),不为空,作为主键。
    • name:VARCHAR(30),可为空,默认值为 NULL
    • age:INT(11),可为空,默认值为 NULL
    • email:VARCHAR(50),可为空,默认值为 NULL
    • role_id:BIGINT(20),不为空,外键,引用 role 表的 id
  • role

    • id:BIGINT(20),不为空,作为主键。
    • role_name:VARCHAR(30),可为空,默认值为 NULL
    • role_describe:VARCHAR(30),可为空,默认值为 NULL

简单CRUD示例

本文将通过五个基本的CRUD操作(插入、删除、更新、查询、排序)展示数据库操作的实现过程。

1. 插入操作

@PostMapping("/test1")
public void aInsert() {
// 准备参数:插入用户信息
User user = new User();
user.setName("小羊");
user.setAge(3);
user.setEmail("abc@mp.com");
// 执行插入操作
int a = userMapper.insert(user);
System.out.println("插入返回:" + a);
System.err.println("插入成功 ID 为:" + user.getId());
}
  • 参数准备:使用 User 实体类创建用户对象,并设置相关字段值。
  • 操作执行:通过 userMapper.insert(user) 执行插入操作,返回插入的记录数。

2. 删除操作

@PostMapping("/test2")
public void bDelete() {
// 删除用户
int a = userMapper.deleteById(18);
// 使用 QueryWrapper 定义条件删除
int b = userMapper.delete(new QueryWrapper
()
.lambda().eq(User::getName, "fr"));
System.out.println("删除返回:" + a + " 删除返回:" + b);
}
  • 方法一:使用 .deleteById 方法,通过 id 删除用户。
  • 方法二:使用 QueryWrapperlambda() 方法,通过 name 条件删除用户。

3. 更新操作

@PostMapping("/test3")
public void cUpdate() {
// 更新用户邮箱
userMapper.updateById(new User().setId(1L).setEmail("ab@c.c"));
// 更新用户姓名和年龄
userMapper.update(new User().setName("mp"),
new UpdateWrapper
()
.set(User::getAge, 3)
.eq(User::getId, 1L));
}
  • 方法一:使用 updateById 方法,仅更新 email 字段。
  • 方法二:使用 update 方法,通过 nameage 条件更新用户信息。

4. 查询操作

@PostMapping("/test4")
public void dSelect() {
// 查询用户信息
User user = userMapper.selectById(1L);
// 使用 QueryWrapper 查询用户
User user2 = userMapper.selectOne(new QueryWrapper
()
.lambda().eq(User::getId, 1L));
System.out.println("name:" + user.getName() + " age:" + user.getAge() + " email:" + user.getEmail());
}
  • 方法一:使用 selectById 方法,通过 id 查询单个用户。
  • 方法二:使用 selectOne 方法,通过 id 条件查询单个用户。

5. 排序操作

@PostMapping("/test5")
public void orderBy() {
QueryWrapper
ew = new QueryWrapper
();
ew.orderByAsc("age");
List
userList = userMapper.selectList(ew);
userList.forEach(System.out::println);
}
  • 排序方式:使用 orderByAsc 方法对 age 字段进行升序排序。

条件构造器示例

本文将展示条件构造器的使用方法,包括普通查询、SQL注入和嵌套查询等。

1. 普通查询

@PostMapping("test1")
public void tests() {
// 普通查询
List
plainUsers = userMapper.selectList(new QueryWrapper
()
.eq("role_id", 2L));
// Lambda 查询
List
lambdaUsers = userMapper.selectList(new QueryWrapper
()
.lambda().eq(User::getRoleId, 2L));
Assert.assertEquals(plainUsers.size(), lambdaUsers.size());
print(plainUsers);
}

2. 带子查询(SQL注入)

// 带子查询
List
plainUsers2 = userMapper.selectList(new QueryWrapper
()
.inSql("role_id", "select id from role where id = 2"));
List
lambdaUsers2 = userMapper.selectList(new QueryWrapper
()
.lambda().inSql(User::getRoleId, "select id from role where id = 2"));

3. 嵌套查询

List
plainUsers3 = userMapper.selectList(new QueryWrapper
()
.nested(i -> i.eq("role_id", 2L).or().eq("role_id", 3L))
.and(i -> i.ge("age", 20)));
List
lambdaUsers3 = userMapper.selectList(new QueryWrapper
()
.lambda().nested(i -> i.eq(User::getRoleId, 2L).or().eq(User::getRoleId, 3L))
.and(i -> i.ge(User::getAge, 20)));

4. 自定义查询

List
plainUsers4 = userMapper.selectList(new QueryWrapper
()
.apply("role_id = 2"));

更新与验证

// 更新用户信息
UpdateWrapper
uw = new UpdateWrapper
();
uw.set("email", null);
uw.eq("id", 4);
userMapper.update(new User(), uw);
User u4 = userMapper.selectById(4);
Assert.assertNull(u4.getEmail());

通过以上示例,可以看到如何在实际项目中使用 CRUD 操作和条件构造器来实现数据库的增删改查功能。

转载地址:http://yfffk.baihongyu.com/

你可能感兴趣的文章
mongodb 集群shard_MongoDB Sharding Cluster 分片集群搭建及使用
查看>>
mongodb 默认端口号_MongoDB的简单使用
查看>>
mongodb-地理坐标存储查询
查看>>
MongoDB与Mysql常用命令解释
查看>>
MongoDB两地三中心集群架构设计、全球多写集群架构设计
查看>>
mongodb中比较级查询条件:($lt $lte $gt $gte)(大于、小于)、查找条件
查看>>
Mongodb中的聚合函数使用:按月统计数量
查看>>
Mongodb主从配置
查看>>
Mongodb事务:基于spring+springmvc
查看>>
mongodb使用总结
查看>>
MongoDB出现Error parsing command line: unrecognised option ‘--fork‘ 的解决方法
查看>>
Mongodb出现Error: couldn‘t add user: Could not find role: root@database 解决方法
查看>>
MXNet2Caffe 项目教程
查看>>
MongoDB创建用户
查看>>
mxGraph改变图形大小重置overlay位置
查看>>
MongoDB动态条件之分页查询
查看>>
MX Linux 23.4 发布!基于 Debian 12.7,修复了大量错误
查看>>
MongoDB可视化客户端管理工具之NoSQLbooster4mongo
查看>>
MongoDB在Windows2003上得安装配置及使用
查看>>
MongoDb在Windows上的下载安装以及可视化工具的下载与使用
查看>>