zoukankan      html  css  js  c++  java
  • mybatis mapper文件里的<set><trim>

    简单介绍:翻看以前在学校写的代码,发现那时候有一个sql写的很有意思,用到了 <set>标签,和我现在写的虽然有点差别,但是效果一样

    代码:

    //mapper里的sql

    <update id="updateEvent" parameterType="map">
      update event
      <set>
        <if test="title!=null and title!=''">
          title=#{title},
        </if>
        <if test="event!=null and event!=''">
          event=#{event}
        </if>
      </set>
      where id=#{id}
    </update>

    //mapper里的sql

    <update id="updateEvent" parameterType="map">
      update event
        <trim prefix="set" suffixOverrides=",">
          <if test="title!=null and title!=''">
            title=#{title},
          </if>
          <if test="event!=null and event!=''">
            event=#{event},
          </if>
        </trim>
      where id=#{id}
    </update>

     

    解释属性,顺便再补充几个常用的属性:

    • prefix:给trim标签范围内的sql语句加上前缀,这个很灵活,比如说常见的:加上where条件 加上左括号 加上set 等等,下边会给例子的
    • suffix:给trim标签范围内的sql语句加上后缀,用法和上边差不多,他们两个可以说是一对,但是也可以有所不同
    • prefixOverrides:去除trim标签范围内多余的前缀内容
    • suffixOverrides:去除trim标签范围内多余的后缀内容,如:suffixOverrides=","就是用来去除trim标签内sql语句多余的后缀","
    //insert sql

    <insert id="insert" parameterType="Contract">
      insert into contract
        <trim prefix="(" suffix=")" suffixOverrides=",">
          <if test="id != null">id,</if>
          <if test="userId != null">user_id,</if>
          <if test="createDate != null">create_date,</if>
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
          <if test="id != null">#{id,jdbcType=BIGINT},</if>
          <if test="userId != null">#{userId,jdbcType=BIGINT},</if>
          <if test="createTime != null">#{createDate,jdbcType=TIMESTAMP},</if>
        </trim>
      </insert>

    //update sql

      update user

      <trim prefix="set" suffixoverride="," suffix=" where id = #{id} ">
        <if test="name != null and name.length()>0"> name=#{name} , </if>
        <if test="gender != null and gender.length()>0"> gender=#{gender} , </if>
      </trim>

     

     总结:我个人感觉来说,这两种写法花费的时间都差不多,但是第二种的能够处理不小心添加的逗号或者其他,规范性上感觉更加好一点吧。

  • 相关阅读:
    Springboot操作域对象
    Thymeleaf的条件判断和迭代遍历
    Thymeleaf的字符串与变量输出的操作
    window 2003 实现多用户远程登录
    非常漂亮js动态球型云标签特效代码
    Echarts运用
    sass、less和stylus的安装使用和入门实践
    java,js 解unicode
    Java上传下载excel、解析Excel、生成Excel
    小知识点应用
  • 原文地址:https://www.cnblogs.com/xuchao0506/p/9970950.html
Copyright © 2011-2022 走看看