@SelectKey在springboot整合Mybatis时总是返回1

问题:

我们想在插入一条数据后同时能够返回这条数据在表中的id,Mybatis提供了@SelectKey注解。
t_user 为数据表,主键自增
SelectKey的四个属性:

  • keyColumn:插入数据以后,要返回的内容在数据表t_user中对应的字段名称
  • keyProperty:指定返回的id映射到bean中的哪个属性(这里是user中的id),
  • before=false:表示这个selectKey语句的执行是在insert语句之后
  • resultType:selectKey语句返回值的类型,我这里是long类型

但是返回的结果一直是1,分析这个1可能是insert(user)执行成功返回1,失败返回0的结果,而不是我们想要的id。
userDao.java

    @Insert("insert into t_user(name)values(#{user.name})")
    @SelectKey(keyColumn = "id",keyProperty = "user.id",before = false,resultType = int.class, statement="select last_insert_id()")
    int insertUser(@Param("user") User user);

调用insert:

	User user = new User();
    user.setName("AAA");
    userDao.insertUser(user);
    return userDao.insertUser(user);

解决办法:

我插入数据时插入的是一个bean,这个bean的类型就是上面我们提到的user,插入前它的id是空的;
当我们执行插入后,返回插入的结果,插入成功返回1,插入失败返回0,这就是为什么结果一直为1了。返回的id其实已经映射到了我们插入的bean中,即id值已经返回到user的id属性里了我们只要通过它的get方法就可以得到了。代码如下:

	User user = new User();
    user.setName("AAA");
    //插入
    userDao.insertUser(user);
    //返回id
    return user.getId();
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

XIE_QAID

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值