Mybatis中的update动态SQL语句
Mybatis中的CRUD操作(增删改查)中,简单的SQL操作比较直观,如查找操作:
<select id="findBySrcId" resultMap="entityRelationResultMap">SELECT * FROM ENTITY_RELATION WHERE SRC_ID=#{srcId}
</select>
其中id对应同名java文件中的方法,resultMap对应的自定义的数据类型(当使用java自带类型就更容易了,比如java.lang.String之类的)。
但是涉及到更新操作时,可能不需要对所有字段更新,这时不需要更新的字段需要保持原字段信息,当使用以下信息就会报错:
<update id="updateOne" parameterType="com.inspur.search.data.EntityRelation">update ENTITY_RELATION SET SRC_ID=#{srcId},SRC_TYPE=#{srcType},DEST_ID=#{destId},DEST_TYPE=#{destType},REL_TYPE=#{relType},STATUS=#{status},SN_ID=#{snId}where id=#{id}
</update>
因为不更新的字段,会被传递null到SQL中,引起异常。
这时就需要进行动态SQL拼接,如下,使用trim就是为了删掉最后字段的“,”。
主要不用单独写SET了,因为set被包含在trim中了:
<update id="updateOne" parameterType="com.inspur.search.data.EntityRelation">UPDATE ENTITY_RELATION<trim prefix="set" suffixOverrides=","><if test="srcId!=null">SRC_ID=#{srcId},</if><if test="srcType!=null">SRC_TYPE=#{srcType},</if><if test="destId!=null">DEST_ID=#{destId},</if><if test="destType!=null">DEST_TYPE=#{destType},</if><if test="relType!=null">REL_TYPE=#{relType},</if><if test="status!=null">STATUS=#{status},</if><if test="snId!=null">SN_ID=#{snId},</if></trim>WHERE id=#{id}
</update>
转载于:https://www.cnblogs.com/myitroad/p/5516963.html
Mybatis中的update动态SQL语句相关推荐
- Java神鬼莫测之MyBatis注解开发之动态SQL语句(六)
1.Mybatis注解开发之动态SQL语句 背景:使用mybatis的注解开发动态Sql会比较麻烦, 很不方便, 所以不太推荐使用,该文章以查询作为案例,演示动态sql语句. 注意:Mybatis的动 ...
- Mybatis第三天动态Sql语句、XML中一对多、多对一、多对多该怎么写
Mybatis第三天 Mybatis中使用unpooled配置连接池原理分析 Mybatis中使用pooled配置连接的原理分析 Mybatis中的事务原理和自动提交设置 Mybatis中的动态sql ...
- Oracle中如何解决动态SQL语句过长的问题
Oracle的varchar2类型最大长度为4000,所有,如果动态sql语句过长,就没有办法在一个varchar2变量中存储整个语句,导致execute immediate本地动态sql方式无法使用 ...
- Mybatis 中update动态SQL语句
Mybatis中的CRUD操作(增删改查)中,简单的SQL操作比较直观,如查找操作: <select id="findBySrcId" resultMap="ent ...
- Mybatis中XML的文件SQL语句与动态sql标签(trim|where|set|foreach|if|choose|when|otherwise|bind)
在xml中写sql语句有很多的规范.标准,有时候想要找对应的例子还得翻一翻以前的代码,这里干脆对遇到的情况做个记录. 一,新建XML文件 <?xml version="1.0" ...
- Mybatis(13)动态sql语句if/where/foreach
创建项目day03_eesy_02dynamicSQL,复制Mybatis(12)中项目day03_eesy_01datasourceAndTx if标签的使用,针对查询 1.更改IUseDao接口 ...
- Mybatis中模糊查询的SQL语句应该怎么写?
第一种实现方式'%${value}%' select * from user where username like '%${value}%' 缺点:字符串拼接存在sql注入问题 sql注入问题可以参 ...
- Spring Boot进阶(33):Mybatis 中xml文件写sql语句时大于、大于等符号转义 | 超级详细,建议收藏
1. 前言
- MyBatis学习总结(11)——MyBatis动态Sql语句
MyBatis中对数据库的操作,有时要带一些条件,因此动态SQL语句非常有必要,下面就主要来讲讲几个常用的动态SQL语句的语法 MyBatis中用于实现动态SQL的元素主要有: if choose(w ...
- oracle 带有变量的语句_Oracle 动态SQL语句(2)之含变量的WHERE语句与日期变量
在 Oracle 动态SQL语句(1)中提到基本动态SQL语句书写,但在写动态SQL语句时特别要注意日期型变量和WHERE语句的编写. 如下代码: 1.注意在执行动态SQL语句时,execute im ...
最新文章
- [Android Pro] 精确记录和恢复ListView滑动位置
- C语言求3x3数组对角线元素之和
- Win2008 R2实战之只读域控制器部署(图)
- php面试基础项目,PHP面试经典题
- yum标准化安装nginx最新版
- 基于Bootstrap 3.x的免费高级管理控制面板主题:AdminLTE
- 应用程序的主入口点应用程序的主入口点应用程序的主入口点
- 爬虫-例子-飞机图片的提取-抓取一个文章中的全部图片
- java5分钟项目讲解_5分钟快速创建spring boot项目的完整步骤
- ORA-01033 的解决
- Python 操作pdf文件-合并操作 (三)
- 网络工程师(学习课件和视频)
- 有没有能PC远程控制安卓手机的App?AirDroid实现PC远程控制安卓
- 拼写检查工具是android,Android基础知识之拼写检查框架
- 从零开始编写minecraft光影包(1)基础阴影绘制
- vscode生成的.BROWSE.VC.DB文件超大问题
- 如何使用命令查看计算机sid,Sid 命令
- Python实现PDF合并工具(含源码)
- 从Dijkstra谈帅才的洞察力(王选)
- 网上兼职编程赚钱的那点事
热门文章
- keras搭建wgan-gp和wgan-div,可生成图像
- C/C++[codeup 1944]八进制
- Softmax 回归 + 损失函数 + 图片分类数据集 动手学深度学习v2 pytorch
- 微软改进的DSSM结构:
- 242. Valid Anagram [easy] (Python)
- 决策树C4.5算法对ID3算法的改进
- java多线程 同一资源_同一资源多线程并发访问时的完整性
- c#物联网_「物联网架构」Apache-Kafka:物联网数据平台的基石
- Just Say It!——DNN在语音识别系统中的应用
- Python的中文处理