首页 > 数据库 >动态sql实现修改

动态sql实现修改

时间:2024-04-02 19:11:42浏览次数:15  
标签:set update 修改 dict sql 动态

 

  在Mybatis内,根据某个条件进行修改,普通修改进行选择性修改时会对未修改的字段进行null了。

  使用动态sql,<if></if>进行判空实现。if 与 test 属性联合使用。

    <update id="updateDictById">
        update xz_dict_type
                <set>
                    <if test="dictName!=null and dictName != ''">
                        dict_name = #{dictName},
                    </if>
                    <if test="dictType!=null and dictType != ''">
                        dict_type = #{dictType},
                    </if>
                        update_by = 'admin',
                    <if test="remark!=null and remark != ''">
                        remark = #{remark},
                    </if>
                        update_time = #{updateTime},
                    <if test="status!=null and status != ''">
                        status =
                        <choose>
                            <when test="status == '正常'">'0'</when>
                            <when test="status == '停用'">'1'</when>
                        </choose>,
                    </if>
                </set>
                    where dict_id = #{dictId}
    </update>

 

  里面字段是一个可填可不填的条件,不填写的时候不作为条件。

  在 Mybatis 中,update 语句可以使用 set 标签动态更新列。set 标签可以为 SQL 语句动态的添加 set 关键字,剔除追加到条件末尾多余的逗号。

  

  可多个 if 语句同时使用。按照某个字段进行模糊查询。如果不输入,则返回所有的记录。但是,如果传递了任意一个参数,就会返回与给定参数相匹配的记录。

 

标签:set,update,修改,dict,sql,动态
From: https://www.cnblogs.com/warmNest-llb/p/18111305

相关文章

  • SQL语法之SQL 通配符
    原文链接:https://blog.csdn.net/westos_yanzheng/article/details/126399593SQL通配符必须与LIKE运算符一起使用。在SQL中,可使用以下通配符: 1.1使用%通配符例子1现在,我们希望从上面的“Persons”表中选取居住在以“Ne”开始的城市里的人:我们可以使用下面的SEL......
  • vue3+ant-design-vue - 最新实现“侧边动态导航栏+面包屑导航“功能,vue3+ant后台管理
    效果图在vue3+antdesignvue后台管理系统中,详细完成菜单导航+面包屑动态联动功能效果,支持缓存功能、配置简洁、自动跟随route路由进行变化、自动匹配菜单和面包屑导航的文字等,超详细实用的示例demo全部源代码。提供详细示例源代码,新手小白直接复制稍微改下配置就能用了,快......
  • 一文彻底搞懂MySQL中事务的五种分类
    文章目录1.什么是事务2.事务的分类3.事务的详解1.什么是事务事务是指作为单个逻辑工作单元执行的一系列操作,这些操作要么全部成功完成,要么全部失败回滚,从而保证数据库操作一致性和完整性的重要机制,它确保了数据库在并发环境下的正确性和可靠性。在数据库中,事务......
  • java,postgresql,python中各种数据类型的占位长度,取值范围
    Java数据类型Java中的数据类型分为两类:基本数据类型和引用数据类型。基本数据类型数据类型占位长度取值范围byte1字节-128127short2字节-3276832767int4字节-21474836482147483647long8字节-92233720368547758089223372036854775807float4字节1.4E-453.4028235E38double8字节4.......
  • python改变文件修改时间
    代码:importosimporttime,datetimedefchange_file_time(file_path,new_timestamp):#使用stat函数获取文件的状态file_stat=os.stat(file_path)#更新文件的访问时间和修改时间os.utime(file_path,(file_stat.st_atime,new_timestamp))......
  • Python加载C语言动态库
    ★背景说明1.python是一门胶水语言,可以通过加载动态库的方式在一个项目中运行不同语言的程序2.通过动态库加载其他语言的方式可以解决多线程GIL使用C解释器无法并发运行的问题★在Linux中运行C代码:编辑C语言代码//hello.c//c代码作为启动文件必须加include<stdio......
  • 【INDEX_SS】使用HINT使SQL用索引跳跃扫描(Index Skip Scan)方式快速获取数据
    索引跳跃扫描(IndexSkipScan)可以使用到复合索引的非前缀索引列,达到改善性能的作用,前提是全表扫面的代价高于索引跳跃式扫描的代价。这里给出使用HINT方法使SQL走索引跳跃扫描的方法。1.初始化环境1)创建表Tsec@ora10g>createtablet(xnumber,ynumber);Tablecreated.2)初始化10......
  • mysqlbinlog历史sql查询和恢复
    Mysql命令:查看binlog文件showbinarylogs;远程拉取binlog日志mysqlbinlog-umaxen-p-h127.0.0--read-from-remote-server--rawmysql-bin.001219>/home/mysql-bin.001218通过sql语句搜索binlog日志记录mysqlbinlog--no-defaults--base64-output=decode-rows......
  • MYSQL——多表连结查询
    分类:内联结(INNERJOIN)外联结——左外连结(LEFTJOIN)——右外联结(RIGHTJOIN)——完整联结(FILLJOIN)交叉联结(CROSSJOIN)1、DDL语句——学生表——成绩表CREATETABLE`student`(`id`int(11)NOTNULLAUTO_INCREMENTCOMMENT'学号',`createDate`datetimeDEFAU......
  • MYSQL-多表联结查询
    1、DDLCREATETABLE`result`(`rid`int(11)NOTNULLAUTO_INCREMENTCOMMENT'成绩编号',`testName`varchar(255)DEFAULTNULLCOMMENT'测试名称',`score`double(4,2)DEFAULTNULLCOMMENT'成绩',`studentId`int(11)DEFAULTNULL......