当前位置: 首页 > news >正文

Mybatis进阶详细用法

目录

条件构造器

案例

自定义SQL

案例

Service接口

案例

综合案例


条件构造器

案例

    @Testvoid testQueryMapper() {// 创建 QueryWrapper 实例QueryWrapper<User> queryWrapper = new QueryWrapper<>();queryWrapper.select("id," + "username," + "info," + "balance ");// 添加条件:用户名包含 "o",余额大于等于 1000queryWrapper.like("username", "o").ge("balance", 1000);// 使用 MyBatis-Plus 的方法执行查询List<User> users = userMapper.selectList(queryWrapper);users.forEach(System.out::println);}
    @Testvoid testUpdateWapper() {UpdateWrapper<User> wrapper = new UpdateWrapper<>();// 使用实体的函数式方式指定要更新的字段wrapper.set("balance", 5000).eq("username", "jack");// 执行更新操作int updated = userMapper.update(null, wrapper);if (updated == 1) {// 更新成功System.out.println("更新成功");} else {// 更新失败或无记录被更新System.out.println("更新失败");}}

    @Testvoid testUpdateWapper1(){UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();updateWrapper.in("id", Arrays.asList(1, 2, 4));updateWrapper.setSql("balance = balance-200");userMapper.update(null,updateWrapper);}

自定义SQL

案例

Service接口

案例

  @Testvoid testSaveUser() {User user = new User();
//        user.setId(5L);user.setUsername("马超");user.setPassword("123");user.setPhone("18688990011");user.setBalance(200);user.setInfo("{\"age\": 24, \"intro\": \"英文老师\", \"gender\": \"female\"}");user.setCreateTime(LocalDateTime.now());user.setUpdateTime(LocalDateTime.now());userService.save(user);}@Testvoid testQuery() {List<User> users = userService.listByIds(Arrays.asList(1L, 2l, 3l));users.forEach(System.out::println);}

综合案例

@RequestMapping("/users")
@RestController
@Api(tags = "用户管理接口")
//配合final 完成构造函数注入
@RequiredArgsConstructor
public class UserController {private final IUserService iUserService;@ApiOperation("新增用户管理接口")@PostMappingpublic void saveUser(@RequestBody UserFormDTO userFormDTO) {User user = new User();
//        1.把Dto拷贝到PoBeanUtil.copyProperties(userFormDTO, user);iUserService.save(user);}@ApiOperation("删除用户管理接口")@DeleteMapping("{id}")public void deleteUserById(@ApiParam("用户id") @PathVariable("id") long id) {iUserService.removeById(id);}@ApiOperation("根据id查询用户接口")@GetMapping("{id}")public UserVO queryUserById(@ApiParam("用户id") @PathVariable("id") long id) {User user = iUserService.getById(id);
//        拷贝;return  BeanUtil.copyProperties(user,UserVO.class) ;}@ApiOperation("根据id批量查询用户接口")@GetMappingpublic List<UserVO> queryUserByIds(@ApiParam("用户集合ids集合") @RequestParam("ids") List<Long> ids) {
//       根据ids集合查询用户集合List<User> users = iUserService.listByIds(ids);
//        拷贝return BeanUtil.copyToList(users, UserVO.class);}@ApiOperation("根据id扣减用户余额")@PutMapping("/{id}/deduction/{money}")public void deductMoneyById(@ApiParam("用户id") @PathVariable("id") Long id, @ApiParam("扣减的金额") @PathVariable("money") Integer money) {iUserService.deductMoneyById(id, money);}}
@Service
@AllArgsConstructor
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IUserService {private final UserMapper userMapper;@Overridepublic void deductMoneyById(Long id, Integer money) {
//        查询用用户余额是否支持扣减
//        已经注入mapper了
//        User user1 = baseMapper.selectById(id);User user = this.getById(id);if (user == null || user.getStatus() == 2) {throw new RuntimeException("用户状态异常");}//        校验用户余额是否支持扣减if (user.getBalance() - money < 0) {throw new RuntimeException("用户余额不足");}UpdateWrapper<User> wrapper = new UpdateWrapper<>();wrapper.eq("id",id);
//        完成扣减baseMapper.deductMoneyById(wrapper,money);}
}
 void deductMoneyById(@Param("ew") UpdateWrapper<User> eq, @Param("money")Integer money);
  <update id="deductMoneyById">UPDATE user SET balance = balance-#{money}  ${ew.customSqlSegment}</update>

相关文章:

Mybatis进阶详细用法

目录 条件构造器 案例 自定义SQL 案例 Service接口 案例 综合案例 条件构造器 案例 Testvoid testQueryMapper() {// 创建 QueryWrapper 实例QueryWrapper<User> queryWrapper new QueryWrapper<>();queryWrapper.select("id," "username,&…...

Android 系统省电软件分析

1、硬件耗电 主要有&#xff1a; 1、屏幕 2、CPU 3、WLAN 4、感应器 5、GPS(目前我们没有) 电量其实是目前手持设备最宝贵的资源之一&#xff0c;大多数设备都需要不断的充电来维持继续使用。不幸的是&#xff0c;对于开发者来说&#xff0c;电量优化是他们最后才会考虑的的事情…...

了解什么是Docker

了解什么是Docker Docker 是一个开源的应用容器引擎&#xff0c;它允许开发者打包应用以及依赖包到一个可移植的容器中&#xff0c;然后发布到任何流行的 Linux 机器上&#xff0c;也可以实现虚拟化。容器是完全使用沙箱机制&#xff0c;相互之间不会有任何接口&#xff08;类…...

ChatGPT开源的whisper音频生成字幕

1、前言 好了&#xff0c;那接下来看一下whisper开源库的介绍 有五种模型大小&#xff0c;其中四种仅支持英语&#xff0c;提供速度和准确性的权衡。上面便是可用模型的名称、大致的内存需求和相对速度。如果是英文版的语音&#xff0c;直接想转换为英文。 本来我是想直接在我的…...

融知财经:期货和现货的区别是什么?哪个风险大?

期货和现货在交易对象等方面存在明显的区别。期货交易是一种衍生金融工具&#xff0c;主要用于价格发现、风险管理和投机&#xff0c;而现货交易则是商品和服务的实际买卖。在选择进行期货交易还是现货交易时&#xff0c;投资者需要根据自己的需求和市场情况来决定。 期货和现货…...

Android Studio开发之路(十)app中使用aar以及报错记录

书接上文&#xff1a;Android Studio开发之路&#xff08;九&#xff09;创建android library以及生成aar文件 五、app中使用aar文件的方法 先复制一下上面生成的aar文件。然后在你要添加到的app左上角选择“project”模式&#xff0c;然后找到libs文件夹&#xff0c;点击右键…...

sql-行转列3(转置)

行转列的常规做法是&#xff0c;group bysum(if())【或count(if())】 例题&#xff1a; 腾讯QQ 假设tableA如表5, tableB如表6, 表5 qq号&#xff08;字段名&#xff1a;qq&#xff09;游戏&#xff08;字段名&#xff1a;game&#xff09;10000a10000b10000c20000c20000d…...

MATLAB | 最新版MATLAB绘图速查表来啦!!

之前看大佬Pjer做的MATLAB速查表 http://home.ustc.edu.cn/~pjer1316/matlabplot/ 感觉非常的实用&#xff0c;最近几次MATLAB更新围绕画图方面也有很多新东西&#xff0c;于是就有了自己做一张最新版的速查表的想法&#xff0c;这张表长这样&#xff1a; 这张表的配色基本上…...

web安全之登录框渗透骚姿势,新思路

不管漏洞挖掘还是挖SRC&#xff0c;登录框都是重点关注对象&#xff0c;什么漏洞都有可能出现&#xff0c; 本篇文章做个总结&#xff0c;后面发现新思路后会继续更新 万能密码 or 弱口令 SQL注入 水平越权 垂直越权 逻辑漏洞 短信轰炸 邮箱轰炸 信息泄露 验证码DOS XSS万能密…...

无人机+自组网:空地点对点无人机通信解决方案

随着智能化技术的迅速发展, 无人化设备在战场上发挥的作用日益突显。在近期发生的多次局部战争中, 无人设备代替人类承担了多项危险且复杂的攻击任务, 达到 “兵不血刃” 的效果. 2020 年 1 月 3 日, 美军利用无人机执行了刺杀伊朗 “圣城旅” 指挥官苏莱曼尼行动. 纳戈尔诺 - …...

android TV app适配遥控器思路,recycleview选中放大

背景&#xff1a; 1、当遥控器遥控盒子&#xff0c;app内是有一套机制&#xff0c;响应遥控器的操作; 2、要实现遥控器选中的效果&#xff0c;必须要设置setOnFocusChangeListener方法&#xff0c;另外一个就是设置view的setOnClickListener方法&#xff1b;设置完之后&#…...

python篇-cmd 执行pip命令失败,但执行pyhon命令正常

当你在CMD中可以正常执行python命令&#xff0c;但执行pip命令失败时&#xff0c;这通常意味着pip没有被正确地添加到系统的环境变量中。这里有一些步骤来解决这个问题&#xff1a; 检查环境变量&#xff1a; 打开系统的环境变量设置&#xff08;右击“此电脑”>“属性”>…...

Redis系列-3 Redis缓存问题

1.缓存的作用 数据库(如Mysql)的持久化特点带来了较低的性能&#xff0c;高并发的场景下&#xff0c;连接池很快被耗尽而出现宕机或DOS&#xff0c;无法继续对外提供服务。相对于数据库的硬盘IO&#xff0c;缓存中间件基于内存进行读写&#xff0c;从而具备较大的吞吐量和高并…...

【数据结构】堆(Heap)

文章目录 一、堆的概念及结构二、堆的实现1.向上调整算法2.向下调整算法3.堆的创建4.堆的插入5.堆的删除6.堆的其他操作 三、堆的应用1.堆排序2.Top-K问题 一、堆的概念及结构 堆(Heap)是一种特殊的非线性结构。堆中的元素是按完全二叉树的顺序存储方式存储在数组 中。满足任意…...

vue cli 自定义项目架子,vue自定义项目架子,超详细

脚手架Vue CLI基本介绍&#xff1a; Vue CLI 是Vue官方提供的一个全局命令工具 可以帮助我们快速创建一个开发Vue项目的标准化基础架子【集成了webpack配置】 脚手架优点&#xff1a; 开箱即用&#xff0c;零配置内置babel等工具标准化的webpack配置 脚手架 VueCLI相关命令…...

flink cdc,读取datetime类型

:flink cdc&#xff0c;读取datetime类型&#xff0c;全都变成了时间戳 Flink CDC读取MySQL的datetime类型时会转换为时间戳的问题&#xff0c;可以通过在Flink CDC任务中添加相应的转换器来解决。具体来说&#xff0c;可以在MySQL数据源的debezium.source.converter配置项中指…...

Kotlin 编译器和工具链:深入解析与实践案例

Kotlin 编译器和工具链是构建 Kotlin 项目的核心组件&#xff0c;它们负责将 Kotlin 代码转换为可在 JVM 或 JavaScript 环境中运行的代码。本文将详细介绍 Kotlin 编译器和工具链的工作原理、使用方法&#xff0c;以及在实际开发中的应用案例。 1. 引言 Kotlin 作为一种现代…...

kettle

文章目录 读取共享数据库连接报错 读取共享数据库连接报错 读取共享数据库连接报错 解决方法&#xff1a;修改共享文件中的中文字符&#xff0c;文件位置一般是默认的&#xff1a;C:\Users\Administrator.kettle。将shared.xml文件中的中文字符改成英文后问题就解决了。...

Maven 自动化构建

优质博文&#xff1a;IT-BLOG-CN 一、Maven&#xff1a;是一款服务于 Java平台的自动化构建工具 【1】Maven可以将一个项目按模块划分成不同的工程&#xff0c;利于分工协作; 【2】Maven可以将 jar包保存在自己的中央“仓库”中进行统一管理&#xff0c;有需要使用的工程引用这…...

Unicode字符集和UTF编码

文章目录 前言一、字符集和编码方式二、unicode字符集utf32编码utf8编码utf8编码函数示例utf8解码函数示例 utf16编码utf16编码解码函数示例 总结 前言 本文详细介绍 u n i c o d e unicode unicode 字符集和其相关的三种编码方式&#xff1a; u t f 8 utf8 utf8&#xff0c;…...

CC Switch模型测试功能:构建可靠AI服务的全周期验证方法论

CC Switch模型测试功能&#xff1a;构建可靠AI服务的全周期验证方法论 【免费下载链接】cc-switch A cross-platform desktop All-in-One assistant tool for Claude Code, Codex & Gemini CLI. 项目地址: https://gitcode.com/GitHub_Trending/cc/cc-switch [问题发…...

FUTURE POLICE赋能在线教育:AI助教自动批改口语作业

FUTURE POLICE赋能在线教育&#xff1a;AI助教自动批改口语作业 每次上完英语口语课&#xff0c;最头疼的是什么&#xff1f;对很多学生来说&#xff0c;是等待老师批改作业的漫长过程&#xff0c;还有那千篇一律的“发音不错&#xff0c;继续努力”的反馈。对老师而言&#x…...

失真度测量仪校准 失真度测量仪校准检定装置应用方案 失真度仪校准器 失真度仪检定装置

在电子测量、计量检定、设备运维及科研生产等领域&#xff0c;失真度仪是检测信号纯净度的核心仪器&#xff0c;其测量精度直接决定产品质量管控、设备运维可靠性及科研数据准确性。但实际应用中&#xff0c;传统校准设备普遍存在精度不足、操作繁琐、场景适配性差、数据管理不…...

为什么你的LoRA微调总在step 217崩溃?Python大模型调试日志解密:从`torch._C._debug_dump_tracing_state()`到生产级可观测性

第一章&#xff1a;LoRA微调崩溃现象的系统性认知LoRA&#xff08;Low-Rank Adaptation&#xff09;作为一种高效参数微调技术&#xff0c;虽显著降低显存开销与训练成本&#xff0c;但在实际落地过程中频繁出现训练过程突然中断、梯度爆炸、loss突变为NaN或GPU内存溢出等“崩溃…...

Eino:Agent的LLM抽象

拨开迷雾看本质&#xff1a;从零推导 ChatModelAgent&#xff08;模型适配层与 Agent 运行时&#xff09; 在 react.md 里看到的是 “ReAct 作为范式” 的推导&#xff1b;而本篇把视角切到 chatmodel.go 作为工程实现&#xff1a;它不只是“为了 ReAct 画图”&#xff0c;更是…...

Phi-3-vision-128k-instruct创意编程:用JavaScript构建交互式图像故事生成器

Phi-3-vision-128k-instruct创意编程&#xff1a;用JavaScript构建交互式图像故事生成器 1. 引言&#xff1a;当AI创意遇上前端交互 想象这样一个场景&#xff1a;用户上传一张随手拍的照片&#xff0c;通过简单的滑块调整和风格选择&#xff0c;几秒钟后就能获得一个与图片内…...

百度网盘提取码智能获取工具:3秒解锁任何分享资源的终极方案

百度网盘提取码智能获取工具&#xff1a;3秒解锁任何分享资源的终极方案 【免费下载链接】baidupankey 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾遇到过这样的场景&#xff1f;好不容易找到一个急需的学习资源&#xff0c;点击百度网盘链接后…...

PostgreSQL杂谈 13—GIN索引的优化策略与实战调优

1. GIN索引的核心原理与性能瓶颈 GIN&#xff08;Generalized Inverted Index&#xff09;作为PostgreSQL中的"万能工具箱"&#xff0c;特别擅长处理数组、全文搜索这类"一对多"的数据关系。它的核心设计借鉴了搜索引擎的倒排索引思想&#xff0c;但比传统…...

SmolVLA长序列建模效果剖析:对比LSTM在时序预测任务中的表现

SmolVLA长序列建模效果剖析&#xff1a;对比LSTM在时序预测任务中的表现 最近在时间序列预测这个老生常谈的领域里&#xff0c;总有人问我&#xff1a;现在各种基于Transformer的新模型层出不穷&#xff0c;它们真的比LSTM这种“老将”强很多吗&#xff1f;尤其是在处理长序列…...

Wan2.2-I2V-A14B实战:基于LSTM的时序文本生成动态故事视频

Wan2.2-I2V-A14B实战&#xff1a;基于LSTM的时序文本生成动态故事视频 1. 场景与需求分析 在影视制作和互动叙事领域&#xff0c;如何将文字剧本快速转化为视觉预览一直是个耗时费力的过程。传统方法需要美术团队手工绘制分镜或使用基础动画工具&#xff0c;不仅成本高昂&…...