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标记本身就应该会去掉最后一个逗号的
3 个月之前 回复
qq_33578832
qq_33578832 这个不是条件喔,如果实在Where中这样加肯定没问题,set下加这样没有的字段,会报错吧
3 个月之前 回复
metaldong
metaldong if外面加SET标签
3 个月之前 回复
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币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
hibernate整合freemarker构建动态SQL
最近参与一个项目,时间紧,任务重,整个系统采用前后分离的方式,因此在后端开发上面需要尽量避免人天的消耗,因此,需要架构一个轻量级,高效率,通用性强的后端程序 。 因此,我选择了全自动的ORM工具,Hibernate。Hibernate 的优势我想就不用我多说了,轻巧好用,代码便于理解维护等等。而且,开发一个通用的DAO层就可以直接使用增删改,查询方面可以利用反射写个通用字段过滤方法。这样,绝大部分
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.
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"就可以了
mybatis系列(二)--mybatis的动态sql
1
freemarker 数字输出中的逗号问题
在action中 map.put("mynum",1200) , 在ftl模板中${mynum}取值时会显示成 1,2000,会用逗号分隔。 解决办法:${mynum?c} 。 取值时加上 ?c 即可。
freemarker数字逗号分割的问题
freemarker在数字回显时,如果数字比较大,会自动用“,”分割开,然而,此时传递到后台的时候,并不会按照int/long处理,而是当作String字符串处理,所有会报类型不匹配的异常,解决这个问题,只需要在application.properties文件中加入spring.freemarker.settings.number_format=#即可...
Mybatis 转义字符,动态sql , 批量插入,批量更新
MyBatis Sql语句中的转义字符 1、在xml的sql语句中,不能直接用大于号、小于号要用转义字符 如果用小于号会报错误如下: org.apache.ibatis.builder.BuilderException: Error creating document instance.  Cause: org.xml.sax.SAXParseException: The
freemarker 去掉数字中的逗号
做项目中发现了,long类型的时间,在页面上用转化成时间,结果报错了,报错的结果显示,long类型的时间中有逗号,如图: 解决办法:把这个long类型当成字符串再进行转换 $(data?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