使用LamdbaUpdateWrapper的setSql作用及风险

简介: 使用LamdbaUpdateWrapper的setSql作用及风险

title: 使用LamdbaUpdateWrapper的setSql作用及风险

date: 2022-04-12 18:10:34

tags: java


问题引入

先思考下:我们要对数据库里面的某条数据进行更新,并且想要在某个字段原先的基础上修改,我们怎么办?


正常的情况下,我们需要先查出来再更新,可就是想直接更新,那就需要去Mapper中写sql,就为了一个字段感觉费劲,在这种情况下使用LamdbaUpdateWrapper的setSql()方法即可。


//把num字段加5
LambdaUpdateWrapper<User> updateWrapper = Wrappers.<User>lambdaUpdate()
  .eq(User::getId, userId)
  .setSql("count = count + 5");
userService.update(updateWrapper);

BUT,这样就会存在可能有风险,主要还是为了测试mybatis-plus,是否进行的防范,经过测试,并没有。


比如就使用最常见的 sleep(),把这部分加到sql段中 + sleep(5)


LambdaUpdateWrapper<User> updateWrapper = Wrappers.<User>lambdaUpdate()
                .eq(User::getId, userId)
                .setSql("count = count + 5 + sleep(5)");

1.png

不过话说回来,这也就是开发人员能接触到的,只是证明mybatis-plus并没有对setSql()进行过滤,是采取直接拼上去的方式。


每日单词


2.png

以上就是使用LamdbaUpdateWrapper的setSql作用及风险的全部内容

相关文章
|
Java 数据库连接 数据库
Mybatis-plus中的QueryWrapper的多种用法!(总结)
Mybatis-plus中的QueryWrapper的多种用法!(总结)
2999 0
|
Java 数据库连接 数据库
探究Java中的MyBatis Plus注解 @TableField:灵活处理字段映射与自动填充
在数据库操作中,字段映射和字段填充是开发者经常需要处理的问题。MyBatis Plus作为一款优秀的ORM框架,提供了注解 `@TableField`,能够帮助开发者更加灵活地处理字段映射,以及在特定场景下实现自动填充功能。本文将深入探讨 `@TableField` 注解的用法及其在持久层开发中的应用。
5842 1
|
NoSQL Java Redis
Spring boot整合Redis实现发布订阅(超详细)
Redis发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收信息。微信,微博,关注系统 Redis客户端可以订阅任意数量的频道
8866 0
Spring boot整合Redis实现发布订阅(超详细)
|
8月前
|
Java 关系型数据库 MySQL
深入解析 @Transactional——Spring 事务管理的核心
本文深入解析了 Spring Boot 中 `@Transactional` 的工作机制、常见陷阱及最佳实践。作为事务管理的核心注解,`@Transactional` 确保数据库操作的原子性,避免数据不一致问题。文章通过示例讲解了其基本用法、默认回滚规则(仅未捕获的运行时异常触发回滚)、因 `try-catch` 或方法访问修饰符不当导致失效的情况,以及数据库引擎对事务的支持要求。最后总结了使用 `@Transactional` 的五大最佳实践,帮助开发者规避常见问题,提升项目稳定性与可靠性。
1316 12
|
JSON 数据格式
FeignClient【问题】Method threw ‘feign.codec.DecodeException‘ exception.也许是最简单的解决方法
FeignClient【问题】Method threw ‘feign.codec.DecodeException‘ exception.也许是最简单的解决方法
1283 0
|
测试技术 数据库
深入探索MyBatis-Plus中Service接口的lambdaUpdate用法及示例
深入探索MyBatis-Plus中Service接口的lambdaUpdate用法及示例
2263 0
|
缓存 NoSQL Java
RedisTemplate操作Redis,这一篇文章就够了
redis是一款开源的Key-Value数据库,运行在内存中,由C语言编写。企业开发通常采用Redis来实现缓存。同类的产品还有memcache 、memcached 等。
3165 1
|
存储 NoSQL 算法
面试官:Redis 大 key 多 key,你要怎么拆分?
本文介绍了在Redis中处理大key和多key的几种策略,包括将大value拆分成多个key-value对、对包含大量元素的数据结构进行分桶处理、通过Hash结构减少key数量,以及如何合理拆分大Bitmap或布隆过滤器以提高效率和减少内存占用。这些方法有助于优化Redis性能,特别是在数据量庞大的场景下。
面试官:Redis 大 key 多 key,你要怎么拆分?
|
监控 Java 开发者
什么是 Spring Boot?
什么是 Spring Boot?
2797 6