比如修改状态,前台可以显示修该状态成功,但是数据库没有更新,

前台修改数据不能同步到数据库,前台有效果,但是刷新一次也页面就又是原来的了,单元测试可以通过

持久层用的是什么技术 sql是否需要提交 commit操作 单元测试通过 你的数据库是否有修改? 配置文件中 把show_sql设置为true 看控制台是否有打印sql 有才进行了数据库操作 没有就没进行 然后看式什么sql 有没调用错方法

应该是你的数据没有传到后台吧,或者你可以在你的后台代码相应的位置打个断点 测试一下你的数据是否成功传到后台并执行操作

用的是tars这个框架,腾讯今年开源的,打不了断点,,,或者是我目前不会,但是我走的单元测试又可以实现,单元测试数据有修改成功

传值不匹配吧!检查字段名!

@Test
public void updateGoodsIsStops() {
UpdateGoodsIsStopsReq request = new UpdateGoodsIsStopsReq();
request.session = new UserSession("a", "b");
Holder response = new Holder();
HashMap context = new HashMap();
List ids = new ArrayList<>();
ids.add(1);
ids.add(2);
ids.add(3);
request.ids = ids;
request.isStop = 1;
int ret = proxy.updateGoodsIsStops(request, response, context);
Assert.assertEquals(0, ret);
Assert.assertTrue(response.value.errorCode > 0);
}

update dt_ec.goods set is_stop =#{isStop} where goods_id in
open="(" separator="," close=")">
#{item}


我现在要做的是一个批量修改功能,代码就知是这样的了

  <update id="updateGoodsIsStops" parameterType="java.util.List">
        update dt_ec.goods set is_stop =#{isStop} where goods_id in
        <foreach collection="ids" item="item" index="index"
            open="(" separator="," close=")">
            #{item}
        </foreach>
    </update>

页面有时候会有缓存,当你修改之后可以看到修改成功,但是你的数据并没有入库!
如果你用junit测试修改数据没问题,那就是你的数据交互层也就是WEB层出的问题,可能是后台没有接受到数据


update dt_ec.goods set is_stop =#{isStop} where goods_id in
open="(" separator="," close=")">
#{item}

    看一下你的isStop是否有值传过来

可能性1:值没有从前台传到后台;
2:后台对参数的处理、传递等出错;
3:对数据库进行修改失败

不管你怎么做,要做到数据库更新完毕后,才能返回一个结果,完成一个事务。不要想当然的做,不可取。

单元测试以后数据库中有没有改变?,
你是用的ajax访问这个方法吗?
用火狐访问你的项目,f12 点击网络点击你访问的路径,点击参数,截图一下

![![图片说明](https://img-ask.csdn.net/upload/201710/16/1508145863_554587.png)图片说明](https://img-ask.csdn.net/upload/201710/16/1508145855_243828.png)图片说明

感谢大家的回答,虽然现在问题还没解决,有点方向了,应该是批量传值类型那里可能有问题,