2 qq 33578832 qq_33578832 于 2018.05.16 19:21 提问

关于freeMarker创建动态sql中update的多逗号的问题 5C

图片说明
如上图,使用freeMarker创建动态sql的update方法时候,如果最后一个updater创建者不入参的话,最后上一个参数的后面的逗号会打印到sql语句上报错,为什么最后一个参数可以识别出来是最后一个参数了可以自动将逗号去掉,而最后一个不入参的话,倒数第二个(phaseData)后的逗号不能识别去掉呢?求解如何解决该类问题!

3个回答

metaldong
metaldong   2018.05.16 21:19

在Mybatis里面的话需要在if外面加个 xx=xx, yy=yy, 这样加了逗号就不会有问题。

metaldong
metaldong 回复qq_33578832: set标记本身就应该会去掉最后一个逗号的
5 个月之前 回复
qq_33578832
qq_33578832 这个不是条件喔,如果实在Where中这样加肯定没问题,set下加这样没有的字段,会报错吧
5 个月之前 回复
metaldong
metaldong if外面加SET标签
5 个月之前 回复
qq_19972047
qq_19972047   2018.05.17 22:15

update svms_video_task set
PHASE = :phase
<#if result??>
,RESULT =:result

<#if trace??>
,TRACE =:trace

<#if useTime??>
,USETIME =:useTime

<#if phaseData??>
,PHASE_DATA =:phaseData

<#if updater??>
,UPDATER =:updater

WHERE CHANNEL_ID = channelId AND PHASE = :phase

qq_36037795
qq_36037795   2018.05.17 20:11

把set改成标签 ,在里面放If , 它会自动删除多余的逗号

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
MyBatis解决Update动态SQL逗号的问题
最做项目遇到以下情况,MyBatis中需要动态拼接Update,由于之前忙着赶项目,就直接照着下面的这样写,结果发现系统出现了异常,原来这样写如果id=null就会出错UPDATE TABLE SET id= #{id,jdbcType=INTEGER} ,name = #{name
关于freemarker 数字自动加逗号和判断非空
int i = 100000;   ${i}  10,000; ${i?c}  10000; <#if newVar?has_content>       当 newVar 为null 或者 size 为0 的时候都将返回为 false.
公司中Java使用Freemarker动态脚本查询Sql的坑
1.<#if specedParam><#else>不可省略#--查询10条免费的数字教材--> <#switch switchName> <#case "QUERY_FREE"> <#if specedParam> 这里写请求参数 <#else>
FreeMarker 数字输出中的逗号问题
Long i=100000000l; Map model=new Map(); model.put("t",i); 在freemarker中显示为100,000,000 想按原样输出时${t} 显示为100,000,000 ${t?c} 显示为100000000 如果不加?c 默认情况下freemarker会将数字用逗号分隔 如何去掉","逗号呢.,加上"?c"就可以了
freemarker 数字输出中的逗号问题
在action中 map.put("mynum",1200) , 在ftl模板中${mynum}取值时会显示成 1,2000,会用逗号分隔。 解决办法:${mynum?c} 。 取值时加上 ?c 即可。
MyBatis动态SQL之 set 和 trim标记的使用
和之前的where一样,set和trim也是智能标记  在之前的user.xml中添加 ? 1 2 3 4 5 6 7 8 update id="updateUserSet" parameterType="User">         update User         s
19、动态SQL之<set><if>标签的使用
当更新表时,只更新值不为空的字段。需要用<if>判断传入的值是否不为空,然后更新值不为空对应的字段。 <update id="updatePerson"> <!-- Set标签的使用 --> update PERSON set <if test="lastName!=null"> las
freemarker数字逗号分割的问题
freemarker在数字回显时,如果数字比较大,会自动用“,”分割开,然而,此时传递到后台的时候,并不会按照int/long处理,而是当作String字符串处理,所有会报类型不匹配的异常,解决这个问题,只需要在application.properties文件中加入spring.freemarker.settings.number_format=#即可...
Mybatis动态SQL之set标签
同where标签功能类似,where用去去除第一个条件中出现的and前缀,那么set标签就是去除最后一个更新字段语句中出现的,[逗号]后缀。 XML映射文件中update部分: &amp;lt;!--set修改标签--&amp;gt; &amp;lt;update id=&quot;updateUseSetTag&quot; parameterType=&quot;com.heiketu.testpackage.pojo.Product&quot;&amp;g...
freemarker模板中long类型的逗号问题
背景:在用freemarker做模板的时候碰到了long类型对数字做了格式化,用逗号分隔,id的时候容易出问题解决方案:模板文件中直接tostring输出: ${num.toString()}  在模板中直接加&amp;lt;#setting number_format=&quot;#&quot;&amp;gt;使用?c控制,如 ${num?c}一次性java文件中解决通过freemarker.template.Configurat...