返回顶部
首页 > 资讯 > 后端开发 > Python >mybatis中xml之trim属性说明
  • 793
分享到

mybatis中xml之trim属性说明

2024-04-02 19:04:59 793人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

mybatis的xml中trim标签有四个属性 1.prefix 前缀增加的内容 2.suffix 后缀增加的内容 3.prefixOverrides 前缀需要覆盖的内容,一般是第一

mybatis的xml中trim标签有四个属性

1.prefix 前缀增加的内容

2.suffix 后缀增加的内容

3.prefixOverrides 前缀需要覆盖的内容,一般是第一个判断条件前面的多余的结构,如:第一个判断条件前面多了 ‘and'

4.suffixOverrides 后缀需要覆盖的内容,一般是最后一个数据的后面符号,如:set值的时候,最后一个值的后面多一个逗号‘,'

举几个例子:

1.根据用户姓名和年龄查询用户,有什么值就根据什么条件(目的是说明几个属性用法,可能例子不适用于实际场景中)


select * from User where name='zhangsan' and age='20';
<select id='queryUser'>
        select * from User
        <trim prefix='where' prefixOverrides='and'>
            <if test="name != null and name != ''">
                name = #{name}
            </if>
            <if test="age !=null and age !=''">
                and age = #{age}
            </if>
        </trim>
<select>

上面例子是很常规的一个写法,第一个条件前面没有任何符号,第二个条件要加上and,否则sql语句会报错。很理想的状态是第一个和第二个都有值,但是既然判断,说明也可能会没有值,当第一个name没有值的时候,这个时候sql语句就会是

select * from User where and age='',很明显这个sql语句语法存在问题。在这里标签属性prefixOverrides就起作用了,它会让前缀where覆盖掉第一个and。覆盖之后的是:select * from User where age='';

前缀加上where就不说,因为属性 prefix='where',这个where 也可以写在<trim>标签的外面,这样此处就无需用到属性prefix了。

现在有更方便的标签了,就是<where>,用这个标签效果一样的,会忽略掉第一个符合条件前面的符号。


select * from User 
<where>
             <if test="name != null and name != ''">
                name = #{name}
            </if>
            <if test="age !=null and age !=''">
                and age = #{age}
            </if>
</where>

如果第一个name值是null,则age前面的and会被忽略掉。

再说说另两个属性,suffix和suffixOverrides。

如:更新用户的信息,哪些字段有值就更新哪些字段,sql语句如下:


<update id="updateUser">
    update User
    <trim prefix="set" suffixOverrides="," suffix="where id='1'">
        <if test="name != null and name != ''">
            name=#{name},
        </if>
        <if test="age != null and age !=''">
            age=#{age},
        </if>
    </trim>
</update>

本例中最后一个条件中的逗号“,”会被后缀覆盖掉,本例中的后缀是where id =‘1';

OK,纯属为了说明四个属性怎么使用的,具体里面的值会根据具体需求而定。希望举一反三~

trim标签的使用场景

使用trim标签去除多余的逗号

如果红框里面的条件没有匹配上,sql语句会变成如下:


INSERT INTO role(role_name,) VALUES(roleName,)

插入将会失败。

做如下修改:

其中最重要的属性是


suffixOverrides=","

表示去除sql语句结尾多余的逗号.

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: mybatis中xml之trim属性说明

