oracle动态update语句

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

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

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

update TableName


XX = #{xx,jdbcType='varchar'},


XX = #{xx,jdbcType='varchar'},


XX = #{xx,jdbcType='varchar'},

4、解释一下

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

 

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

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

6、查询

SELECT    XX,  XX  
     FROM TableName 
     WHERE  1=1
      
     ADN XX LIKE CONCAT(CONCAT('%', #{XX, 
     jdbcType=varchar}),'%')  --模糊查询
      
      
        AND XX = #{XX, jdbcType=INTEGER}  
       
   

7、增加

insert into TableName
(

        
            xx,
        
        
            xx,
        
      
)
values
(

        
            #{xx},
        
        
            #{xx},
        
      
)

8、删除

delete from TableName where xx in
 
        
            #{xx}
        

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

你可能感兴趣的:(数据库)