Mybatis在做INSERT操作的时候如何返回主键?

<insert id="register" parameterType="com.graduation.entity.SellerEntity" useGeneratedKeys="true" keyProperty="id">
        INSERT INTO seller (seller_name,seller_address,create_time,modify_time,`password`) VALUES(#{name},#{address},#{create_time},#{modify_time},#{password})
</insert>

我在网上找到的资料说 添加这两个属性就可以了:useGeneratedKeys="true" keyProperty="id"

但总是报这样的错:

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 [password, param5, address, create_time, modify_time, name, param3, param4, param1, param2]

阅读 3.6k
评论
    7 个回答

    你的SellerEntity中的属性名是不是不是id,而是 sellerId这样的?
    要和model中保持一致的属性名啊,插入成功后你的SellerEntity对象中的主键会被赋值为数据库中的id值

      • 3
      • 新人请关照

      SellerEntity 确定有id属性吗

        SellerEntity 代码长什么样子,放一下,估计是没对应上

          • 3
          • 新人请关照

          keyPropertry=id,数据库对应实体类的中的属性名。
          还有一个keyCoiumn=id,数据库中主键的字段名。
          这里id需要对应上

            • 4
            • 新人请关照

            可以使用通用Mapper 在Model 的主键上加 @Id

            @GeneratedValue(strategy = GenerationType.IDENTITY)

              为什么不用mybatis的代码生成工具(generatoryConfig.xml),这里面会给你自动生成 insertSelective这个方法,需要新增时返回主键id,只需要在配置generatoryConfig.xml这个里面的表时加上sqlStatement="SELECT @@IDENTITY" ,就会自己给你生成,有工具用工具可以加快自己的开发速度
              clipboard.png
              而且你这个id要和你实体中的id对应

                报错说的很明白了,应该是你的id跟实体里的id没对应上

                  撰写回答

                  登录后参与交流、获取后续更新提醒

                  相似问题
                  推荐文章