mybatis-210721-04---动态sql-set与if结合的动态更新

Keysight ADS新手必看:3分钟搞定TDR模拟的保姆级教程(附差分信号设置技巧) 本文为Keysight ADS新手提供TDR模拟的保姆级教程,详细介绍了从基础环境准备到差分信号设置的全流程。通过内置模板调用、待测器件连接和仿真结果解读,帮助用户快速掌握TDR模拟技术,特别包含差分信号配置技巧,提升信号完整性分析效率。 阅读详情

mybatis-210721-04—动态sql-set与if结合的动态更新


<!--
		更新员工
			要求:
			携带了那个字段,更新哪个字段
-->

EmployeeMapper.java

package com.bgy.mybatis.dao;

import com.bgy.mybatis.bean.Employee;

public interface EmployeeMapper {
	
	public void updateEmp(Employee employee);
}

EmployeeMapper.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.bgy.mybatis.dao.EmployeeMapper">
	
	<update id="updateEmp">
		update 
			tbl_employee
		
		<!-- 使用trim标签 -->
		<trim prefix="set" suffixOverrides=",">
			<if test="lastName!=null and lastName!=&quot;&quot;">
				last_name=#{lastName},
			</if>
			<if test="email!=null and email.trim()!=&quot;&quot;">
				email=#{email},
			</if>
			<if test="gender!=null and gender.trim()!=&quot;&quot;">
				gender=#{gender}		
			</if>
		</trim>
		
		<!--  使用set标签
		<set>
			<if test="lastName!=null and lastName!=&quot;&quot;">
				last_name=#{lastName},
			</if>
			<if test="email!=null and email.trim()!=&quot;&quot;">
				email=#{email},
			</if>
			<if test="gender!=null and gender.trim()!=&quot;&quot;">
				gender=#{gender}		
			</if>
		</set>
		-->
		
		<!--  不使用set标签  
		set
			<if test="lastName!=null and lastName!=&quot;&quot;">
				last_name=#{lastName}
			</if>
			<if test="email!=null and email.trim()!=&quot;&quot;">
				email=#{email}		
			</if>
			<if test="gender!=null and gender.trim()!=&quot;&quot;">
				gender=#{gender}		
			</if>
		-->
		<where>
			id=#{id}
		</where>
	</update>
</mapper>

MybatisTest.java

package com.bgy.mybatis.test;

import java.io.IOException;
import java.io.InputStream;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.jupiter.api.Test;

import com.bgy.mybatis.bean.Employee;
import com.bgy.mybatis.dao.EmployeeMapper;

class MybatisTest {
	
	public SqlSessionFactory getSqlSessionFactory() throws IOException {
		String resource = "mybatis-config.xml";
		InputStream inputStream = Resources.getResourceAsStream(resource);
		return new SqlSessionFactoryBuilder().build(inputStream);
	}

	
	/**·
	 * 测试sql——set与if结合的动态更新
	 * @throws IOException
	 */
	@Test
	public void test() throws IOException{
		SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
		SqlSession sqlSession = sqlSessionFactory.openSession();
		
		try {
			EmployeeMapper mapper = sqlSession.getMapper(EmployeeMapper.class);
			
			Employee employee = new Employee(1,"zhangsan",null,null);
			mapper.updateEmp(employee);
			
			sqlSession.commit();
		} finally {
			sqlSession.close();
		}
	}
}
夏令营纪实——东南大学计科院&PALM实验室面试全解析 本文详细解析了东南大学计科院与PALM实验室夏令营的面试全流程,包括前期准备、技术考察、项目经验深挖等关键环节。特别针对自然语言处理(NLP)和机器学习(ML)领域的高频问题提供应对策略,帮助申请者提升面试表现。文章还分享了实用的准备技巧和面试经验,为有意向参加该夏令营的学生提供宝贵参考。 阅读详情

相关推荐

TwinCAT3新手必看:5分钟搞定EtherCAT从站PDO动态配置(附电流变量添加技巧)

本文为TwinCAT3新手提供了EtherCAT从站PDO动态配置的快速入门指南。文章详细解析了Process Data Object(PDO)在实时数据交换中的核心作用,并分步演示了在TwinCAT3工程中扫描从站、动态添加与映射PDO(包括接收PDO和发送PDO)的完整操作流程。重点分享了如何灵活添加并监控如电机实际电流等关键工艺变量的高级技巧,并针对不同品牌驱动器的兼容性问题提供了实用的调试心法和解决方案,帮助工程师快速上手并优化工业自动化系统。

xgboost6farmer的博客 452

SQL语句---更新数据

使用sql语句更新数据。

牧小七的博客 459

探索Vortex开源GPGPU:RISC-V SIMT架构(2),指令Decode

