NutzCN Logo
问答 dao update,为什么会返回1?
发布于 1647天前 作者 jellee 1462 次浏览 复制 上一个帖子 下一个帖子
标签:
int count = dao.update(XXX.class, Chain
         .make("giveCount", 0.0)
         .add("amount", 0.0)
         .add("state", true), Cnd
         .where("abcId", "=", 1)
         .and("accessId", "=", 2));
    System.out.println(count);

代码执行会返回1,但sql在mysql执行返回0,请问是什么原因?

8 回复

硬是没看懂,mysql里面返回0是什么意思

来自炫酷的 NutzCN

受影响行数

要是数据已经改动成功,再执行一次当然是0

但dao总是返回1

那只是JDBC驱动返回的值

st.getContext().setUpdateCount(pstat.getUpdateCount());
// pstat的类型是 PreparedStatement

试了mariadb-java-client-1.4.6.jar mariadb-java-client-1.4.4.jar mariadb-java-client-1.1.8.jar几个版本,没有一个返回0,郁闷。

@jellee 建议用mysql驱动,你用这个问题比较多

来自炫酷的 NutzCN

jdbc连接url中添加上useAffectedRows=true 参数即可解决。
该参数意为: 在update语句中使用实际受影响的行数来作为返回,不加默认为false,使用where条件匹配的行数来作为返回.
该参数在mysql 5.1.7版本中加入.

这也能解释为何有些客户端返回1,有些返回0

添加回复
请先登陆
回到顶部