mybatis 调用修改SQL时 出现了一个问题 没有修改成功也没有报错

简介: mybatis 调用修改SQL时 出现了一个问题 没有修改成功也没有报错


问题描述

今天遇到的这个问题到最后真的是怕我自己给气哭了,唉,大致如下:

这是controller层代码,前端传的值都有,但是去调用updateWechatBulkNotification时,修改失败,也不报错,通过查看控制台日志发现,返回受影响的行数为0

@PostMapping("/updateRemarks")
    public AjaxResult updateRemarks(@RequestBody String data) {
        JSONObject jsonObject = JSONObject.parseObject(data);
        String appkey = jsonObject.getString("appkey");
        List<WechatBulkNotification> list = jsonObject.getJSONArray("list").toList(WechatBulkNotification.class);
        LoginUser loginUser = SecurityUtils.getLoginUser();
        list.forEach(wechatBulkNotification -> {
            if(wechatBulkNotification.getwbnId()!=null){
                wechatBulkNotification.setId(wechatBulkNotification.getwbnId());
                wechatBulkNotification.setAppKey(appkey);
                wechatBulkNotification.setUpdateBy(loginUser.getUserId().toString());
                wechatBulkNotificationService.updateWechatBulkNotification(wechatBulkNotification);
            }
        });
        return AjaxResult.success();
    }

接着再来看下xml里面的代码

看着也没有问题,经过百般研究,最后问题出在了id,id不对导致的,我传的id在wechat_xxxx表里面查询不到,唉

<update id="updateWechatBulkNotification" parameterType="BulkNotif">
        update tification
        <trim prefix="SET" suffixOverrides=",">
            <if test="createBy != null">create_by = #{createBy},</if>
            <if test="createTime != null">create_time = #{createTime},</if>
            <if test="updateBy != null">update_by = #{updateBy},</if>
            <if test="updateTime != null">update_time = #{updateTime},</if>
            <if test="nick != null">nick = #{nick},</if>
            <if test="wxid != null">id = #{wxid},</if>
            <if test="type != null">type = #{type},</if>
            <if test="intervalTime != null">interval_time = #{intervalTime},</if>
            <if test="appkey != null">key = #{appkey},</if>
            <if test="salespersonName != null">salesperson_name = #{salespersonName},</if>
            <if test="threeSegmentCode != null">three_segment_code = #{threeSegmentCode},</if>
            <if test="remark != null">remark = #{remark},</if>
        </trim>
        where id = #{id}
    </update>
目录
相关文章
|
4月前
|
SQL XML Java
通过MyBatis的XML配置实现灵活的动态SQL查询
总结而言,通过MyBatis的XML配置实现灵活的动态SQL查询,可以让开发者以声明式的方式构建SQL语句,既保证了SQL操作的灵活性,又简化了代码的复杂度。这种方式可以显著提高数据库操作的效率和代码的可维护性。
298 18
|
9月前
|
SQL Java 数据库连接
【YashanDB知识库】解决mybatis的mapper文件sql语句结尾加分号";"报错
【YashanDB知识库】解决mybatis的mapper文件sql语句结尾加分号";"报错
|
8月前
|
SQL Java 数据库连接
MyBatis动态SQL字符串空值判断,这个细节99%的程序员都踩过坑!
本文深入探讨了MyBatis动态SQL中字符串参数判空的常见问题。通过具体案例分析,对比了`name != null and name != &#39;&#39;`与`name != null and name != &#39; &#39;`两种写法的差异,指出后者可能引发逻辑混乱。为避免此类问题,建议在后端对参数进行预处理(如trim去空格),简化MyBatis判断逻辑,提升代码健壮性与可维护性。细节决定成败,严谨处理参数判空是写出高质量代码的关键。
1061 0
|
4月前
|
SQL Java 数据库连接
SSM相关问题-1--#{}和${}有什么区别吗?--Mybatis都有哪些动态sql?能简述一下动 态sql的执行原理吗?--Spring支持的几种bean的作用域 Scope
在MyBatis中,`#{}`是预处理占位符,可防止SQL注入,适用于大多数参数传递场景;而`${}`是直接字符串替换,不安全,仅用于动态表名、列名等特殊场景。二者在安全性、性能及使用场景上有显著区别。
86 0
|
7月前
|
SQL XML Java
菜鸟之路Day35一一Mybatis之XML映射与动态SQL
本文介绍了MyBatis框架中XML映射与动态SQL的使用方法,作者通过实例详细解析了XML映射文件的配置规范,包括namespace、id和resultType的设置。文章还对比了注解与XML映射的优缺点,强调复杂SQL更适合XML方式。在动态SQL部分,重点讲解了`&lt;if&gt;`、`&lt;where&gt;`、`&lt;set&gt;`、`&lt;foreach&gt;`等标签的应用场景,如条件查询、动态更新和批量删除,并通过代码示例展示了其灵活性与实用性。最后,通过`&lt;sql&gt;`和`&lt;include&gt;`实现代码复用,优化维护效率。
626 5
|
9月前
|
SQL
【YashanDB知识库】使用leading hint调整SQL执行计划后报错YAS-04522 invalid hint leading
【YashanDB知识库】使用leading hint调整SQL执行计划后报错YAS-04522 invalid hint leading
【YashanDB知识库】使用leading hint调整SQL执行计划后报错YAS-04522 invalid hint leading
|
9月前
|
SQL Java 数据库连接
【YashanDB 知识库】解决 mybatis 的 mapper 文件 sql 语句结尾加分号";"报错
【YashanDB 知识库】解决 mybatis 的 mapper 文件 sql 语句结尾加分号";"报错
|
9月前
|
SQL 缓存 Java
框架源码私享笔记(02)Mybatis核心框架原理 | 一条SQL透析核心组件功能特性
本文详细解构了MyBatis的工作机制,包括解析配置、创建连接、执行SQL、结果封装和关闭连接等步骤。文章还介绍了MyBatis的五大核心功能特性:支持动态SQL、缓存机制(一级和二级缓存)、插件扩展、延迟加载和SQL注解,帮助读者深入了解其高效灵活的设计理念。
|
9月前
|
SQL XML Java
六、MyBatis特殊的SQL:模糊查询、动态设置表名、校验名称唯一性
六、MyBatis特殊的SQL:模糊查询、动态设置表名、校验名称唯一性
271 0
|
6月前
|
Java 数据库连接 数据库
Spring boot 使用mybatis generator 自动生成代码插件
本文介绍了在Spring Boot项目中使用MyBatis Generator插件自动生成代码的详细步骤。首先创建一个新的Spring Boot项目,接着引入MyBatis Generator插件并配置`pom.xml`文件。然后删除默认的`application.properties`文件,创建`application.yml`进行相关配置,如设置Mapper路径和实体类包名。重点在于配置`generatorConfig.xml`文件,包括数据库驱动、连接信息、生成模型、映射文件及DAO的包名和位置。最后通过IDE配置运行插件生成代码,并在主类添加`@MapperScan`注解完成整合
1083 1
Spring boot 使用mybatis generator 自动生成代码插件