本文分析了Vortex RISC-V内核的Decode模块设计。文章详细介绍了指令译码过程,包括操作码、功能码和寄存器字段的提取,以及不同类型指令(R/I/S/B/U/UJ)的立即数处理。重点阐述了基于操作码和功能码的分层译码逻辑,包括ALU运算、分支跳转、系统调用等指令的译码规则。此外,还描述了定制指令的处理机制以及与调度器的握手协议。Decode模块通过组合逻辑实现快速译码,并将结果传递给下级Issue模块,同时协调指令流控制。

weixin_55313207的博客 1792

老司机学习MyBatis之动态SQL使用set执行更新操作

一、前言 当在 update 语句中使用if标签时,如果前面的if没有执行,则或导致逗号多余错误。使用set标签可以将动态的配置 SET 关键字,并剔除追加到条件末尾的任何不相关的逗号。使用 if+set 标签修改后,如果某项为 null 则不进行更新,而是保持数据库原值。 二、案例 我们先来看看不用set标签时,我们如何实现update功能操作 修改EmpMapper.java类,新增一...

Java小蚂蚁 1万+

海康WEB3.3控件开发包 V3.3 前端vue项目调用实时监控画面

本需求的完成离不开后端将设备映射到公网, 以及前端单独部署demo页面这个思路的转变。

hero8011的博客 1万+

从零到一:用ROS2和Gazebo搭建Franka机械臂仿真环境(避坑指南)

本文详细介绍了如何使用ROS2和Gazebo从零开始搭建Franka机械臂的仿真环境,包括环境准备、ROS2包安装、控制器配置及常见问题解决方案。特别针对关节位置控制等核心功能提供了实用代码示例和避坑指南,帮助开发者高效构建机器人算法验证平台。

weixin_29061465的博客 459

JavaEE简单示例——动态SQL之更新操作<set>元素

JavaEE简单示例——动态SQL中的的简单介绍和简单使用

hssjsh的博客 1423

从零构建AXI接口的DDR3控制器:MIG IP核实战指南

本文详细介绍了如何从零构建AXI接口的DDR3控制器,重点解析MIG IP核的配置流程和优化策略。通过实战案例和仿真验证,帮助开发者掌握FPGA中DDR3控制器的AXI接口设计,提升高速数据传输效率。适用于图像处理、网络加速等高性能应用场景。

weixin_28256233的博客 451

动态SQL使用set执行更新操作

转载于:https://www.cnblogs.com/linman/p/10077549.html

aicui7782的博客 556

Linux下科大讯飞离线语音识别SDK从下载到实战(附常见问题解决)

本文详细介绍了在Linux系统下,如何从科大讯飞开放平台获取离线语音识别SDK,完成环境准备、编译部署到实战开发的完整流程。文章重点解析了SDK目录结构、语法词典定制、示例代码修改,并针对开发中常见的“词典加载失败”、音频格式、交叉编译及性能优化等问题提供了深度解决方案,助力嵌入式与IoT开发者快速实现稳定可靠的离线命令识别功能。

honey的博客 1241

【MCU】一种基于RTOS的无应答重发机制

文章目录一、背景描述二、结构框图三、基于RTOS的信号量的实现(3-1)思路描述(3-2)步骤(3-2-1)定义超时重发信号量(3-2-2)定义发送线程入口(3-2-3)定义接收线程入口四、基于定时器的实现(4-1)思路描述(4-2)步骤(4-2-1)创建定时器(4-2-2)定义定时器超时处理函数(4-2-3)定义发送线程入口(4-2-4)定义接收线程入口 一、背景描述 ​ 在微控制器之间进行数据通信时,大多需要添加无应答重发机制,以增强数据交互和通信的稳定性。 在使用UART通信的双方设备,当一次数据传输

iriczhao的博客 1523

如何使用SQL系列 之 如何在SQL中更新数据

在使用数据库时,有时可能需要更改已经插入其中的数据。例如,您可能需要纠正拼写错误的条目,或者可能需要向不完整的记录添加新信息。结构化查询语言——通常被称为SQL——提供了UPDATE关键字,允许用户更改表中的现有数据。本指南概述了如何使用SQL的UPDATE语法更改一个或多个表中的数据。它还解释了SQL如何处理与外键约束冲突的UPDATE操作。通过阅读本指南,您学习了如何使用SQL的UPDATE语句更改或更多表中的现有记录。你还学习了SQL如何处理与外键约束冲突的UPDATE操作,以及如何更改默认行为。

码觉客的博客 1万+

基于matlab的CNN物体识别物体分类系统

主要对物体进行识别,搭建一个物体分类系统本次实验选择规模稍大的 CIFAR-10 数据集进行分类识别,对应图像的大小设计 VggNet、ResNet 进行网络训练。在实际操作过程中,受限于数据规模和硬件配置,对于大小放缩、批次参数、训练步数等进行了多次调试,这也对以后的图像分类任务具有较高的参考意义,并通过对 CIFAR-10 数据集进行训练和评测,采用网络修改的方式来得到新的 CNN 结构,适用于对网络进行配置、融合等相关研究。读者可以通过自行设计或选择其他网络、加载其他数据等方式进行实验的延伸。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 2006

