案例实操

简介: 通过多个案例演示MyBatis-Plus中QueryWrapper和UpdateWrapper的实用技巧:实现条件查询、更新操作。涵盖模糊匹配、范围筛选、批量修改及SQL片段设置,提升开发效率与代码可读性。(238字)

接下来我们就通过几个案例,来实际体验一下吧
● 查询出名字中带o的,存款大于等于1000元的人的id、username、info、balance字段
上述案例的SQL大概如下
SELECT id, username, info, balance
FROM user
WHERE
username like '%o%'
AND balance >= 1000
分析:因为是查询,且查询指定字段,所以这里考虑QueryWrapper
@Test
void testQueryWrapper() {
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper
.select("id", "username", "info", "balance")
.like("username", "o")
.ge("balance", "1000");
List users = userMapper.selectList(queryWrapper);
users.forEach(System.out::println);
}
● 更新用户名为jack的用户的余额为2000
上述案例的SQL大概如下
UPDATE user
SET balance = 2000
WHERE username = "jack"
分析:因为更新的where条件中带查询,所以可以用QueryWrapper
@Test
void testQueryWrapper2() {
// 1-数据
User user = new User();
user.setBalance(2000);
// 2-条件
QueryWrapper wrapper = new QueryWrapper().eq("username", "jack");
// 3-更新
userMapper.update(user, wrapper);
}
● 更新id为1,2,4的用户的余额,扣200
上述案例的SQL大概如下
UPDATE user
SET balance = balance - 200
WHERE id in (1, 2, 4)
分析:这个SQL更新条件不需要做额外的查询,所以UpdateWrapper可以直接搞定,并且这里是账户余额扣减200不是直接设置成两百,所以我们的更新参数第一个user给null就好
@Test
void testUpdateWrapper() {
UpdateWrapper updateWrapper = new UpdateWrapper()
.setSql("balance = balance - 200")
.in("id", Arrays.asList(1L, 2L, 3L));
userMapper.update(null, updateWrapper);
}
如果这里同时需要设置用户姓名拼接:*,就可以初始化一个User对象,然后做拼接,最后传递进去就可以

相关文章
|
2月前
|
XML Java 数据库连接
引入MybatisPlus的起步依赖
MyBatisPlus官方提供了一站式Starter,集成MyBatis与MyBatisPlus全部功能,支持自动装配,可直接替代原生MyBatis依赖。引入`mybatis-plus-boot-starter`后,无需额外配置,简化开发流程,原MyBatis依赖可移除,提升效率。
什么是业务
业务是个人或企业为盈利而开展的有组织商业活动,如生产、销售商品或提供服务。以医院为例,其业务是向患者提供医疗服务,通过多阶段交易实现价值交换,患者付费获得健康,医院则实现服务价值。
|
2月前
|
安全 API
SimpleDateFormat不要定义为static
SimpleDateFormat线程不安全,避免定义为static,若需静态使用应加锁或采用ThreadLocal。推荐JDK8新时间API:Instant、LocalDateTime、DateTimeFormatter,具有线程安全、简洁、不变性等优点。
|
2月前
|
NoSQL MongoDB 数据库
数据库的删除
MongoDB删除数据库语法为:db.dropDatabase(),用于移除已持久化的数据库,执行后将永久删除当前数据库及其中所有数据,请谨慎操作。
使用 entrySet 遍历 Map 类集合 KV
遍历Map时,keySet需两次遍历,效率较低;entrySet一次遍历即可获取键值对,性能更优。JDK8推荐使用Map.forEach方法。values()返回V值List,keySet()返回K值Set,entrySet()返回K-V组合Set。
|
2月前
|
存储 NoSQL MongoDB
选择和创建数据库
MongoDB中使用`use 数据库名`选择或创建数据库,若不存在则自动创建;`show dbs`查看所有数据库;`db`查看当前库。集合需插入数据后才真正创建。数据库名需为非空小写UTF-8字符串,不含特殊字符,最长64字节。保留库包括admin(权限管理)、local(本地存储)和config(分片配置)。
Service接口
MP提供了更高效的Service层方法,如批量增删改查、分页等。使用时需继承IService接口及ServiceImpl实现类,遵循其规范,提升开发效率,避免重复编写Mapper层代码,实现更优雅的业务逻辑封装。(239字)
|
2月前
|
XML Java 数据库连接
常见配置
MyBatisPlus配置继承MyBatis原生设置,支持别名包扫描、XML映射文件路径定义,并提供驼峰命名转换、二级缓存控制。全局配置支持雪花ID生成、非空字段更新策略,简化数据库操作,提升开发效率。(238字)
|
2月前
|
Java
Arrays.asList之后不要调用修改操作
`Arrays.asList()`返回的列表不可直接增删元素,因其底层为固定大小的内部类,调用`add/remove`会抛出`UnsupportedOperationException`;且列表与原数组共享数据,修改数组内容会影响列表。
|
2月前
|
前端开发
Controller中具体使用
该接口用于根据企业ID和编码查询历史交易数据,无需登录即可访问。通过POST请求调用,返回符合条件的标签信息列表,响应结果包含查询状态及数据内容,适用于前端筛选展示场景。