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

shenshengzhiwen 2015-03-25 01:57:56
最近的项目中用到mybatis处理dao层,在配置文件中配置了<setting name="defaultExecutorType" value="BATCH" />
这样的话能提高效率,但是通过返回判断是否操作成功就出问题了,如果去掉<setting name="defaultExecutorType" value="BATCH" />,insert成功时能返回1,失败时返回-1.但是项目要求<setting name="defaultExecutorType" value="BATCH" />这个又不能去,我该如何去判断操作<insert>............</insert>是成功还是失败呢?
...全文
27477 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
解决办法就是不用了
一存 2017-07-10
  • 打赏
  • 举报
回复
引用 10 楼 u011674023 的回复:
我也遇到了同样的问题,我需要取回删除的返回条数是为了一批一批的删除这些数据,所以需要这个返回值,可是都是返回了 --2147482646。有没有好的方法啊?还是mybatis不支持这些东西,得重新换方法。楼主有解决此问题么?大家分享一下,谢谢
我也遇到了同样的问题,请问解决了吗?
路飞小清 2016-12-15
  • 打赏
  • 举报
回复
我也遇到了同样的问题,我需要取回删除的返回条数是为了一批一批的删除这些数据,所以需要这个返回值,可是都是返回了 --2147482646。有没有好的方法啊?还是mybatis不支持这些东西,得重新换方法。楼主有解决此问题么?大家分享一下,谢谢
Java_er 2016-09-08
  • 打赏
  • 举报
回复
mybatis就是垃圾 尼玛 这个问题好蛋疼
shenshengzhiwen 2015-03-25
  • 打赏
  • 举报
回复
引用 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.就是那个批量操作配置导致的。该如何修复呢?[/quote]那就再写一个接口,select count(*),好像没什么好办法[/quote]这个条数如果你是要显示在前端的,那就没必要了,可以在插入的时候得到条数,成功都成功,失败都失败,用了事务之后,如果失败了,肯定会回滚所有操作啊,所以也没必要非得从数据库插入时返回值啊[/quote] <setting name="defaultExecutorType" value="BATCH" /> 加这个也是为了想提高效率,如果在额外加查询的话未必比去掉这个配置效率高呢。
  • 打赏
  • 举报
回复
引用 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.就是那个批量操作配置导致的。该如何修复呢?[/quote]那就再写一个接口,select count(*),好像没什么好办法[/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.就是那个批量操作配置导致的。该如何修复呢?[/quote]那就再写一个接口,select count(*),好像没什么好办法
shenshengzhiwen 2015-03-25
  • 打赏
  • 举报
回复
有大神会吗?
shenshengzhiwen 2015-03-25
  • 打赏
  • 举报
回复
引用 3 楼 hjw506848887 的回复:
直接在你的insert和update接口里写返回值为int就行了
mybatis官方的讨论列表,这句很关键:“If the BATCH executor is in use, the update counts are being lost. ” 会导致返回为-2147482646,而不是正确就返回条数,失败就返回0. 说明我在接口里返回的就是Int.就是那个批量操作配置导致的。该如何修复呢?
  • 打赏
  • 举报
回复
直接在你的insert和update接口里写返回值为int就行了
shenshengzhiwen 2015-03-25
  • 打赏
  • 举报
回复
引用 1 楼 qq_26863283 的回复:
SqlMapClient smc = this.getSqlMapClient(); int sys=smc.update("updateCompanyStatus",companySta); 计算影响行数
现在用的是spring的@Repository 注解。这些操作直接交给容器管理。貌似SqlMapClient smc = this.getSqlMapClient(); 这个也用不到了。
qq_26863283 2015-03-25
  • 打赏
  • 举报
回复
SqlMapClient smc = this.getSqlMapClient(); int sys=smc.update("updateCompanyStatus",companySta); 计算影响行数

67,550

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