本节主要讲了动态SQL的几个标签:where set trim

where: 检出where语句的最前面是否含有AND和一个空格 或者 or和一个空格 ,如果有的话删除

set: 检出set的最后是否有逗号 ,如果有,则清空

trim:可用来替换where和set

foreach:遍历集合(array,list,key)

CDATA:不支持标签,用于有<等需要&lt;时

where 和 if 条件查询

<select id="whereMore01" resultType="com.shxt.model.User">
  SELECT
  *
  FROM user
  <where>
    <if test="user_name!=null and user_name.length() >0">
      AND user_name like CONCAT(#{user_name},'%')
    </if>
    <!-- &amp;&amp; 不推荐记忆 &lt;< -->
    <if test="account!=null and account.length() > 0">
      AND account = #{account}
    </if>
    </where>
</select>

set 和 if 更新对象信息

<update id="update01" parameterType="com.shxt.model.User" >
  UPDATE user
  <set>
    <if test="account!=null">
      account =#{account},
    </if>
    <if test="password!=null">
      password = #{password},
    </if>
    <if test="user_name!=null">
      user_name =#{user_name},
    </if>

  </set>
  WHERE
  id = #{id}
</update>

trim替换

  替换条件查询where

<select id="whereMore02" resultType="com.shxt.model.User">
  SELECT
  *
  FROM user
  <trim prefix="WHERE" prefixOverrides="AND |OR ">
    <if test="user_name!=null and user_name.length() >0">
      AND user_name like CONCAT(#{user_name},'%')
    </if>
    <!-- &amp;&amp; 不推荐记忆 &lt;< -->
    <if test="account!=null and account.length() > 0">
      AND account = #{account}
    </if>
  </trim>
</select>

  替换更新操作set

<update id="update02" parameterType="com.shxt.model.User" >
  UPDATE user
  <trim prefix="set" suffixOverrides=",">
    <if test="account!=null">
      account =#{account},
    </if>
    <if test="password!=null">
      password = #{password},
    </if>
    <if test="user_name!=null">
      user_name =#{user_name},
    </if>
  </trim>
  WHERE
  id = #{id}
</update>

foreach遍历in(2,3,4,5)

<select id="collectionTest" resultType="User">

  select * from user where id in

  <foreach collection="list|array|key" index = "index" item="us" open="(" close=")" separator=",">

    #{us}

  </foreach>

</select>

CDATA:查询小于id的集合

  <![CDATA[

    select * from user where id < #{id}

  ]]>

动态SQL之标签的更多相关文章

  1. Mybatis学习笔记之---动态sql中标签的使用

    动态Sql语句中标签的使用 (一)常用标签 1.<if> if标签通常用于WHERE语句中,通过判断参数值来决定是否使用某个查询条件, 他也经常用于UPDATE语句中判断是否更新某一个字段 ...

  2. 动态SQL常用标签

    动态 SQL 目的:为了摆脱在不同条件拼接 SQL 语句的痛苦 在不同条件在生成不同的SQL语句 本质上仍然是SQL语句,不过是多了逻辑代码去拼接SQL,只要保证SQL的正确性按照格式去排列组合 可以 ...

  3. 动态SQL各个标签作用以及注意事项详解

    创建com.mybatis包,包含:UserMapper.xml和mybatis-config.xml UserMapper.xml代码: <?xml version="1.0&quo ...

  4. MyBatis动态SQL foreach标签实现批量插入

    需求:查出给定id的记录: <select id="getEmpsByConditionForeach" resultType="com.test.beans.Em ...

  5. Mybatis 最强大的动态sql <where>标签

    <select id="findActiveBlogLike" resultType="Blog"> SELECT * FROM BLOG WHER ...

  6. [刘阳Java]_MyBatis_动态SQL标签用法_第7讲

    1.MyBatis的动态SQL是基于OGNL表达式的,它可以帮助我们方便的在SQL语句中实现某些逻辑. 2.MyBatis中用于实现动态SQL的元素主要有 if choose(when,otherwi ...

  7. Mybatis:缓存,动态SQL,注解SQL以及动态标签使用

    1 转义字符 字符 转义 描述 < < 小于 <= <= 小于等于 > > 大于 >= >= 大于等于 <> <> 不等于 &a ...

  8. Mybatis系列全解(八):Mybatis的9大动态SQL标签你知道几个?提前致女神!

    封面:洛小汐 作者:潘潘 2021年,仰望天空,脚踏实地. 这算是春节后首篇 Mybatis 文了~ 跨了个年感觉写了有半个世纪 ... 借着女神节 ヾ(◍°∇°◍)ノ゙ 提前祝男神女神们越靓越富越嗨 ...

  9. 【ibatis】IBatis的动态SQL的写法

    Ⅰ .动态SQL的写法 开始 <dynamic 条件成立时前面要加的字符串 prepend ="字符串"> prepend="字符串" 判断条件的对 ...

随机推荐

  1. 快速构建express项目

    构建node项目 github地址 https://github.com/haoyongliang/quickly-create-node-project.git 创建最基本的node项目 1.全局安 ...

  2. html5的结构标记与内联元素

    <article>标签定义外部的内容(结构元素)<section>标签定义文档中的节(section,区段).比如章节,页眉,页脚或文档中的其他部分(结构元素)<nav& ...

  3. MongoDB副本集搭建及备份恢复

    一.MongoDB副本集(repl set)介绍 早起版本使用master-slave,一主一从和MySQL类似,但slave在此架构中为只读,当主库宕机后,从库不能自动切换为主: 目前已经淘汰了ma ...

  4. 新浪代码部署手册 git管理工具

    目前新浪云上的应用支持通过Git和SVN来部署代码. Git仓库地址 https://git.sinacloud.com/YOUR_APP_NAME SVN仓库地址 https://svn.sinac ...

  5. HDU-4521 小明系列问题――小明序列(线段树)

    题目大意:求LIS,但是要求LIS中相邻的两个元素之间的距离要大于d. 题目分析:线段树.节点(l,r)保存信息为LIS的最后一个元素落在[l,r]之间的最大长度.从第d+2个元素开始查询更新操作,但 ...

  6. Git连接Github

    环境:Ubuntu Server 12.04 安装Git apt-get install git git-core 配置本机Git git config --global user.name &quo ...

  7. iOS 导出 ipa 包时 三个选项的意义

    OS 导出 ipa 包时 三个选项的意思 如图  在 iOS 到处 ipa包的时候 会有三个选项 Save for iOS App Store Deployment Save for Ad Hoc D ...

  8. 【P1326】超级教主

    DP优化 原题: LHX教主很能跳,因为Orz他的人太多了.教主跳需要消耗能量,每跳1米就会消耗1点能量,如果教主有很多能量就能跳很高.教主为了收集能量,来到了一个神秘的地方,这个地方凡人是进不来的. ...

  9. 论文阅读之 Inferring Analogous Attributes CVPR 2014

    Inferring Analogous Attributes     CVPR  2014 Chao-Yeh Chen and Kristen Grauman Abstract: The appear ...

  10. PHP-通过strace定位故障原因

    俗话说:不怕贼偷,就怕贼惦记着.在面对故障的时候,我也有类似的感觉:不怕出故障,就怕你不知道故障的原因,故障却隔三差五的找上门来. 十一长假还没结束,服务器却频现高负载,Nginx出现错误日志: co ...