Mybatis中多个selectKey的使用
<insert id="addDBtask" parameterType="task" keyProperty="id" useGeneratedKeys="true">
<selectKey keyProperty="id" order="AFTER" resultType="int">
SELECT LAST_INSERT_ID() AS ID
values(#{taskid},#{taskno},#{taskmode},#{title},#{contents},#{endtime},#{price},#{mobile},#{memberid},#{addtime},#{status})
<selectKey keyProperty="id" order="AFTER" resultType="int">
SELECT LAST_INSERT_ID() AS ID
</selectKey>
<selectKey keyColumn="taskno" order="BEFORE" resultType="String">
select max(taskno+1) from task
</selectKey>
values(#{taskid},#{taskno},#{taskmode},#{title},#{contents},#{endtime},#{price},#{mobile},#{memberid},#{addtime},#{status})
</insert>
为什么会报错呢?望大神指教(Id为主键,task是任务编号,但数据库没设递增,只能自己处理。)
org.xml.sax.SAXParseException; lineNumber: 10; columnNumber: 73; 必须为元素类型 "selectKey" 声明属性 "keyColumn"。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我用的是MyBatis 3.2.2的版本,就是说insert语句中不能有多个selectkey标签,必须额外处理?
回复
是的
楼主可以给出所使用mybatis的版本,
在版本3.2.7中
同一个insert只能有一个SelectKeyGenerator,
selectKey 标签中要有keyProperty属性 ,
insert中含有 selectKey 后 ,useGeneratedKeys="true",没什么用了
我的回答可能有问题,
楼主可以自己去阅读mybatis源码,找到答案