Code Bye

mybatis操作insert,delete等操作怎么样通过返回判断能否成功

最近的项目中用到mybatis处理dao层,在配置文件中配置了<setting name=”defaultExecutorType” value=”BATCH” />
这样的话能提高效率,但是通过返回判断能否操作成功就出问题了,假如去掉<setting name=”defaultExecutorType” value=”BATCH” />,insert成功时能返回1,失败时返回-1.但是项目要求<setting name=”defaultExecutorType” value=”BATCH” />这个又不能去,本人该怎么样去判断操作<insert>…………</insert>是成功还是失败呢?
解决方案

20

SqlMapClient smc = this.getSqlMapClient();
int sys=smc.update(“updateCompanyStatus”,companySta);
计算影响行数

20

直接在你的insert和update接口里写返回值为int就行了

10

引用:
Quote: 引用:

直接在你的insert和update接口里写返回值为int就行了

mybatis官方的讨论列表,这句很关键:“If the BATCH
executor is in use, the update counts are being lost. ”  会导致返回为-2147482646,而不是正确就返回条数,失败就返回0. 说明本人在接口里返回的就是Int.就是那个批量操作配置导致的。该怎么样修复呢?

那就再写一个接口,select count(*),好像没什么好办法

10

引用:
Quote: 引用:
Quote: 引用:

直接在你的insert和update接口里写返回值为int就行了

mybatis官方的讨论列表,这句很关键:“If the BATCH
executor is in use, the update counts are being lost. ”  会导致返回为-2147482646,而不是正确就返回条数,失败就返回0. 说明本人在接口里返回的就是Int.就是那个批量操作配置导致的。该怎么样修复呢?

那就再写一个接口,select count(*),好像没什么好办法

这个条数假如你是要显示在前端的,那就没必要了,可以在插入的时候得到条数,成功都成功,失败都失败,用了事务之后,假如失败了,肯定会回滚全部操作啊,所以也没必要非得从数据库插入时返回值啊


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明mybatis操作insert,delete等操作怎么样通过返回判断能否成功