mybatis mapper文件里的

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

代码:app

// 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>ide

 

//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>spa

 

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

  • 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> blog

//update sql

  update userit

  <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> event

 

 总结:我我的感受来讲,这两种写法花费的时间都差很少,可是第二种的可以处理不当心添加的逗号或者其余,规范性上感受更加好一点吧。class

相关文章
相关标签/搜索