本文链接: https://lsjlt.com/news/130354.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • mybatis中xml之trim属性说明
    mybatis的xml中trim标签有四个属性 1.prefix 前缀增加的内容 2.suffix 后缀增加的内容 3.prefixOverrides 前缀需要覆盖的内容,一般是第一...
    99+
    2024-04-02
  • Mybatis的mapper标签 namespace属性用法说明
    目录Mybatis mapper标签namespace属性说明MyBatis的命名空间(我们以下图的文件结构来说明)下面我来说一下他们三个之间的关系,我们Mybatis中namesp...
    99+
    2024-04-02
  • Vue.component的属性说明
    目录Vue.component的属性1.template2.data3.methods4.propsVue的component标签作用is属性Vue.component的属性 Vue...
    99+
    2024-04-02
  • mybatis Mapper的xml文件中resultType值的使用说明
    目录Mapper的xml文件中resultType值①返回一般数据类型的值②当返回类型是javaBean③当返回是List类型④返回类型数Map结构⑤说一下关于mybatis里面ma...
    99+
    2024-04-02
  • MyBatis中XML 映射文件中常见的标签说明
    SQL 映射文件只有很少的几个顶级元素(按照应被定义的顺序列出): cache – 对给定命名空间的缓存配置。 cache-ref – 对其他命名空间缓存配置的引用...
    99+
    2024-04-02
  • Mybatis拦截器注解@Intercepts与@Signature注解属性说明
    Mybatis拦截器注解@Intercepts与@Signature注解属性说明 可能有些新手使用mybatis拦截器的时候可能没太懂@Signature注解中type,method,args的用法 首先mybatis拦截器可以拦截如下4中...
    99+
    2023-08-20
    mybatis java mysql
  • fluttershowModalBottomSheet常用属性及说明
    目录showModalBottomSheet常用属性showModalBottomSheetflutter常见控件及例子贝塞尔曲线底部弹窗下拉框展开闭合控件输入框弹出框加叠加(一个红...
    99+
    2024-04-02
  • mybatis 一对多映射 column属性的注意事项说明
    目录mybatis 一对多映射 column属性注意事项mybatis中column的用法mybatis 一对多映射 column属性注意事项 昨天在做一个小项目的时候,使用了myb...
    99+
    2024-04-02
  • Android布局中gravity与layout_gravity属性说明
    目录gravity与layout_gravity属性1、gravity2、layout_gravity属性3、相对布局中的layout_center属性总结gravity与layou...
    99+
    2023-01-17
    Android布局 Android gravity Android layout_gravity
  • 简单说明VB.NET默认属性
    这篇文章主要讲解了“简单说明VB.NET默认属性”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“简单说明VB.NET默认属性”吧!在向大家详细介绍VB.NET默认属性之前,首先让大家了解下Te...
    99+
    2023-06-17
  • iframe标签属性说明 详解
    iframe标签是HTML中的一个标签,用于在当前HTML页面中嵌入另一个HTML页面。它有以下一些常用的属性:1. src:指定要...
    99+
    2023-09-20
    iframe
  • iframe标签属性说明详解
    `iframe`标签是HTML中的内联框架元素,用于在当前HTML文档中嵌入另一个HTML文档。它具有以下属性:1. `src`:指...
    99+
    2023-09-21
    iframe
  • python类的私有属性和公共属性说明
    目录python类私有属性和公共属性python私有属性的定义python类私有属性和公共属性 对于python而言,类的属性的可见度只有两种,public和private。 类的私...
    99+
    2024-04-02
  • vue 注释template中组件的属性说明
    目录注释template中组件属性实例中的template讲解调试图片原理说明图片终极结论注释template中组件属性 想注释一个组件的属性,一直报错 [vue/no-parsin...
    99+
    2024-04-02
  • @FeignClient注解中属性contextId的使用说明
    目录一、概述二、解决方案2.1 方案12.2 方案2三、源代码分析相关代码1相关代码2一、概述 如果我们使用Feign定义了两个接口,但是目标服务是同一个,那么在SpringBoot...
    99+
    2024-04-02
  • FeignClient中name和url属性的作用说明
    目录name和url属性的作用定义场景解释@FeignClient注解属性vaule和name 其实是一个属性关于调用目前有两种name和url属性的作用 定义 feign是声明式的...
    99+
    2024-04-02
  • Vue.delete()删除对象的属性说明
    目录Vue.delete()删除对象的属性delete和Vue.delete的区别Vue.delete()删除对象的属性 Vue.delete( target, key ) da...
    99+
    2024-04-02
  • VBS对象Dictionary的属性和说明
    本篇内容主要讲解“VBS对象Dictionary的属性和说明”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“VBS对象Dictionary的属性和说明”吧!Dictionary 保存数据键和项目对...
    99+
    2023-06-08
  • css中的punctuation-trim属性怎么用
    这篇文章主要介绍了css中的punctuation-trim属性怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。   &nb...
    99+
    2024-04-02
  • css中punctuation-trim属性有什么用
    这篇文章主要为大家展示了“css中punctuation-trim属性有什么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“css中punctuation-tr...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作