Mybatis动态sql的动态表名问题
时间:2019-09-20
本文章向大家介绍Mybatis动态sql的动态表名问题,主要包括Mybatis动态sql的动态表名问题使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
<update id="obsoleteWeigh">
update #{tableName} set iobsolete = 1,update_date = #{date} where reg_id in
<foreach item="id" collection="ids" separator="," open="(" close=")" index="">
#{id}
</foreach>
</update>
一开始这样写的sql,sql语句的表名会有引号,导致sql报错,需要想办法去掉#{tableName}的引号。查了半天发现mybatis的update标签有个属性:statementType。
statementType的值设为STATEMENT可以满足我们的需求,把表名的引号去掉,但是同时也去掉了参数的引号,这样还是有问题。对Statement和PrepareStatement的理解具体可以参阅:http://wenku.baidu.com/view/ccb9da020740be1e650e9abc.html
把statementType的值设为STATEMENT后,我们需要注意sql里的参数如 #{tableName}、#{date} 都需要改为${},不然无法把参数拼接上去。
做完这些工作之后,我们需要注意的是,我们传的参数值(除去表名、表字段)的引号也被去掉了,我们需要在给参数加上引号,此时我们可以使用转义符:' 是单引号,
值得注意的是:
(1)转义序列字符之间不能有空格;
(2) 转义序列必须以”;”结束;
(3) 单独出现的”&”不会被认为是转义的开始;
(4) 区分大小写。
最终一个正确的表名动态的sql为:
<update id="obsoleteWeigh" statementType="STATEMENT">
update ${tableName} set iobsolete = 1,update_date = '${date}' where reg_id in
<foreach item="id" collection="ids" separator="," open="(" close=")" index="">
'${id}'
</foreach>
</update>
原文地址:https://www.cnblogs.com/lg193/p/11557032.html
- 联系生活来简化sql(r3笔记第43天)
- [笔记]使用Python一步一步地来进行数据分析
- 使用 R 语言从拉勾网看数据挖掘岗位现状
- 使用strace分析exp的奇怪问题(r3笔记第41天)
- Python文本挖掘:知乎网友如何评价《人民的名义》
- 怎样做中文文本的情感分析?
- 由一条日志警告所做的调优分析(r3笔记第40天)
- 生产环境sql语句调优实战第十篇(r3笔记第39天)
- memory_target设置不当导致数据库无法启动的问题(r3笔记第38天)
- python利用结巴分词做新闻地图
- 数据库静默安装总结(r3笔记第58天)
- 用TensorFlow实现文本分析模型,做个聊天机器人
- 深度学习:用tensorflow建立线性回归模型
- 用python基于2015-2016年的NBA常规赛及季后赛的统计数据分析
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- [白话解析]用水浒传为例学习最大熵马尔科夫模型
- [白话解析] 用水浒传为例学习条件随机场
- 03.Android崩溃Crash库之ExceptionHandler分析
- 04.Android崩溃Crash库之Loop拦截崩溃和ANR
- [源码分析] 从实例和源码入手看 Flink 之广播 Broadcast
- [源码分析] 从FlatMap用法到Flink的内部实现
- [白话解析] 通俗解析集成学习之bagging,boosting & 随机森林
- [源码分析] 带你梳理 Flink SQL / Table API内部执行流程
- 从"UDF不应有状态" 切入来剖析Flink SQL代码生成
- [源码分析]从"UDF不应有状态" 切入来剖析Flink SQL代码生成 (修订版)
- [白话解析] 通俗解析集成学习之GBDT
- [源码解析]为什么mapPartition比map更高效
- [记录点滴]Redis实现简单消息队列
- [源码解析] Flink的groupBy和reduce究竟做了什么
- [记录点滴]在Ionic和Android中上传Blob图片