mybatis在设置自动返回主键,就报错org.apache.ibatis.binding.BindingException: Parameter 'id' not found

开心快乐每一天 发布于 2016/06/07 16:02
阅读 15K+
收藏 0

大神们,请帮忙看看。添加了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当做参数?

加载中
0
阿信sxq
阿信sxq

配置有错误,

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



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

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

insert into resource (name,description,file,rtid,ispublic,status) values(#{name},#{description},#{file},#{rtid},#{ispublic},#{status}) 

<selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="id"> 
SELECT LAST_INSERT_ID() 
</selectKey> 

</insert> 

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

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

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

伪coder
这个答案解决我的问题
0
啵啵君--火星IT男
啵啵君--火星IT男

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

返回顶部
顶部