动态SQL之标签
本节主要讲了动态SQL的几个标签:where set trim
where: 检出where语句的最前面是否含有AND和一个空格 或者 or和一个空格 ,如果有的话删除
set: 检出set的最后是否有逗号 ,如果有,则清空
trim:可用来替换where和set
foreach:遍历集合(array,list,key)
CDATA:不支持标签,用于有<等需要<时
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>
<!-- && 不推荐记忆 << -->
<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>
<!-- && 不推荐记忆 << -->
<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之标签的更多相关文章
- Mybatis学习笔记之---动态sql中标签的使用
动态Sql语句中标签的使用 (一)常用标签 1.<if> if标签通常用于WHERE语句中,通过判断参数值来决定是否使用某个查询条件, 他也经常用于UPDATE语句中判断是否更新某一个字段 ...
- 动态SQL常用标签
动态 SQL 目的:为了摆脱在不同条件拼接 SQL 语句的痛苦 在不同条件在生成不同的SQL语句 本质上仍然是SQL语句,不过是多了逻辑代码去拼接SQL,只要保证SQL的正确性按照格式去排列组合 可以 ...
- 动态SQL各个标签作用以及注意事项详解
创建com.mybatis包,包含:UserMapper.xml和mybatis-config.xml UserMapper.xml代码: <?xml version="1.0&quo ...
- MyBatis动态SQL foreach标签实现批量插入
需求:查出给定id的记录: <select id="getEmpsByConditionForeach" resultType="com.test.beans.Em ...
- Mybatis 最强大的动态sql <where>标签
<select id="findActiveBlogLike" resultType="Blog"> SELECT * FROM BLOG WHER ...
- [刘阳Java]_MyBatis_动态SQL标签用法_第7讲
1.MyBatis的动态SQL是基于OGNL表达式的,它可以帮助我们方便的在SQL语句中实现某些逻辑. 2.MyBatis中用于实现动态SQL的元素主要有 if choose(when,otherwi ...
- Mybatis:缓存,动态SQL,注解SQL以及动态标签使用
1 转义字符 字符 转义 描述 < < 小于 <= <= 小于等于 > > 大于 >= >= 大于等于 <> <> 不等于 &a ...
- Mybatis系列全解(八):Mybatis的9大动态SQL标签你知道几个?提前致女神!
封面:洛小汐 作者:潘潘 2021年,仰望天空,脚踏实地. 这算是春节后首篇 Mybatis 文了~ 跨了个年感觉写了有半个世纪 ... 借着女神节 ヾ(◍°∇°◍)ノ゙ 提前祝男神女神们越靓越富越嗨 ...
- 【ibatis】IBatis的动态SQL的写法
Ⅰ .动态SQL的写法 开始 <dynamic 条件成立时前面要加的字符串 prepend ="字符串"> prepend="字符串" 判断条件的对 ...
随机推荐
- mySQL-CRUD操作(数据库的增删改查)练习题
一.设有一数据库,包括四个表:学生表(Student).课程表(Course).成绩表(Score)以及教师信息表(Teacher).四个表的结构分别如表1-1的表(一)~表(四)所示,数据如表1-2 ...
- RNA seq 两种计算基因表达量方法
两种RNA seq的基因表达量计算方法: 1. RPKM:http://www.plob.org/2011/10/24/294.html 2. RSEM:这个是TCGAdata中使用的.RSEM据说比 ...
- 转载几篇关于GNU autotools的文章
http://www.laruence.com/2009/11/18/1154.html http://www.ibm.com/developerworks/cn/linux/l-makefile/ ...
- unable to open sync connection
有些时候,在你向连接好的Android机器中按照程序时会遭遇失败,logcat提示“unable to open sync connection”. 一般情况下,重启手机几乎肯定可以解决这个问题. 如 ...
- Java-->把txt中的所有字符按照码表值排序
--> List 列表中的自动添加的多余空间长度该怎么去除呢?...(已解决,是char 数组中的空字符) package com.dragon.java.filesort; import ja ...
- 阅读《构建之法》第八、九、十章有感和Sprint总结
1.阅读<构建之法>读后感 第八章:需求分析 需求分析,我觉得需求分析挺重要的,一个需求分析是指对要解决的问题进行详细的分析,弄清楚问题的要求,包括需要输入什么数据,要得到什么结果,最后应 ...
- CSS基础知识点(二)——居中
水平居中 (1) 对于块级元素,最常用的自适应水平居中为:margin:0px auto; (与 margin:auto; 效果相同) (2) 对于行内元素(a, img, input等),最常用的水 ...
- Post和get乱码
post 在web.xml中添加 <filter> <filter-name>CharacterEncodingFilter</filter-name> <f ...
- 不容易系列之(3)—— LELE的RPG难题
有排成一行的n个方格,用红(Red).粉(Pink).绿(Green)三色涂每个格子,每格涂一色,要求任何相邻的方格不能同色,且首尾两格也不同色.求全部的满足要求的涂法. 思路:运用递归算法. a[1 ...
- activiti 中的签收与委托 操作
原文:http://my.oschina.net/acitiviti/blog/350957 先看看activiti中关于TASK的数据库表: 其中有两个字段:OWNER_,ASSIGNEE_ 这两个 ...