开发者社区> 问答> 正文

Mybatis中多个selectKey的使用?报错

<insert id="addDBtask" parameterType="task" keyProperty="id"  useGeneratedKeys="true">
       <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>

      insert into task(taskid,taskno,taskmode,topic,contents,endtime,price,mobile,memberid,addtime,status)
             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"。

展开
收起
爱吃鱼的程序员 2020-06-12 10:49:45 1979 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    楼主可以给出所使用mybatis的版本,

    在版本3.2.7中 

    同一个insert只能有一个 SelectKeyGenerator,

    selectKey标签中要有 keyProperty属性,

    insert中含有  selectKey后 , useGeneratedKeys="true",没什么用了


    我的回答可能有问题,

    楼主可以自己去阅读 mybatis源码,找到答案


    回复 @此生:是的我用的是MyBatis3.2.2的版本,就是说insert语句中不能有多个selectkey标签,必须额外处理?
    2020-06-12 10:50:03
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Java Spring Boot开发实战系列课程【第6讲】:Spring Boot 2.0实战MyBatis与优化(Java面试题) 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载