mybatis update失败却不报错

发布于 2022-09-04 10:28:23 字数 1375 浏览 16 评论 0

1.更新时返回值为0,影响行数为0。不知道为什么,自己尝试在数据库管理系统执行sql语句是有作用的。也不报错,求大神!
2.代码如下:
1)Mapper.xml


<update id="updateByPrimaryKeySelective" parameterType="com.lianhehui.pojo.CardOwn">
    update cardown
    <set>
      <if test="memberid != null">
        memberId = #{memberid,jdbcType=INTEGER},
      </if>
      <if test="cardid != null">
        cardId = #{cardid,jdbcType=INTEGER},
      </if>
      <if test="discount != null">
        discount = #{discount,jdbcType=REAL},
      </if>
      <if test="balance != null">
        balance = #{balance,jdbcType=REAL},
      </if>
      <if test="status != null">
        status = #{status,jdbcType=CHAR},
      </if>
    </set>
    where cardOwnId = #{cardownid,jdbcType=INTEGER}
  </update>

2)Service(Dao层就省略了)

@Override
    public int topUpToCard(CardOwn cardOwn) {
        // TODO Auto-generated method stub
        return cardOwnDao.updateByPrimaryKeySelective(cardOwn);
    }

3)Controller内

CardOwn cardOwn = new CardOwn();
cardOwn.setCardid(cardOwnId);
cardOwn.setBalance(balance+amount);
            
int success = memberService.topUpToCard(cardOwn);
if (success == 0) {
    System.out.println("充值失败");
}else {
    System.out.println("充值成功");
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

2022-09-11 10:28:24

我也很菜,或许你可以把update 返回的类型resultType 写出来

落叶缤纷 2022-09-11 10:28:24

运行的时候控制台会输出实际执行时的SQL,好好看看有没有什么问题,或者复制到DBMS执行一下

殊姿 2022-09-11 10:28:24

如果没有异常,就是更新where条件不成立,没有符合更新条件的记录

温柔戏命师 2022-09-11 10:28:23

不知道你有没有配置控制台输出 发出的sql语句的配置 如果配置了可以看一下发出的sql语句是否有问题

挽梦忆笙歌 2022-09-11 10:28:23

如果是出错,应该抛异常。如果更新数是 0 只能说明没更新任何数据,一般来说有两个原因:一个是按 WHERE 条件没找到要更新的数据;另一个原因是找到了,但是新数据和数据库里存的数据是一样的。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文