mybatis之的含义

1.

trim标记是一个格式化的标记,可以完成set或者是where标记的功能,如下代码:

prefix:在trim标签内sql语句加上前缀。
suffix: 在trim标签内sql语句加上后缀。
suffixOverrides:指定去除多余的后缀内容,如:suffixOverrides=",",去除trim标签内sql语句多余的后缀","。
prefixOverrides: 指定去除多余的前缀内容
2.下面是一个往购物车表中插入数据的mybatis语句
[java]  view plain  copy
  1. "insert" parameterType="com.tortuousroad.groupon.cart.entity.Cart">  
  2.         insert into cart  
  3.         "(" suffix=")" suffixOverrides=",">  
  4.             <if test="id != null">  // test 的是 传进来的参数的是否为空
  5.                 id,  
  6.             if>  
  7.             <if test="userId != null">  
  8.                 user_id,  
  9.             if>  
  10.             <if test="dealId != null">  
  11.                 deal_id,  
  12.             if>  
  13.             <if test="dealSkuId != null">  
  14.                 deal_sku_id,  
  15.             if>  
  16.             <if test="count != null">  
  17.                 count,  
  18.             if>  
  19.             <if test="createTime != null">  
  20.                 create_time,  
  21.             if>  
  22.             <if test="updateTime != null">  
  23.                 update_time,  
  24.             if>  
  25.           
  26.         "values (" suffix=")" suffixOverrides=",">  
  27.             <if test="id != null">  
  28.                 #{id,jdbcType=BIGINT},  
  29.             if>  
  30.             <if test="userId != null">  
  31.                 #{userId,jdbcType=BIGINT},  
  32.             if>  
  33.             <if test="dealId != null">  
  34.                 #{dealId,jdbcType=BIGINT},  
  35.             if>  
  36.             <if test="dealSkuId != null">  
  37.                 #{dealSkuId,jdbcType=BIGINT},  
  38.             if>  
  39.             <if test="count != null">  
  40.                 #{count,jdbcType=INTEGER},  
  41.             if>  
  42.             <if test="createTime != null">  
  43.                 #{createTime,jdbcType=TIMESTAMP},  
  44.             if>  
  45.             <if test="updateTime != null">  
  46.                 #{updateTime,jdbcType=TIMESTAMP},  
  47.             if>  
  48.           
  49.       
假设没有指定
[java]  view plain  copy
  1. suffixOverrides=","  
执行的sql语句也许是这样的:insert into cart (id,user_id,deal_id,) values(1,2,1,);显然是错误的
指定之后语句就会变成 insert into cart (id,user_id,deal_id) values(1,2,1);这样就将“,”去掉了。
前缀也是一个道理这里就不说了。


trim标记是一个格式化的标记,可以完成set或者是where标记的功能,如下代码:

  1、

  select * from user 

  

     AND name=#{name}

     AND gender=#{gender}

  

  假如说name和gender的值都不为null的话打印的SQL为:select * from user where    name = 'xx' and gender = 'xx'

  在红色标记的地方是不存在第一个and的,上面两个属性的意思如下:

  prefix:前缀      

  prefixoverride:去掉第一个and或者是or

 

  2、

  update user

  

     name=#{name} ,

     gender=#{gender} ,  

  

  假如说name和gender的值都不为null的话打印的SQL为:update user set name='xx' , gender='xx'     where id='x'

  在红色标记的地方不存在逗号,而且自动加了一个set前缀和where后缀,上面三个属性的意义如下,其中prefix意义如上:

  suffixoverride:去掉最后一个逗号(也可以是其他的标记,就像是上面前缀中的and一样)

  suffix:后缀


你可能感兴趣的:(mybatis)