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>

    大家可以自行理解一下。

  • 相关阅读:
    Running as a packaged application--- -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=8000,suspend=n
    Druid 专题
    java8中的localdate和localtime用法举例
    Spring处理跨域请求
    数据库版本管理工具Flyway——基础篇
    QQ邮箱开启SMTP服务的步骤
    QQ邮箱如何设置SMTP代理收发邮件
    SMTP协议简介
    Error:Execution failed for task ':app:dexDebug'. > com.android.ide.common.process.ProcessException
    Android客户端与服务器交互中的token
  • 原文地址:https://www.cnblogs.com/lxl57610/p/7436570.html
Copyright © 2011-2022 走看看