Mybatis 动态SQL(set)

我们先用XML的方式实现 : 把 id 为 13 的那一行的 username 改为 ip

创建一个接口 UserInfo2Mapper ,然后在接口中声明该方法

package com.example.mybatisdemo.mapper;
import com.example.mybatisdemo.model.UserInfo;
import org.apache.ibatis.annotations.*;
import java.util.List;@Mapper
public interface UserInfo2Mapper {Integer updateByCondition(UserInfo userInfo);
}

然后在resources 中创建 Userinfo2XMLMapper.xml 文件,然后输入如下代码

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.mybatisdemo.mapper.UserInfo2Mapper"><update id="updateByCondition">update userinfoset<trim suffixOverrides=",">//删掉最后的逗号<if test="username!=null">username = #{username},</if><if test="age!=null">age = #{age},</if><if test="gender!=null">gender = #{gender}</if></trim>where id = 13</update>
</mapper>

然后我们回到接口 UserInfo2Mapper,右键,Generate,test,勾选 updateByCondition,ok

补充代码,

package com.example.mybatisdemo.mapper;import com.example.mybatisdemo.model.UserInfo;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;import java.util.List;import static org.junit.jupiter.api.Assertions.*;@Slf4j
@SpringBootTest
class UserInfo2MapperTest {@Autowiredprivate UserInfo2Mapper userInfo2Mapper;@Testvoid updateByCondition() {UserInfo userInfo = new UserInfo();userInfo.setUsername("ip");//userInfo.setAge(23);//userInfo.setGender(0);userInfo2Mapper.updateByCondition(userInfo);}
}

运行成功

