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语句相关推荐

  1. Java神鬼莫测之MyBatis注解开发之动态SQL语句(六)

    1.Mybatis注解开发之动态SQL语句 背景:使用mybatis的注解开发动态Sql会比较麻烦, 很不方便, 所以不太推荐使用,该文章以查询作为案例,演示动态sql语句. 注意:Mybatis的动 ...

  2. Mybatis第三天动态Sql语句、XML中一对多、多对一、多对多该怎么写

    Mybatis第三天 Mybatis中使用unpooled配置连接池原理分析 Mybatis中使用pooled配置连接的原理分析 Mybatis中的事务原理和自动提交设置 Mybatis中的动态sql ...

  3. Oracle中如何解决动态SQL语句过长的问题

    Oracle的varchar2类型最大长度为4000,所有,如果动态sql语句过长,就没有办法在一个varchar2变量中存储整个语句,导致execute immediate本地动态sql方式无法使用 ...

  4. Mybatis 中update动态SQL语句

    Mybatis中的CRUD操作(增删改查)中,简单的SQL操作比较直观,如查找操作: <select id="findBySrcId" resultMap="ent ...

  5. Mybatis中XML的文件SQL语句与动态sql标签(trim|where|set|foreach|if|choose|when|otherwise|bind)

    在xml中写sql语句有很多的规范.标准,有时候想要找对应的例子还得翻一翻以前的代码,这里干脆对遇到的情况做个记录. 一,新建XML文件 <?xml version="1.0" ...

  6. Mybatis(13)动态sql语句if/where/foreach

    创建项目day03_eesy_02dynamicSQL,复制Mybatis(12)中项目day03_eesy_01datasourceAndTx if标签的使用,针对查询 1.更改IUseDao接口 ...

  7. Mybatis中模糊查询的SQL语句应该怎么写?

    第一种实现方式'%${value}%' select * from user where username like '%${value}%' 缺点:字符串拼接存在sql注入问题 sql注入问题可以参 ...

  8. Spring Boot进阶(33):Mybatis 中xml文件写sql语句时大于、大于等符号转义 | 超级详细,建议收藏

    1. 前言

  9. MyBatis学习总结(11)——MyBatis动态Sql语句

    MyBatis中对数据库的操作,有时要带一些条件,因此动态SQL语句非常有必要,下面就主要来讲讲几个常用的动态SQL语句的语法 MyBatis中用于实现动态SQL的元素主要有: if choose(w ...

  10. oracle 带有变量的语句_Oracle 动态SQL语句(2)之含变量的WHERE语句与日期变量

    在 Oracle 动态SQL语句(1)中提到基本动态SQL语句书写,但在写动态SQL语句时特别要注意日期型变量和WHERE语句的编写. 如下代码: 1.注意在执行动态SQL语句时,execute im ...

最新文章

  1. [Android Pro] 精确记录和恢复ListView滑动位置
  2. C语言求3x3数组对角线元素之和
  3. Win2008 R2实战之只读域控制器部署(图)
  4. php面试基础项目,PHP面试经典题
  5. yum标准化安装nginx最新版
  6. 基于Bootstrap 3.x的免费高级管理控制面板主题:AdminLTE
  7. 应用程序的主入口点应用程序的主入口点应用程序的主入口点
  8. 爬虫-例子-飞机图片的提取-抓取一个文章中的全部图片
  9. java5分钟项目讲解_5分钟快速创建spring boot项目的完整步骤
  10. ORA-01033 的解决
  11. Python 操作pdf文件-合并操作 (三)
  12. 网络工程师(学习课件和视频)
  13. 有没有能PC远程控制安卓手机的App?AirDroid实现PC远程控制安卓
  14. 拼写检查工具是android,Android基础知识之拼写检查框架
  15. 从零开始编写minecraft光影包(1)基础阴影绘制
  16. vscode生成的.BROWSE.VC.DB文件超大问题
  17. 如何使用命令查看计算机sid,Sid 命令
  18. Python实现PDF合并工具(含源码)
  19. 从Dijkstra谈帅才的洞察力(王选)
  20. 网上兼职编程赚钱的那点事

热门文章

  1. keras搭建wgan-gp和wgan-div,可生成图像
  2. C/C++[codeup 1944]八进制
  3. Softmax 回归 + 损失函数 + 图片分类数据集 动手学深度学习v2 pytorch
  4. 微软改进的DSSM结构:
  5. 242. Valid Anagram [easy] (Python)
  6. 决策树C4.5算法对ID3算法的改进
  7. java多线程 同一资源_同一资源多线程并发访问时的完整性
  8. c#物联网_「物联网架构」Apache-Kafka:物联网数据平台的基石
  9. Just Say It!——DNN在语音识别系统中的应用
  10. Python的中文处理