DEFT1998 2020-05-10 23:36 采纳率: 100%
浏览 1303
已采纳

Spring boot+mybatis项目新增删除查询都没有问题,但是更新时没有错误数据库里面的数据为什么没有修改?

Controller

@PostMapping(value = "/edit")
    @ResponseBody
    @PreAuthorize("hasAuthority('sys:contract:edit')")
    @ApiOperation(value = "编辑合同信息", notes = "保存修改的合同信息")//描述
    public Results<SysContract> updateContract(ContractDto contractDto) {
        SysContract sysContract = null;
        sysContract = contractService.getContract(contractDto.getName());
        if (sysContract != null && !(sysContract.getId().equals(contractDto.getId()))) {
            return Results.failure(ResponseCode.CONTRACT_REPEAT.getCode(), ResponseCode.CONTRACT_REPEAT.getMessage());
        }
        return contractService.updateContract(contractDto);
    }

Service

@Override
    public Results updateContract(ContractDto contractDto) {
        contractDao.updateContract(contractDto);
        log.info("service已经更新"+contractDto.getName());
        return Results.success();
    }

Dao

int updateContract(SysContract contract);

Dao对应的xml

<mapper namespace="com.sxbang.friday.dao.ContractDao">

    <update id="updateContract" parameterType="com.sxbang.friday.model.SysContract">
        update sys_contract t
        <set>
            <if test="name != null">
                name = #{name},
            </if>
            <if test="startDate != null">
                startDate = #{startDate},
            </if>
            <if test="expireDate != null">
                expireDate = #{expireDate},
            </if>
            <if test="contractUrl != null">
                contractUrl = #{contractUrl},
            </if>
            updateTime = #{updateTime}
        </set>
        where t.id = #{id}
    </update>

</mapper>

service获取到的数据已经是修改过的了,为什么数据库还是没更新呢?我前两个用户和顾客资料的更新也是这样写的,几乎一样的为什么这个就更新不了呢?有没有大佬能解答一下...

  • 写回答

3条回答 默认 最新

  • zyydomain 2020-05-11 10:16
    关注

    看你的sql是根据id更新的,ContractDto 看下这个实体里id有没有值,如果是null的话找不到就不会更新了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • 关注

    debug一下,把sql语句打印出来,看看具体sql传参情况,很可能是参数没传进来,或者参数映射不对。

    评论
  • 郭老师的小迷弟雅思莫了 Java领域新星创作者 2020-05-11 11:12
    关注

    if (sysContract != null && !(sysContract.getId().equals(contractDto.getId()))) 你这个判断有问题吧, !(sysContract.getId().equals(contractDto.getId()) 当id不相等?条件不对,进不去。

    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 关于网上一个easyx制作的见缝插针小游戏(c++)
  • ¥15 开地址法双散列函数处理碰撞
  • ¥15 想问一下这个是什么情况 虚拟机Linux打不开了
  • ¥15 联通光猫掉注册了怎么重新注册上去
  • ¥15 关于unity开发steamvr程序遇到的问题
  • ¥60 求tc downloader的下载方式
  • ¥15 华为 快捷方式 手电筒 接口
  • ¥15 Qt6.5支不支持Android13开发啊
  • ¥20 网络只能跑一半,应该如何设置
  • ¥20 Python调用百度开发者平台人脸识别接口