验证码: 看不清楚,换一张 查询 注册会员,免验证
  • {{ basic.site_slogan }}
  • 打开微信扫一扫,
    您还可以在这里找到我们哟

    关注我们

mybatis中返回主键一直为1的问题怎么解决

阅读:672 来源:乙速云 作者:代码code

mybatis中返回主键一直为1的问题怎么解决

      mybatis 返回主键一直为1

      1是返回的插入成功的行数,这没有错

      而自增id则是直接映射到对象里,直接输出 xxx.getId()即可

      举例:

      在xml中:

      
      ......

      java中代码:

      int primary = userService.addUser(user);
      int id = user.getId();

      上面的id就是返回的主键

      mybatis 自增主键 主键回传,返回id为null 踩坑

       Mybatis主键回传流程

      一、插入的实体对象中包含和数据库字段唯一对应的属性

      二、xml中配置(两种方式)

      方式一:

      mybatis中返回主键一直为1的问题怎么解决

      这种方式比较简单,就是在插入节点上添加 useGeneratedKeys 属性,同时设置接收回传主键的属性。

      6配置完成后,我们执行一个插入操作,插入时传入一个对象,插入完成后,这个对象的 id 就会被自动赋值,值就是刚刚插入成功的id。

      方式二:

      mybatis中返回主键一直为1的问题怎么解决

      这种方式是在 insert 节点中添加 selectKey 来实现主键回填,实际上这种方式的功能更加丰富,因为 selectKey 节点中的 SQL 我们既可以在插入之前执行,也可以在插入之后执行(通过设置节点的 Order 属性为 AFTER 或者 BEFORE 可以实现),具体什么时候执行,还是要看具体的需求,如果是做主键回填,我们当然需要在插入 SQL 执行之后执行 selectKey 节点中的 SQL。

      踩坑

      void insertBook(InsertBook insertBook);//主键可以回填
      void insertBook(@Param("ib") InsertBook insertBook);//主键不会回填

      千万不要使用@Param注解!!!主键不会回填!!!

    分享到:
    *特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: hlamps#outlook.com (#换成@)。
    相关文章
    {{ v.title }}
    {{ v.description||(cleanHtml(v.content)).substr(0,100)+'···' }}
    你可能感兴趣
    推荐阅读 更多>