这是控制台的报错信息 ### The error may involve com.vip.mapper.boss.BossnavattrMapper.createNavAttr_SyncForBatch-Inline
### The error occurred while setting parameters
### SQL: INSERT INTO BossNavAttr_SYNC(ATTRID,NAVID,ATTRALTNAME,ATTRPROPERTY,PARENTATTRID,ORDERFLAG,FULLPATH,FULLNAME,PARENTOPTIONID,MAPID,REDOPTION,ATTRNOTE) select ATTRID,NAVID,ATTRALTNAME,ATTRPROPERTY,PARENTATTRID,ORDERFLAG,FULLPATH,FULLNAME,PARENTOPTIONID,MAPID,REDOPTION,ATTRNOTE from BossNavAttr WHERE MAPID = ? and navid in (249263)
### Cause: java.sql.SQLException: ORA-00933: SQL 命令未正确结束
======================================
完整的语句:
INSERT INTO BossNavAttr_SYNC(ATTRID,NAVID,ATTRALTNAME,ATTRPROPERTY,PARENTATTRID,ORDERFLAG,FULLPATH,FULLNAME,PARENTOPTIONID,MAPID,REDOPTION,ATTRNOTE)
select ATTRID,NAVID,ATTRALTNAME,ATTRPROPERTY,PARENTATTRID,ORDERFLAG,FULLPATH,FULLNAME,PARENTOPTIONID,MAPID,REDOPTION,ATTRNOTE
from BossNavAttr WHERE MAPID = -1 and navid in (249178)
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
这是什么:
and ${srcString}
这是什么:
and ${srcString}
INSERTINTOBossNavAttr_SYNC(ATTRID,NAVID,ATTRALTNAME,ATTRPROPERTY,PARENTATTRID,ORDERFLAG,FULLPATH,FULLNAME,PARENTOPTIONID,MAPID,REDOPTION,ATTRNOTE)selectATTRID,NAVID,ATTRALTNAME,ATTRPROPERTY,PARENTATTRID,ORDERFLAG,FULLPATH,FULLNAME,PARENTOPTIONID,MAPID,REDOPTION,ATTRNOTEfromBossNavAttrWHEREMAPID=?andnavidin(249263)这句话本身应该是没有问题的,你看看?里面的变量是什么吧 回复 @StormFour:。。。这是mybatis的xml内。。回复 @sxgkwei:和你说的sql对应不上你红框框住的位置有什么错?写法有问题。
直接嵌入SQL语句类的,应该在where后面第一个位置写,这样可以保证没有此SQL时,where标签会自动格式化掉where后的第一个and关键字。此sql使用者在不知情情况下,可能在条件前面加一个and关键词,此时也正确;如果不加也正确;但如果此嵌入式SQL在其它位置,就要求调用者对XML配置有所了解,知道自己加入的条件是否前面已经配置了and关键字,否则极有可能造成and关键字多余或不足的错误。此时,总体如果必须保证mapid的话,倒是不用再用标签包裹起来,总的,where部分应该这么些:
<where>
<iftest="srcString!=null">
${srcString}
</if>
andmapid=#{mapid}
</where>