1、今天公司项目提交更新表单出错,这个bug交给了我。

2、OK,debugger一下,发现提交的时候后台打印出错,提示大概就是这样  SQLException '17004'  其实很简单,这种错误一般都是说某一列传进来的值为null,因此报错,所以追踪下去,发现是update语句没有做动态传值处理,也就是说需要写成动态sql语句

3、那么Mybatis的动态sql语句是怎么样的呢?

update TableName
<trim prefix="set" suffixOverrides=",">
<if test=" XX!=null and XX!='' ">
XX = #{xx,jdbcType='varchar'},
</if>
<if test=" XX!=null and XX!='' ">
XX = #{xx,jdbcType='varchar'},
</if>
<if test=" XX!=null and XX!='' ">
XX = #{xx,jdbcType='varchar'},
</if>
<trim>

4、解释一下<trim>

官方文档大概意思:<trim>节点标签:trim主要功能是可以在Trim包含的内容前加上某些前缀(prefix),也可以在Trim包含的内容之后加上某些后缀(suffix)还可以把Trim包含内容的首部的某些内容忽略掉(prefixOverrides) ,也可以把Trim包含的内容的尾部的某些内容忽略掉(suffixOverrides)

<trim prefix="set" suffixOverrides=",">

所以这行代码的意思是:在前面加上set,去掉最后的逗号。

5、既然都说到update动态sql了那么顺便回顾一下其他动态sql的写法。

6、查询

SELECT    XX,  XX  FROM TableName WHERE  1=1<if test="XX !=null and XX!='' ">  ADN XX LIKE CONCAT(CONCAT('%', #{XX, jdbcType=varchar}),'%')  --模糊查询</if>  <if test="XX != null and XX != '' ">  AND XX = #{XX, jdbcType=INTEGER}  </if>
</if>   

7、增加

insert into TableName
(
<trim suffixOverrides=","><if test="xx!=null and xx!=''">xx,</if><if test="xx!=null and xx!=''">xx,</if></trim>
)
values
(
<trim suffixOverrides=","><if test="xx!=null and xx!=''">#{xx},</if><if xx="name!=null and xx!=''">#{xx},</if></trim>
)

8、删除

delete from TableName where xx in<!-- foreach用于迭代数组元素 open表示开始符号close表示结束符号seprator表示元素间的分割符items表示迭代的数组--><foreach collection="array" open="(" close=")" separator="," item="xx">#{xx}</foreach>

9、有问题欢迎指出,谢谢

oracle动态update语句相关推荐

  1. Oracle 动态SQL语句

    Oracle 动态SQL语句     EXECUTE IMMEDIATE代替了以前Oracle8i中DBMS_SQLpackage包.  它解析并马上执行动态的SQL语句或非运行时创建的PL/SQL块 ...

  2. oracle 动态条件查询语句,教您Oracle动态查询语句的用法

    Oracle动态查询语句是一类特殊的查询语句,下面就为您详细介绍Oracle动态查询语句的语法,如果您对Oracle动态查询方面感兴趣的话,不妨一看. 1. 当使用EXECUTE IMMEDIATE语 ...

  3. oracle执行update语句卡死

    oracle执行update语句卡死 问题:当在plsql上执行update语句时,一直在显示正在执行中,很久不出结果.执行select语句或者是其他表的update语句时,可以正常执行 原因:只有u ...

  4. oracle怎么优化动态sql语句,oracle动态sql语句处理

    动态SQL语句处理:根据要处理的sql语句的作用不同,可以使用三种不同类型的动态sql方法:使用execute immediate语句可以处理包括ddl(create.alter和drop).DCL( ...

  5. Oracle执行UPDATE语句的步骤

    执行UPDATE语句的步骤: 如果数据和回滚数据不在数据库高速缓冲区中,则Oracle服务器进程将把它们从数据文件中读到数据库高速缓冲区中. Oracle服务器进程在要修改的数据行上加锁(行一级的锁, ...

  6. Oracle数据库update语句用法,多表批量更新对应的字段值

    日常工作经常会遇到参照某个表格,更新主表对应字段的值 一般可以用excel的VLOOKup函数进行查找匹配,但是这种方法需要将表从数据库中导出,更新完了之后再导回数据库中. 我们用update语句可以 ...

  7. Oracle 批量update语句,Oracle之update语句优化研究 批量更新

    update (select YP.DEALLOCATE_BUDGET_, YP.REMAIN_BUDGET_ from MP_YEAR_PLAN YP where YP.YEAR_PLAN_ID_ ...

  8. mysql动态update语句,mysql – SQL:具有动态列值赋值的update语句

    想象一下以下sql查询: UPDATE MYTABLE SET COL2 = (SELECT COL2 + 1 FROM (SELECT MAX(COL2) FROM MYTABLE) AS X) W ...

  9. oracle 更新update语句

    update 表名 set 列名=新值 where条件; select语句 for update;

最新文章

  1. 编程基础知识科普:C#中的问号运算符
  2. (iOS-基本知识)Category VS Extension 原理详解
  3. ClientDataSet建立索引和排序
  4. 开源串口调试助手java_(串口通信编程) 开源串口调试助手Common (Com Monitor)
  5. php yii框架连接数据库,【PHP开发框架】yii框架怎样衔接数据库
  6. 萨纳斯耿文强:光伏管控智能化亟待统一标准
  7. 居民小区变配电电力监控系统-安科瑞苏月婷
  8. 智方8000系文具进销存管理系统 华军软件网
  9. yocto linux 内核源码,利用Bitbake、Poky、Yocto、OpenEmbedded编译生成车规AGL Linux
  10. 服务器系统部署方案,系统部署方案.doc
  11. hackerrank初级篇之Mini-Max Sum
  12. Fata erro:Kinetis (connect):Timeout while halting CPU.CPU dones not stop. Sesion aborted!
  13. 【效率特工队】Excel转手机通讯录格式,如何将一个Excel批量拆分生成多个vcf,怎么快速的加微信好友,优化一下方法效率可能更高,解决微信通讯录手机联系人好友不显示的问题
  14. 广东移动至2020年数据中心机柜规模将近10万架
  15. 【JOURNAL】怎么计算4万亿
  16. mt4下载正规的渠道才安全
  17. 攻防世界——supersqli
  18. 应用在开关模式电源中的光耦合器
  19. rabbitMQ快速开始整合springboot模板
  20. 计算机水平cet2是什么等级,英语水平CET2是什么意思

热门文章

  1. Android SDK介绍
  2. 服务器重装系统进入pe找不到硬盘,U盘装系统进入PE无法找到硬盘怎么办?
  3. 写 字 楼 通 信系统工程技术售后维护
  4. List的remove()方法避坑
  5. mybatis查询更新
  6. Linux_进程控制(创建进程,等待进程,进程终止)
  7. latex怎样让题号顶格_latex proof顶格
  8. Java实例教程(上)
  9. C语言实现strcpy和strcmp
  10. 堆内存(heap)和栈内存(stack)区别