zoukankan      html  css  js  c++  java
  • Mybatis中运用小技巧 trim标签的使用

    作者:death05的博客
    推荐:路在脚下
    trim元素的主要功能是可以在自己包含的内容钱加上某些前缀,也可以在其后加上某写后缀,与之对应的属性是prefix和suffix; 可以把包含内容的首部某些内容覆盖,即忽略,也可以把尾部的某些内容覆盖,对应的属性是prefixOverrides和suffixOverrides。以下举例: 1、代码为:
        select * from user 
      <trim prefix="WHERE" prefixoverride="AND |OR">
        <if test="name != null and name.length()>0"> AND name=#    
                {name}</if>
        <if test="gender != null and gender.length()>0"> AND gender=#
               {gender}</if>
      </trim>
    假如说name和gender的值都不为null的话,打印的SQL为:
    
    select * from user where name = 'xx' and gender = 'xx'

    where后不存在and,这是因为prefixoverride="AND |OR"代表去掉第一个and或者是or。

    2、代码为:
        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"> AND gender=#
                 {gender} ,  </if>
      </trim>
    假如说name和gender的值都不为null的话,打印的SQL为:
    update user set name='xx' , gender='xx' where id='x'

    可以参考第一个例子理解。

    3、代码为:
    <insert id="save" parameterType="NoticeEntity">
            INSERT INTO S_NOTICE 
            <trim prefix="(" suffix=")" suffixOverrides=",">
                ID,
                <if test="title != null">TITLE,</if>
                <if test="content != null">CONTENT,</if>
                <if test="noticeStatus != null">NOTICE_STATUS,</if>
                <if test="createdBy != null">CREATED_BY,</if>
                CREATED_TS,
                <if test="lastUpdBy != null">LAST_UPD_BY,</if>
                LAST_UPD_TS,
            </trim>
            <trim prefix="values (" suffix=")" suffixOverrides=",">
                SYS_GUID(),
                <if test="title != null">#{title,jdbcType=VARCHAR},</if>
                <if test="content != null">#{content,jdbcType=VARCHAR},</if>
                <if test="noticeStatus != null">#{noticeStatus,jdbcType=VARCHAR},</if>
                <if test="createdBy != null">#{createdBy,jdbcType=VARCHAR},</if>
                systimestamp,
                <if test="lastUpdBy != null">#{lastUpdBy,jdbcType=VARCHAR},</if>
                systimestamp,
            </trim>
        </insert>

    大家可以自行理解一下。

  • 相关阅读:
    多线程 wait和sleep区别
    什么是分布式系统,如何学习分布式系统
    Mybatis传多个参数(三种解决方案)
    UML中类之间的几种关系
    前缀、中缀、后缀表达式
    数据库连接池c3p0和dbcp
    代码收藏
    spark教程(12)-生态与原理
    spark教程(10)-sparkSQL
    spark教程(九)-操作数据库
  • 原文地址:https://www.cnblogs.com/lxl57610/p/7436570.html
Copyright © 2011-2022 走看看