mybatis sql语句前缀后缀设置

prefix : 给<trim>包裹的sql语句加上前缀.
**suffix **: 给<trim>包裹的sql语句加上后缀.
prefixOverrides: 如果<trim>包裹的sql语句是空语句(经常出现在 if 判断为否的情况下),取消指定的前缀,如where.
suffixOverrides: 如果<trim>包裹的sql语句是空语句(经常出现在 if 判断为否的情况下),取消指定的后缀,如and | or. 逗号等

拿个 user表举例
prefix=”(” suffix=”)” 会在我的<trim></trim> 之间包含的sql语句的开头处加上“(” ,结束处加上“)”, 因为我在sql中插入的字段有多个,之间用逗号连接,但是如果不做任何处理的话,插入语句 INSERT INTO 表名称 VALUES (值1, 值2,….) 中最后一个值得末尾会多一个“,”,而suffixOverrides=”,” 可以帮我们去掉这个后缀的逗号。

<insert id="insertSelective" parameterType="com.dhcc.bugkiller.web.model.User" >
    insert into t_user
    <trim prefix="(" suffix=")" suffixOverrides="," >
      <if test="id != null" >
        id,
      </if>
      <if test="name != null" >
        name,
      </if>
      <if test="password != null" >
        password,
      </if>
      <if test="salt != null" >
        salt,
      </if>
      <if test="nickname != null" >
        nickName,
      </if>
      <if test="email != null" >
        email,
      </if>
      <if test="department != null" >
        department,
      </if>
      <if test="photo != null" >
        photo,
      </if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides="," >
      <if test="id != null" >
        #{id,jdbcType=INTEGER},
      </if>
      <if test="name != null" >
        #{name,jdbcType=VARCHAR},
      </if>
      <if test="password != null" >
        #{password,jdbcType=VARCHAR},
      </if>
      <if test="salt != null" >
        #{salt,jdbcType=VARCHAR},
      </if>
      <if test="nickname != null" >
        #{nickname,jdbcType=VARCHAR},
      </if>
      <if test="email != null" >
        #{email,jdbcType=VARCHAR},
      </if>
      <if test="department != null" >
        #{department,jdbcType=VARCHAR},
      </if>
      <if test="photo != null" >
        #{photo,jdbcType=VARCHAR},
      </if>
    </trim>
  </insert>
    原文作者:抓兔子的猫
    原文地址: https://www.jianshu.com/p/f5c264acafd2
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