CRDU基础使用案例
- 根据主键删除一条记录
| int rows = userMapper.deleteById(123); |
- 根据条件删除记录
| |
| Map<String,Object> map = new HashMap<>(); |
| map.put("name", "wangzz"); |
| map.put("age", 18); |
| |
| int rows = userMapper.deleteByMap(map); |
- 根据主键查询一条数据
| User user = userMapper.selectById(123); |
-
根据ids批量查找数据
List ids = Arrays.asList(
123L, 345L, 567L
);
List list = userMapper.selectBatchIds(ids);
-
根据指定参数查询
Map<String, Object> map = new HashMap<>();
// map的key指代的是mysql表中的列名
map.put("name", "Jone");
List list = userMapper.selectByMap(map);
-
指定查询指定结果的字段
QueryWrapper queryWrapper = new QueryWrapper<>();
query.select("name", "age") // 指定查询结果字段
.in("age", Arrays.asList(30,31,34,35)
.last("limit 1");
7★ 大小关系查询
| QueryWrapper queryWrapper = new QueryWrapper<>(); |
| queryWrapper.list("name", "J") |
| .lt("age", 40) |
| .select("name", "age"); |
| List<Map<String,Object>> maps = userMapper.selectMaps(queryWrapper); |
- 通过主键id修改数据
| User user = new User(); |
| user.setId(123); |
| user.setAge(18); |
| user.setEmail("wz_bepro@163.com"); |
| |
| int rows = userMapper.updateById(user); |
| |
| ========================================= |
| 等价的SQL语句 |
| UPDATE user |
| SET age = ?, email = ? |
| WHERE id = ? |
- 根据updateWrapper自定义条件修改数据
UpdateWrapper updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("name", "Jack")
.eq("age", 18);
User user = new User();
user.setAge(29);
user.setEmail("wz_bepro@163.com");
int rows = userMapper.update(user, updateWrapper);
===========================================
等价的SQL语句
UPDATE user
SET age = ?, email = ?
WHERE name = ? AND age = ?
Wrapper体系结构
- Wrapper
- AbstractWrapper
- AbstractLambdaWrapper
- LambdQueryWrapper
- LambdUpdateWrapper
- QueryWrapper
- UpdateWrapper
条件构造器用于给如下的Mapper方法传入参数,通常情况如下:
- updateWrapper用于给update方法传入条件参数
- queryWrapper用于给delete和select方法传入参数
| |
| int delete(Wrapper<T> wrapper); |
| int update(T entity, Wrapper<T> updateWrapper); |
| T selectOne(queryWrapper); |
| Integer selectCount(queryWrapper); |
| List<T> selectList(queryWrapper); |
| List<Map<String, Object>> selectMaps(queryWrapper); |
| |
| |
| #### LIKE条件构造 |
String name = "test01"; // name不为空
String email = ""; // email为空字符串
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.like(StringUtils.isNotEmpty(name), "name", name);
.like(StringUtils.isNotEmpty(email), "email", email);
List res = userMapper.selectList(queryWrapper);
| https://img.kancloud.cn/0f/8f/0f8fe8849a8181a0b1551342459df560_1314x1380.png |
| |
| |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具