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

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

1

3个回答

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

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

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

1

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

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
使用freemarker创建动态SQL
使用freemarker创建动态SQL       使用Spring的JdbcTempl时为了让SQL文便于管理,一般采用的将SQL文写在静态的字符串常量中。形式如下: public class UserDao { private static final String QUERY_USER_BY_ID = &quot;select id, email, login_name from LOG...
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"就可以了
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
Mybatis动态插入数据(使用trim标签)
Mybatis动态插入数据(使用trim标签) 有时我们控制同一张表,但传入的参数不固定,操作表的字段不固定,就要用到mybatis动态插入。.xml如下: "insertMessage" parameterType="com.sf.ccsp.member.client.request.MessageReq"> insert cx_customer_message
spring-boot freemarker 数字格式不用逗号隔开配置
spring.freemarker.settings.number_format=0.##
freemarker数字输出中带有逗号问题
在action中 map.put(&quot;mynum&quot;,1200) , 在ftl模板中${mynum}取值时会显示成 1,2000,会用逗号分隔。 解决办法:${mynum?c} 。 取值时加上 ?c 即可。
freeMarker--数字类型字符串自动加逗号分隔问题解决
解决办法:    ${data?c}在数据后面加  ?c   就是转换为字符串。去掉逗号
freemarker数字逗号分割的问题
freemarker在数字回显时,如果数字比较大,会自动用“,”分割开,然而,此时传递到后台的时候,并不会按照int/long处理,而是当作String字符串处理,所有会报类型不匹配的异常,解决这个问题,只需要在application.properties文件中加入spring.freemarker.settings.number_format=#即可...
freemarker 数字输出中的逗号问题
在action中 map.put("mynum",1200) , 在ftl模板中${mynum}取值时会显示成 1,2000,会用逗号分隔。 解决办法:${mynum?c} 。 取值时加上 ?c 即可。
mybatis sql 解决逗号分割问题
&amp;lt;if test=&quot;code != null and code != ''&quot;&amp;gt;                 and  c.cd_code  in                  &amp;lt;foreach item=&quot;item&quot; index=&quot;index&quot; collection=&quot;code.split(',')&quot;  open=&quot;(&quot; separator=&quot;,&q
@Update动态更新
动态更新的sql语句书写示例 : 7.0 请求示例 : { &quot;id&quot;: 44, &quot;createBy&quot;: &quot;薛衎22&quot;, &quot;updateBy&quot;: null, &quot;updateTime&quot;: null, &quot;description&qu
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...
19、动态SQL之<set><if>标签的使用
当更新表时,只更新值不为空的字段。需要用<if>判断传入的值是否不为空,然后更新值不为空对应的字段。 <update id="updatePerson"> <!-- Set标签的使用 --> update PERSON set <if test="lastName!=null"> las
springboot整合freemarker,输出数字自动加了逗号
在用freemarker的标签输出数字的时候,发现超过3位数字,就会自动加上逗号,有两种方法可以改 方法一: ${t?c},也就是加上?c两个符号.这种方法比较呆板,遇到这种问题,每次都要加?c 方法二:        在springboot配置文件上加 spring.freemarker.setting.number_format=0.##,一劳永逸
freemarker 去掉数字中的逗号
做项目中发现了,long类型的时间,在页面上用转化成时间,结果报错了,报错的结果显示,long类型的时间中有逗号,如图: 解决办法:把这个long类型当成字符串再进行转换 $(data?c) 然后在对这个数据转化成时间,问题解决了
freemarker 数字格式不用逗号隔开配置
一、spring环境下使用freemarker * 在模板中直接加.toString()转化数字为字符串,如 ${num.toString()} * 使用?c控制,如 ${num?c} * 在freemarker配置文件freemarker.properties(在class目录下即可)加number_format=# * 在模板中直接加&amp;lt;#setting number_forma...
freemarker模板中long类型的逗号问题
背景:在用freemarker做模板的时候碰到了long类型对数字做了格式化,用逗号分隔,id的时候容易出问题解决方案:模板文件中直接tostring输出: ${num.toString()}  在模板中直接加&amp;lt;#setting number_format=&quot;#&quot;&amp;gt;使用?c控制,如 ${num?c}一次性java文件中解决通过freemarker.template.Configurat...
freemarker 数字过长去掉逗号
#模板引擎 freemarker: #关闭缓存 cache: false #获得request request-context-attribute: ctx #模板加载的位置 template-loader-path: classpath:/templates #前缀 #suffix: .htm #后缀 #p
MyBatis动态SQL set标签的使用
需求:哪一个字段不为空就插入那个字段,为空的不更新 ex: UPDATE tb1_emplyee last_name=#{lastName}, email=#{email},
hibernate实现动态SQL查询
hibernate实现动态SQL查询,通过XML配置SQL,FREEMARKER 解析,生成要执行的SQL
FreeMarker 数字 不要逗号
//在利用FreeMarker显示数字时10000没写任何样式时直接显示了1000,0而我们并不需要这样我们想直接显示1000如何做 ${"10000"?c}
老司机学习MyBatis之动态SQL使用set执行更新操作
一、前言当在 update 语句中使用if标签时,如果前面的if没有执行,则或导致逗号多余错误。使用set标签可以将动态的配置 SET 关键字,并剔除追加到条件末尾的任何不相关的逗号。使用 if+set 标签修改后,如果某项为 null 则不进行更新,而是保持数据库原值。二、案例我们先来看看不用set标签时,我们如何实现update功能操作修改EmpMapper.java类,新增一个方法/** *...
使用Rocker模板引擎解决动态拼接SQL语句的问题
相信大部分服务端程序员都和我有一样的感觉,就是在Java代码里根据条件拼接SQL语句是个技术含量很低,又很麻烦,还容易出错的问题。 最简单直观的方式当然是用String/StringBuffer/StringBuilder自己拼,但是因为Java不支持多行字符串,也不能自动解析字符串里的变量,因此写起来、改起来都很麻烦。 也有不少框架给出了自己的方案,比如MyBatis可以在Xml里根据条件来
freemarker---大数字自动加逗号分隔&更大数字认为是字符串不用逗号分隔
使用freemarker的时候遇到了一个小问题, freemarker默认会对大数字进行逗号分隔,如果我们不想让他逗号分隔,我们可以 加?c 不让他对数字用逗号分隔 但是我的业务场景是,想让他用逗号分隔,但是出现了一个问题,就是对于有些列他没有用逗号分隔: 是不是因为数字太大了,所以他直接把他作为字符串来处理了呢! 猜想是对的,确实是转为了字符串,如果想让他用逗号分隔,那么我们需要告诉f
freemarker中的split字符串分割
freemarker中的split字符串分割 1、简易说明      split分割:用来根据另外一个字符串的出现将原字符串分割成字符串序列 2、举例说明 "${name}" "${num}" 3、示例结果 "张三三" "李思思" "
freemarker中Configuration的路径设置问题
今天使用freemarker中Configuration的setClassForTemplateLoading方法遇到了加载模板目录的一个小问题。由于网上的其他论坛,博客写的有点乱,故记录一下。 Freemarker是一个模板框架,主要是为了加快染速度而产生的。它与web容器无关,只要是关于模板生成一些代码的都可以使用它完成。比如xml,Java代码的生成等。 其他类似的模板框架还有velocit...
使用Freemarker解析占位符,构造可执行的SQL语句
背景最近遇到一个需求, 框架需要执行用户给定的SQL语句,该SQL语句内包含占位符, 占位符表示的内容存在于在框架中,比如下面的sqlselect * from xxx where id = ${xxid}xxid值存在于框架中,也就是说框架需要解析用户设置的sql,将占位符用框架内的值替换。众所周知,Mybatis能够解析占位符,执行SQL语句, 但是由于sql语句由用户传入,不是写在xml或My
mybatis动态sql更新语法
1.StudentDo package cn.itcast.app05; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import org.apache.ibatis.session.SqlSession; import cn.itcast.util.MybatisUtil; p
iBATIS update 特殊字符处理
在近期项目中发现有部分用户投诉文件名中带有  单引号、反斜杠及双引号(‘ 、 “)的文件无法上传或者文件名中少了反斜杠或双引号,经查实后发现后台执行SQL异常: org.springframework.jdbc.BadSqlGrammarException: SqlMapClient operation; bad SQL grammar []; nested exception is com
MyBatis注解中的动态SQL
Employee.javapackage domain; import java.io.Serializable; /** * CREATE TABLE tb_employee ( ID INT(11) PRIMARY KEY AUTO_INCREMENT, loginname VARCHAR(18), PASSWORD VARCHAR(18), NAME VARCHAR(18) DE...
mybatis的动态sql之if test用法
参数为String,if test读取该参数代码:<select id="getMaxDepartId" parameterType="java.lang.String" resultType="java.lang.String"> SELECT MAX(DEPART_ID) FROM T_P_DEPART <where> <if test=
mysql存储过程接收动态sql返回值
一、今天需要用到mysql存储过程接受动态sql的返回值,特此做以下记录 二、具体如下 -- BS追加公能字段 获取类型和公能分组ID declare vPartName,vType,vSql,vId varchar(100); declare vPartGroupId int; set vPartName = params-&amp;gt;&amp;gt;'$.partName'; set vSql = con...
如何在mybatis注解开发中使用动态SQL
1、使用脚本sql       脚本sql和xml配置基本类似,只需在外层包裹上&amp;lt;script&amp;gt;&amp;lt;/script&amp;gt;即可       例如: public interface UserMapper { @Select(&quot;&amp;lt;script&amp;gt;select * from user &amp;lt;where&amp;gt;&amp;lt;if test='username != ...
PB调用动态SQL语句
转截自 http://blog.csdn.net/lijianhe043/article/details/7171323 原文解释的比较详细 本文只做以后用到的时候方便查询 第一种: 这种类型的动态SQL语句经常用来执行DDL或者数据库专用的其他SQL语句。语法格式是: EXECUTE IMMEDIATE SQLStatement {USING TransactionObj
freemarker 将String 按照指定字符分割并生成 list 循环
需求是这样的:
Mybatis 3 注解方式创建动态SQL
嘿嘿嘿 @Select({ &quot;&amp;lt;script&amp;gt;&quot;, &quot;SELECT * FROM OA_MPJ WHERE 1=1 &quot;, &quot;&amp;lt;if test=\&quot;xm != null\&quot;&amp;gt;AND xm like #{xm}&amp;lt;/if&amp;gt;&quot;, &quot;&am
动态sql可能出现的问题
解决的方案sql索引的建立的问题
文章热词 双目视觉问题 特征点问题 相机标定问题 最优化问题 em算法中的隐变量问题
相关热词 c++ 关于unique的问题 c++ update c++中逗号执行 关于python培训班 关于区块链的课程