
MyBatis-Plus CURD示例及条件构造器示例
发布日期:2025-04-14 09:03:25
浏览次数:12
分类:精选文章
本文共 4351 字,大约阅读时间需要 14 分钟。
数据库与简单CRUD示例
数据库结构
本文使用了两个主要表:user
和 role
。具体字段定义如下:
-
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
删除用户。 - 方法二:使用
QueryWrapper
和lambda()
方法,通过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
方法,通过name
和age
条件更新用户信息。
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() { QueryWrapperew = new QueryWrapper (); ew.orderByAsc("age"); List userList = userMapper.selectList(ew); userList.forEach(System.out::println);}
- 排序方式:使用
orderByAsc
方法对age
字段进行升序排序。
条件构造器示例
本文将展示条件构造器的使用方法,包括普通查询、SQL注入和嵌套查询等。
1. 普通查询
@PostMapping("test1")public void tests() { // 普通查询 ListplainUsers = 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注入)
// 带子查询ListplainUsers2 = 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. 嵌套查询
ListplainUsers3 = 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. 自定义查询
ListplainUsers4 = userMapper.selectList(new QueryWrapper () .apply("role_id = 2"));
更新与验证
// 更新用户信息UpdateWrapperuw = 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 操作和条件构造器来实现数据库的增删改查功能。
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2025年05月19日 07时39分03秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
LVS-负载均衡
2025-04-11
LVS基本介绍
2025-04-11
LVS精益价值管理系统 DownLoad.aspx 任意文件读取漏洞复现
2025-04-11
LVS精益价值管理系统 LVS.Web.ashx SQL注入漏洞复现
2025-04-11
LVS负载均衡
2025-04-11
Lync Server单前端无边缘的外部访问思考
2025-04-11
Lync 小技巧-52-Lync 2013-不加域-客户端-2-导入-证书-信任链
2025-04-11
LZ4 1.10 压缩算法发布!具有多线程功能,压缩速度显著提高达 8 倍
2025-04-11
lz4_flex 项目教程
2025-04-11
lzg_ad:打印机需要的组件支持
2025-04-11
mabatis 中出现< 以及> 代表什么意思?
2025-04-11
Mac + Anaconda 上的 Qt 设计器应用程序在哪里?
2025-04-11
Mac book air 重新安装系统验证显示 untrusted_cert_title
2025-04-11
mac elasticsearch brew安装填坑
2025-04-11
mac M1 下安装docker 及相关镜像
2025-04-11
Mac M1 安装 TensorFlow 使用Python3.8
2025-04-11
Mac M1 芯片不兼容node-sass
2025-04-11
MAC M1大数据0-1成神篇-25 hadoop高可用搭建
2025-04-11
Mac mini7.1 2014年末 安装单windows 10系统
2025-04-11