 打开数据库看,没毛病

Userinfo2XMLMapper.xml 里面的 trim 标签也可以化简,如下图,其他的跟上面一样,也是可以正常运行的

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.mybatisdemo.mapper.UserInfo2Mapper"><update id="updateByCondition">update userinfo<set><if test="username!=null">username = #{username},</if><if test="age!=null">age = #{age},</if><if test="gender!=null">gender = #{gender}</if></set>where id = 12</update>
</mapper>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/639729.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mybatis的缓存机制

视频教程_免费高速下载|百度网盘-分享无限制 (baidu.com) MyBatis 有一套灵活而强大的缓存机制&#xff0c;主要分为两级缓存&#xff1a;一级缓存&#xff08;本地缓存&#xff09;和二级缓存&#xff08;全局缓存&#xff09;。 一级缓存&#xff08;本地缓存&#xff09;&a…

【网络奇遇记】揭秘计算机网络性能指标:全面指南

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;网络奇遇记、数据结构 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 &#x1f4cb;前言一. 速率1.1 数据量1.2 速率 二. 带宽三. 吞吐量四. 时延4.1 发送时延4.2 传播时延…

PCIe-6328 八口USB3.0图像采集卡:专为工业自动化和机器视觉设计

PCIe-6328一块8口USB 3.0主控卡&#xff0c;专为工业自动化和机器视觉相关应用设计。USB 3.0或称作高速USB&#xff0c;是一项新兴总线技术&#xff0c;10倍于USB2.0的传输速度&#xff0c;尤其适用于高速数据存储和图 像设备。 绝大多数现有USB 3.0卡兼用多个接口于一个USB 3…

5. 函数调用过程汇编分析

函数调用约定 __cdecl 调用方式 __stdcall 调用方式 __fastcall 调用方式 函数调用栈帧分析 补充说明 不同的编译器实现不一样&#xff0c;上述情况只是VC6.0的编译实现即便是在同一个编译器&#xff0c;开启优化和关闭优化也不一样即便是同一个编译器同一种模式&#xff0c;3…

光催化专用设备太阳光模拟器装置

什么是光催化材料&#xff1f; 光催化材料是指通过该材料、在光的作用下发生的光化学反应所需的一类半导体催化剂材料。半导体是一种介于导体和绝缘体之间的物质&#xff0c;它有一个特殊的能带结构&#xff0c;即价带和导带之间有一个禁带&#xff0c;禁带的宽度决定了半导体…

linux压缩包形式安装mysql5.7

1. 下载 MySQL 压缩包 在官方网站或者镜像站下载 MySQL 压缩包。mysql-5.7.29-linux-glibc2.12.tar 下载地址&#xff1a; MySQL :: Download MySQL Community Server (Archived Versions) 2. 解压缩文件 使用以下命令解压 MySQL 压缩包&#xff1a; tar xvf mysql-5.7.29…

软考高项论文范文 | 进度管理

2017年5月&#xff0c;受某政府部门的委托&#xff0c;我单位承接了某信息共享与服务系统的建设工作&#xff0c;在本项目中我担任项目经理&#xff0c;负责项目的整体规划、组织实施和管理控制。某政府部门拥有多年积累的大量工作资源&#xff0c;这些信息是其开展各项行业服务…

南南合作里程碑!批量苏州金龙纯电公交正式交付哥斯达黎加

1月17日&#xff0c;哥斯达黎加电力研究所&#xff08;ICE&#xff09;收到了中国援助的批量苏州金龙海格纯电公交&#xff0c;该批车是中国应对气候变化南南合作援助哥斯达黎加项目的重要物资之一。中国驻哥斯达黎加特命全权大使汤恒出席交付仪式。 中国驻哥斯达黎加大使汤恒&…

esp8266小车智能wifi小车寒假营实战背篼酥老师

esp8266小车智能wifi小车寒假营实战 10节课 整车效果图如下 第一课 esp8266开发环境搭建和库文件加载 课程如下&#xff1a; 环境搭建 库文件下载链接&#xff1a;见文章末尾 第二课 小车模块组成和例程简介 课程如下&#xff1a; 车身PCB 小车电机 esp8266扩展板 esp8…

Flink实战之DataStream API

接上文&#xff1a;Flink实战之运行架构 Flink的计算功能非常强大&#xff0c;提供的应用API也非常丰富。整体上来说&#xff0c;可以分为DataStreamAPI&#xff0c;DataSet API 和 Table与SQL API三大部分。 其中DataStream API是Flink中主要进行流计算的模块。 DateSet API是…

vue3-组件通信

1. 父传子-defineProps 父组件&#xff1a; <script setup> import { ref } from vueimport SonCom from /components/Son-com.vueconst message ref(parent)</script><template><div></div><SonCom car"沃尔沃" :message"…

ctfshow-反序列化(web267-web270)

目录 web267 web268 web269 web270 总结 web267 页面用的什么框架不知道 看源码看一下 框架就是一种软件工具&#xff0c;它提供了一些基础功能和规范&#xff0c;可以帮助开发者更快地构建应用程序。比如Yii框架和ThinkPHP框架就是两个流行的PHP框架&#xff0c;它们提供…

Golang 中如何实现 Set

在Go编程中&#xff0c;数据结构的选择对解决问题至关重要。本文将探讨如何在 GO 中实现 set 和 bitset 两种数据结构&#xff0c;以及它们在Go中的应用场景。 Go 的数据结构 Go 内置的数据结构并不多。工作中&#xff0c;我们最常用的两种数据结构分别是 slice 和 map&#…

如何本地安装Python Flask并结合内网穿透实现远程开发

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

flutter 实现定时滚动的公告栏的两种不错方式

相同的部分 自定义一个类继承StatefulWidget 所有公告信息存放在list里 第一种 scrollControllerAnimatedContainer 逻辑如下 我们可以发现启动了一个timer计时器计时5秒&#xff0c;hasClients检查其目标对象&#xff08;我们用的是listview&#xff09;是否被渲染&#x…

HarmonyOS鸿蒙应用开发(三、轻量级配置存储dataPreferences)

在应用开发中存储一些配置是很常见的需求。在android中有SharedPreferences&#xff0c;一个轻量级的存储类&#xff0c;用来保存应用的一些常用配置。在HarmonyOS鸿蒙应用开发中&#xff0c;实现类似功能的也叫首选项&#xff0c;dataPreferences。 相关概念 ohos.data.prefe…

【操作系统】实验一 Linux操作系统安装

&#x1f57a;作者&#xff1a; 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux &#x1f618;欢迎关注&#xff1a;&#x1f44d;点赞&#x1f64c;收藏✍️留言 &#x1f3c7;码字不易&#xff0c;你的&#x1f44d;点赞&#x1f64c;收藏❤️关注对我真的很重要&…

Simulink之Signal

Simulink.Signal 指定信号的属性 描述 此类使您能够创建工作区对象,用于分配或验证信号或离散状态的属性,如其数据类型、数字类型、维度等。您可以使用信号对象来: 将值指定给信号源未指定的信号属性(值为-1或auto)。 验证其值由信号源显式指定的信号属性。此类属性的…

2017年认证杯SPSSPRO杯数学建模B题(第二阶段)岁月的印记全过程文档及程序

2017年认证杯SPSSPRO杯数学建模 B题 岁月的印记 原题再现&#xff1a; 对同一个人来说&#xff0c;如果没有过改变面容的疾病、面部外伤或外科手术等经历&#xff0c;年轻和年老时的面容总有很大的相似性。人们在生活中也往往能够分辨出来两张不同年龄段的照片是不是同一个人…

FPGA物理引脚,原理(Pacakge and pinout)-认知3

画FPGA芯片引脚封装图&#xff08;原理&#xff09;&#xff0c;第一是参考开发板(根据一下描述了解总览&#xff09;&#xff0c;第二是研究Datasheet. ASCII Pinout File Zynq-7000 All Programmable SoC Packaging and Pinout(UG585) 1. Pacakge overview 1.1&#xff0…