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>

大家可以自行理解一下。

时间: 2024-10-09 13:58:43

Mybatis中运用小技巧 trim标签的使用的相关文章

lua学习笔记11:lua中的小技巧

lua中的小技巧,即基础lua语言本身的特种,进行一个些简化的操作 一 巧用or x = x or v 等价于: if not x then x = v end 如果x为nil或false,就给他赋值为 二 三元运算符实现 a and b or c 类似C语言: a ? b : c and 的运算由优先级高于or lua学习笔记11:lua中的小技巧,布布扣,bubuko.com

Linux以及Android开发中的小技巧和长繁命令记录收集

不断更新收集中.... 2014071743 ssh以nx_guest的身份登录到172.24.221.137,然后在172.24.221.137与172.24.61.252的8080端口建立网络连接,同时创建端口为5678的本地代理服务 ssh -C -f -N -o 'TCPKeepAlive=yes' -L 5678:172.24.61.252:8080 [email protected] 反编译android下的二进制程序 ./prebuilts/gcc/linux-x86/arm/ar

知识点回顾-27个iOS开发中的小技巧

★27个iOS开发中的小技巧 1.不想让TableView显示无用的Cell分割线怎么办? self.tableView.tableFooterView = [[UIView alloc] init]; 2.自定义了leftBarbuttonItem左滑返回手势失效了怎么办? self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithImage:img style:UIBarButtonItemStylePl

python中的小技巧

1.求1~100以内的素数 prime=filter(lambda x: not [x%i for i in range(2,x) if x%i==0], range(2,101))#列表推导,一行搞定.print prime 2.求字符串子串 s='hauifnefldmfp'[s[i:i+n] for i in range(len(s)) for n in range(1, len(s)-i+1)] 3.求任意字符串中,所有符合ab 类型的子串: eg:s ='aabbbb123456jji

jmeter中使用小技巧,随笔(4)

最近在工作中,对jmeter实践的点滴的记录,这里分享交流,不一定正确,仅供参考和讨论,有想法的欢迎留言.谈论,手机上图片如果不清晰,请点击[阅读原文]查看. 技巧1:中文url编码问题 问题:我们抓包下来,发现参数值是中文的乱码了,如果我们改成中文,会导致在页面数据是乱码的,如图 分析: 1.查看数据,发现所谓的乱码其实是url编码,我们放在fiddler的的小工具里解码下,就ok了 2.但是我们不可能每次输入,将中文手动转码,放到参数里面,我们必须实现jmeter自动转码 解决方案: 1.j

mybatis 中 sql 映射文件 select 标签以及 入 resultMap 标签的应用

1.自定义某个 javabean 的封装规则: 注:可以看到,select 标签中引用了 定义好的 resultMap 的值.resultMap 标签中的 type 为javabean 类型,id 为唯一标识.id 子标签定义主键(这样定义底层会有优化.)column 属性为字段名,property 属性为字段值. 注:可以看到测试结果没有出现问题,说明代码没有错误. 2.自定义某个 javabean 的级联属性封装: a.准备工作:mysql 数据库中,在之前 tbl_employees 表的

iOS中TableView小技巧

摘要: TableView是ios开发中经经常使用到的控件,这里统一记录一下开发中遇到的经常使用小技巧,不断探索更新.也希望大家能够告诉我很多其它经常使用的小技巧啦~一起进步 1.去除多余的列表线条 原始的TableView在没有数据的行也会显示一条条的线条,不太美观,用一行代码能够解决,一般放在ViewDidLoad中 self.tableView.tableFooterView = [[UIView alloc] init]; 详细原理还没弄懂.知道的麻烦不吝赐教一下~ 2.选中列表条目后取

Python中一些小技巧

正常的是通过手动输入对应的Python的完整的文件名,即,对于此处的demoRunPythonUnderWindows.py,一个个字母的输入 不过,此处有个小技巧,可以利用Windows(和Linux中通用的)Tab键,然后会自动显示出你当前目录的文件: 如果当前文件夹有多个文件,多次按Tab键,会在多个文件之间切换.此处就一个文件,所以通过按Tab键,就可以一下子就显示出对应的整个文件名了

【js】中的小技巧

本文主要介绍一些JS中用到的小技巧 1. 类型强制转换   1.1 string强制转换为数字 可以用*1来转化为数字(实际上是调用.valueOf方法) 然后使用Number.isNaN来判断是否为NaN,或者使用 a !== a 来判断是否为NaN,因为 NaN !== NaN '32' * 1            // 32 'ds' * 1            // NaN null * 1            // 0 undefined * 1    // NaN 1  * {