mybatis操作insert,delete等操作如何通过返回判断是否成功

J2EE 码拜 10年前 (2015-05-10) 6592次浏览 0个评论

最近的项目中用到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);

计算影响行数

引用 1 楼 qq_26863283 的回复:

SqlMapClient smc = this.getSqlMapClient();
int sys=smc.update(“updateCompanyStatus”,companySta);

计算影响行数

现在用的是spring的@Repository 注解。这些操作直接交给容器管理。貌似SqlMapClient smc = this.getSqlMapClient(); 这个也用不到了。

20分
直接在你的insert和update接口里写返回值为int就行了
引用 3 楼 hjw506848887 的回复:

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

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

有大神会吗?
10分
引用 4 楼 shenshengzhiwen 的回复:
Quote: 引用 3 楼 hjw506848887 的回复:

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

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

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

10分
引用 6 楼 hjw506848887 的回复:
Quote: 引用 4 楼 shenshengzhiwen 的回复:
Quote: 引用 3 楼 hjw506848887 的回复:

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

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

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

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

引用 7 楼 hjw506848887 的回复:
Quote: 引用 6 楼 hjw506848887 的回复:
Quote: 引用 4 楼 shenshengzhiwen 的回复:
Quote: 引用 3 楼 hjw506848887 的回复:

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

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

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

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

<setting name=”defaultExecutorType” value=”BATCH” /> 加这个也是为了想提高效率,如果在额外加查询的话未必比去掉这个配置效率高呢。


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明mybatis操作insert,delete等操作如何通过返回判断是否成功
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!