动态SQL之实现更新操作(if + set、if + trim)

前言   该方法实现更新操作和上一章 动态SQL之实现多条件查询(if+where、if+trim) 非常类似。   需要特殊了解的,可以去看上一章详解。 出现原因   我们之前使用update进行更新数据的时候,我们通常会书写成如下形式: <!-- 实现更新操作 --> <update id="updateUser"> update shop set num = #{num} , price = #{price} , Date = #{Date} whe

Eva_xiaoxi的博客 2507

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

MyBatis的动态sql_set与if结合的动态更新

MyBatis的动态sql_set与if结合的动态更新 EmployeeMapperDynamicSQL.java package com.cn.mybatis.dao; import java.util.List; import com.cn.zhu.bean.Employee; public interface EmployeeMapperDynamicSQL { //

zhupengqq的博客 1178

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

MyBatis查询数据库之四(动态SQL -- if、trim、where、set、foreach 标签)

在注册用户时,有些信息是必填的,有些信息是非必填的,比如咱们优快云的信息,用户昵称是必填的....其余的比如个人简介、出生日期、开始工作都是非必填的程序应该 如何实现呢?,它可以实现如果没有任何的查询条件,那么它可以隐藏查询中的 where sql,但如果存在查询条件,那么会生成 where 的sql 查询,collection:绑定方法参数中的集合,如 List,Set,Map或数组对象。如果在某种情况下,所有的属性为非必填,那么你不知道哪个属性肯定会填上,对集合进⾏遍历时可以使用该标签。

m0_62976995的博客 2932

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

19、动态SQL之<set><if>标签的使用

当更新表时,只更新值不为空的字段。需要用<if>判断传入的值是否不为空,然后更新值不为空对应的字段。 <update id="updatePerson"> <!-- Set标签的使用 --> update PERSON set <if test="lastName!=null"> las

u010502101的博客 5922

ibatis 动态java类_ibatis实现动态sql处理

package base;import java.io.ByteArrayInputStream;import java.io.InputStream;import java.sql.Connection;import java.sql.ResultSet;import java.util.Calendar;import java.util.Date;import java.util.List;i...

weixin_32557927的博客 209

mybatis动态sql中where、set、if 、for循环使用

if &amp;amp;amp;lt;select id=&amp;amp;quot;listBySearch&amp;amp;quot; resultType=&amp;amp;quot;java.lang.Integer&amp;amp;quot;&amp;amp;amp;gt; SELECT id FROM hospital WHERE 1=1 &amp;amp;amp;lt;if test=&amp;am

olive 2772

Mybatis中$ {} 和 # {}的区别,动态SQL之if、where、set、trim、foreach标签的使用

一.Mapper文件的补充细节 a) Xml的特殊字符 在mapper文件中,小于号用& lt;代替, 大于号用 & gt;代替 i. < &lt; ii. > &gt; b) $ {} 和 # {}的区别 i. 使用上,$ {}要获取的参数值,对应的参数必须使用Param注解 ii. 底层上, ${}使用字符串拼接 #{}使用?占位符 ...

Java开发,人工智能,边缘计算,致力于掌握前沿技术 645

MyBatis学习笔记——动态SQL(if、trim、choose、set、foreach、sql)

动态拼接SQL if判断 (1)新建Mapper接口 public interface EmployeeMapperDynamicSQL { public List&amp;amp;amp;amp;amp;amp;lt;Employee&amp;amp;amp;amp;amp;amp;gt; getEmpsByConditionIf(Employee employee); } (2)新建Mapper XML ```xml &amp;amp;amp;amp;

shen的博客 1602

mybatis之动态SQL操作之更新

1) 更新条件不确定,需要根据情况产生SQL语法,这种情况叫动态SQL /** * 持久层*/ public class StudentDao { /** * 动态SQL--更新 */ public void dynaSQLwithUpdate(Student student) throws Exception{ SqlS...

weixin_30915275的博客 753

Mybatis 插入更新动态条件标签

插入动态条件标签 <insert id="insertXXX" parameterType="XXX.Bean"> INSERT INTO XXX <trim prefix="(" suffix=")" suffixOverrides=","> id, <if test="name !='' and name !...

weixin_43735255的博客 1040

MyBatis动态SQL(认真看看, 以后写SQL就爽多了)

来源:阿进的写字台https://www.cnblogs.com/homejim/p/9909657.html0 一起来学习 mybatis你想不想来学习 mybatis? 学习其使用和...

weixin_45737309的博客 593

mybatis中的动态SQL(if,trim,where,set,foreach标签)

动态SQL的使用

weixin_47331155的博客 723

Mybatis中update时set和if的用法

update时set和if的用法 每个修改都加逗号 set能够智能的去掉最后一个逗号

江黎 5万+
上一篇: mybatis-210721-03---动态sql-choose分支选择
下一篇: mybatis-210721-05---动态sql-foreach遍历集合
白光一
博客等级 码龄9年 0粉丝 174原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值