myBatis常用标签

if判断,where判断

[java]  view plain  copy
  1. User getById(Integer _parameter);

但是当 _parameter 为 null 时,此语句很可能报错或查询结果为空。此时我们使用 if 动态 sql 语句先进行判断,如果值为 null 或等于空字符串,我们就不进行此条件的判断,增加灵活性。

“where”标签会知道如果它包含的标签中有返回值的话,它就插入一个‘where’。此外,如果标签返回的内容是以 AND 或OR 开头的,则它会剔除掉。

[html]  view plain  copy
  1. if判断    
        <
    select id="getUsers" parameterType="int" resultType="User">  
  2.         SELECT id, name, phone, email FROM users WHERE 1=1  
  3.         <if test="_parameter != null">  
  4.             and id > #{_parameter}  
  5.         </if>  
  6.     </select>  
    where判断
  7.    <select id="getUsers" parameterType="int" resultType="User"> 
  8.         SELECT id, name, phone, email FROM users
  9.         <where>
  10.             <if test="_parameter != null">
  11.                 id > #{_parameter}
  12.             </if>
  13.         </where>
  14.    </select>

大量重复的字段

[html]  view plain  copy
  1.     <sql id="HHHHH">  
  2.         id,name  
  3.     </sql>  
[html]  view plain  copy
  1. 引用写法  
  2. <include refid="HHHHH"/>  
foreach

1、item表示集合中每一个元素进行迭代时的别名,
2、index指定一个名字,用于表示在迭代过程中,每次迭代到的位置,
3、collection表示当前传递的list集合
4、open表示该语句以什么开始,
5、separator表示在每次进行迭代之间以什么符号作为分隔符,
6、close表示以什么结束,
[java]  view plain  copy
  1. void updateBatch(List<E> list);  

[html]  view plain  copy
  1. <update id="updateBatch">  
  2.         <foreach item="item" index="index" collection="list" open=""  
  3.             close="" separator=";">  
  4.             <if test="item.statusType.toString() == 'DELETED'">  
  5.                 DELETE FROM 库名.表名 WHERE id = #{item.id}  
  6.             </if>  
  7.             <if test="item.statusType.toString() != 'DELETED'">  
  8.                 UPDATE 库名.表名  
  9.                 <set>  
  10.                     modifier = #{item.modifier,jdbcType=CHAR},  
  11.                     <if test="item.account != null">  
  12.                         account = #{item.account,jdbcType=VARCHAR},  
  13.                     </if>  
  14.                     <if test="item.name != null">  
  15.                         name = #{item.name,jdbcType=VARCHAR},  
  16.                     </if>  
  17.                 </set>  
  18.                 where  
  19.                 库名.表名.id =#{item.id}  
  20.             </if>  
  21.         </foreach>  
  22.     </update>  
set
一定要非空判断

set为空会报错

set 标签元素主要是用在更新操作的时候,它的主要功能和 where 标签元素其实是差不多的,主要是在包含的语句前输出一个 set,然后如果包含的语句是以逗号结束的话将会把该逗号忽略,如果 set 包含的内容为空的话则会出错。有了 set 元素就可以动态的更新那些修改了的字段。

[html]  view plain  copy
  1. <update id="updateFlow">  
  2.     UPDATE ufis.pid
  3.     <set>
  4.         <if test="used_flow != null">
  5.             used_flow = used_flow + #{flow},
  6.         </if>
  7.         <if test="change_flow_time != null">
  8.             change_flow_time change_flow_time + #{change_flow_time},
  9.         </if>
  10.     </set>
  11.     WHERE id = #{id}
  12. </update>  


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值