removeFirstPrepend失效解决方法
2014-03-12 14:44
134 查看
刚加入开发行业,知道的东西少,可能表达上会有欠缺,同学们不要拍砖要相互勉励啊。
ibatis很好用,写sql语句时还可以用isNotNull,isEqual,isEmpty等条件标签根据property字段动态生成。如下
问题出现了,如果 headImg isNull,status isNotNull,就会生成错误的sql语句,多了一个","
还好ibatis有dynamic,removeFirstPrepend标签。从字面来看dynamic是指动态,removeFirstPrepend是指移除第一个prepend。那么把代码改成如下:
其实这样的代码removeFirstPrepend并没有起效。
解决办法是:给dynamic 加prepend属性,值是“ ”,注意双引号之间有个空格。所以正确的代码如下:
如果 headImg isNull,status isNotNull,产生的sql语句是
我的理解是在没有给dynamic标签加prpend时,多余的逗号和前面代码粘牢了以至于removeFirstPrepend不认识它。
有没有其他其他解决方法,我没有查到。网上关于removeFirstPrepend的文章真心不多。以上解决方法来自:https://issues.apache.org/jira/browse/IBATIS-430
ibatis很好用,写sql语句时还可以用isNotNull,isEqual,isEmpty等条件标签根据property字段动态生成。如下
<update id="update" parameterClass="MessageBoard"> update message_board set <isNotNull property="headImg" >head_img=#headImg#</isNotNull> <isNotNull prepend="," property="status">status=#status#</isNotNull> where id=#id# and merchant_id=#merchantId# </update>
问题出现了,如果 headImg isNull,status isNotNull,就会生成错误的sql语句,多了一个","
update message_boardset set,status=? where id=? and merchant_id=?
还好ibatis有dynamic,removeFirstPrepend标签。从字面来看dynamic是指动态,removeFirstPrepend是指移除第一个prepend。那么把代码改成如下:
<update id="update" parameterClass="MessageBoard"> update message_board set <dynamic> <isNotNull property="headImg" >head_img=#headImg#</isNotNull> <isNotNull prepend="," property="status" removeFirstPrepend="true">status=#status#</isNotNull> </dynamic> where id=#id# and merchant_id=#merchantId# </update>
其实这样的代码removeFirstPrepend并没有起效。
解决办法是:给dynamic 加prepend属性,值是“ ”,注意双引号之间有个空格。所以正确的代码如下:
<update id="update" parameterClass="MessageBoard"> update message_board set <dynamic prepend=" "> <isNotNull property="headImg" >head_img=#headImg#</isNotNull> <isNotNull prepend="," property="status" removeFirstPrepend="true">status=#status#</isNotNull> </dynamic> where id=#id# and merchant_id=#merchantId# </update>
如果 headImg isNull,status isNotNull,产生的sql语句是
update message_board set status=? where id=? and merchant_id=?
我的理解是在没有给dynamic标签加prpend时,多余的逗号和前面代码粘牢了以至于removeFirstPrepend不认识它。
有没有其他其他解决方法,我没有查到。网上关于removeFirstPrepend的文章真心不多。以上解决方法来自:https://issues.apache.org/jira/browse/IBATIS-430
相关文章推荐
- ibatis removeFirstPrepend失效解决方法
- ie浏览器下删除父元素的父元素(祖父元素)-----remove()方法在ie下失效的解决方法
- 启用七牛云存储后 WordPress Ajax 评论失效解决方法
- 在UpdatePanel内jquery easyui效果失效的解决方法
- iOS开发UILabel篇:iOS 8 下中划线失效的解决方法
- 2016-09-01 Wordpress Google字体加载缓慢 USESO字体库代理失效解决方法
- [转]Ubuntu系统Terminal、Eclipse键盘失效,无法输入字符的解决方法
- 关于ajax请求后js绑定事件失效问题解决方法
- oracle 索引失效原因及解决方法
- Myeclipse中JSP页面快捷键注释失效解决方法
- MyEclipse 代码自动提示功能失效 提示No Default Proposals 或 no completions available 的解决方法
- myeclipse ctrl +D 删除当前行失效解决方法
- vue-cli项目修改文件热重载失效的解决方法
- 当Oracle9i的OPTIMIZER_MODE = FIRST_ROWS时EXP过慢的解决方法
- 两种方法解决Turn your Session into FlushMode.COMMIT/AUTO or remove 'readOnly' marker
- IE下 window.location.href 跳转失效的解决方法
- ie7下z-index失效问题解决方法
- android 4.4 JS 和 java 交互失效的解决方法
- 在mongoose中使用$match对id失效的解决方法
- Ubuntu下使用Java调用IKAnalyzer中文分词程序失效的解决方法