简单介绍:翻看以前在学校写的代码,发现那时候有一个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>

 

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

mybatis mapper文件里的<set><trim>的更多相关文章

  1. Mybatis mapper文件占位符设置默认值

    如果要设置占位符默认值的话:需要进行 设置 org.apache.ibatis.parsing.PropertyParser.enable-default-value 属性为true启用占位符默认值处 ...

  2. MyBatis mapper文件中的变量引用方式#{}与${}的差别

    MyBatis mapper文件中的变量引用方式#{}与${}的差别 #{},和 ${}传参的区别如下:使用#传入参数是,sql语句解析是会加上"",当成字符串来解析,这样相比于$ ...

  3. [DB][mybatis]MyBatis mapper文件引用变量#{}与${}差异

    MyBatis mapper文件引用变量#{}与${}差异 默认,使用#{}语法,MyBatis会产生PreparedStatement中.而且安全的设置PreparedStatement參数,这个过 ...

  4. intellij idea 插件开发--快速定位到mybatis mapper文件中的sql

    intellij idea 提供了openApi,通过openApi我们可以自己开发插件,提高工作效率.这边直接贴个链接,可以搭个入门的demo:http://www.jianshu.com/p/24 ...

  5. mybatis mapper文件sql语句传入hashmap参数

    1.怎样在mybatis mapper文件sql语句传入hashmap参数? 答:直接这样写map就可以 <select id="selectTeacher" paramet ...

  6. ][mybatis]MyBatis mapper文件中的变量引用方式#{}与${}的差别

    转自https://blog.csdn.net/szwangdf/article/details/26714603 MyBatis mapper文件中的变量引用方式#{}与${}的差别 默认情况下,使 ...

  7. MyBatis mapper文件中使用常量

    MyBatis mapper文件中使用常量 Java 开发中会经常写一些静态常量和静态方法,但是我们在写sql语句的时候会经常用到判断是否等于 //静态类 public class CommonCod ...

  8. 自己挖的坑自己填--Mybatis mapper文件if标签中number类型及String类型的坑

    1.现象描述 (1)使用 Mybatis 在进行数据更新时,大部分时候update语句都需要通过动态SQL进行拼接.在其中,if标签中经常会有 xxx !='' 这种判断,若 number 类型的字段 ...

  9. MyBatis Mapper 文件例子

    转载:http://blog.csdn.net/ppby2002/article/details/20611737 <?xml version="1.0" encoding= ...

随机推荐

  1. 原生js设置rem

    使用rem是为了界面响应不同尺寸的手机,引入下面的方法就可以使用rem了. setFontSize: function (doc, win) { var docEl = doc.documentEle ...

  2. 获取data-*属性值

    下面就详细介绍四种方法获取data-*属性的值 <li id=">获取id</li> 需要获取的就是data-id 和 dtat-vice-id的值 一:getAtt ...

  3. Linux取代ifconfig指令的ip指令

  4. 精心收集的 95 个超实用的 JavaScript 代码片段( ES6+ 编写)

    https://www.html.cn/archives/8748#table-of-contents https://www.haorooms.com/post/js_regexp

  5. java 11 不可修改集合API

    不可修改集合API 自 Java 9 开始,Jdk 里面为集合(List/ Set/ Map)都添加了 of 和 copyOf 方法,它们两个都用来创建不可变的集合,来看下它们的使用和区别. 示例1: ...

  6. CentOS7 Zabbix3.4安装

    依赖于lnmp或者lamp环境: 1.下载源码包 # wget -O zabbix-3.4.2.tar.gz http://sourceforge.net/projects/zabbix/files/ ...

  7. 简单的实现HTTP密码验证登陆

    1.首先需要安装 httpd-tools yum install -y httpd-tools 2.安装完成后设置用户名密码,我这里用的是NGINX htpasswd -bc /mypath/ngin ...

  8. MySQL实战45讲学习笔记:事务隔离级别(第三讲)

    一.隔离性与隔离级别 1.事务的特性 原子性 一致性 隔离性 持久性 2.不同事务隔离级别的区别 读未提交:别人改数据的事务尚未提交,我在我的事务中也能读到.读已提交:别人改数据的事务已经提交,我在我 ...

  9. Vim使用技巧:常用光标跳转命令

    Vim中的命令多如牛毛,按需学习才是唯一出路.这里总结了几个常用的光标跳转命令. 基本移动: h(往左) j(往下) k(往上) l(小写字母l,往右) 行间移动: 快速跳至文件末行:G(大写字母G) ...

  10. 已知 $AB$, 求 $BA$

    设 $A,B$ 分别是 $3\times 2$ 和 $2\times 3$ 实矩阵. 若 $\dps{AB=\sex{\ba{ccc}  8&0&-4\\  -\frac{3}{2}& ...