开发者社区> 问答> 正文

mybatis在设置自动返回主键,就报错org.apache.ibatis.bi?报错

大神们,请帮忙看看。添加了useGeneratedKeys="true" keyProperty="id"到这个SQL中,如下:

<insert id="add" parameterType="Teacher" useGeneratedKeys="true" keyProperty="id">

dao层方法中使用注解add(@Param(“teacher”) Teacher teacher),在调用时,就报错。如下:

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.executor.ExecutorException: Error getting generated key or setting result to parameter object. Cause: org.apache.ibatis.binding.BindingException: Parameter 'id' not found. Available parameters are [telecomOrder, param1]
at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:73)
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:364)
at com.sun.proxy.$Proxy17.insert(Unknown Source)

为什么会把keyProperty="id"中的id当做参数?

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

    配置有错误,

    <insertid="insert"useGeneratedKeys="true"keyProperty="id"keyColumn="cc_id"parameterType="Ccbox">



    keyProperty是实体类的属性,keyColumn是数据库表里面的列名

    回复 @阿信sxq:太赞了。sql语句增加注解的内容作为前缀,就可以了。回复 @开心快乐每一天:要么方法声明去掉注解,要么sql语句增加注解的内容作为前缀谢谢。这种方式试过了,还是报一样的错误。像是因为在dao层使用了param注解的原因。最后还是放弃了获得返回主键的方法。 insertid="insert" parameterType="cn.org.lupa.ec.model.Resource" useGeneratedKeys="true"keyProperty="id"> 

    insertintoresource(name,description,file,rtid,ispublic,status)values(#{name},#{description},#{file},#{rtid},#{ispublic},#{status}) 

    <selectKeyresultType="java.lang.Integer"order="AFTER"keyProperty="id"> 
    SELECTLAST_INSERT_ID() 
    </selectKey> 

    </insert> 

    转载自http://maosiyu.iteye.com/blog/answered_problems

    使用selectKey的话,不报错了。但是没取到返回的主键id。用框架,就别自己正各种幺蛾子,id,就对象中有,表中也有,一样的字段,保证没问题。你要用框架,又各种自由发挥的奇葩命名,自找麻烦。谢谢指点。我只是在原项目框架上写代码,并未添加新的注解等内容。

    @Param(“teacher”)时候keyProperties=" teacher.id"

    这个答案解决我的问题

    博主写得很棒,这里推荐大家一个专注于Java开发的个人博客 Queen'sBlog (黛玛Queen) ,每天更新文章,干货满满哦,不容错过,需要的点这里咯。
    http://www.marsitman.com/mybatis/mybatis-oracle-getid.html

    2020-06-09 14:05:51
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Apache Flink-实时计算正当时 立即下载
实时计算正当时-Apache Flink 理论和实战精解 立即下载
Java Spring Boot开发实战系列课程【第6讲】:Spring Boot 2.0实战MyBatis与优化(Java面试题) 立即下载

相关镜像