mybatis的sql标签
文章目录
- 一、choose 元素
- 二、where, trim, set元素:
-
- 1.where 元素:
- 2. trim 元素:
- 3.set 元素
- 三、foreach元素:
- 四、bind 元素
- 五、include标签
提示:以下是本篇文章正文内容,下面案例可供参考
一、choose 元素
它有点像 Java 中的 switch 语句。
但是这次变为提供了"title"就按"title"查找,提供了"author"就按"author"查找,若两者都没有提供,就返回所有符合条件的BLOG。
choose, when, otherwise元素。代码如下(示例):
<select id="findActiveBlogLike"
resultType="Blog">
SELECT * FROM BLOG WHERE state = ‘ACTIVE’
<choose>
<when test="title != null">
AND title like #{title}
</when>
<when test="author != null and author.name != null">
AND author_name like #{author.name}
</when>
<otherwise>
AND featured = 1
</otherwise>
</choose>
</select>
二、where, trim, set元素:
1.where 元素:
where 元素知道只有在一个以上的if条件有值的情况下才去插入"WHERE"子句。而且,若最后的内容是"AND"或"OR"开头的,where 元素也知道如何将他们去除。
2. trim 元素:
和 where 元素等价的自定义 trim 元素
代码如下(示例):
<trim prefix="WHERE" prefixOverrides="AND |OR ">
...
</trim>
prefixOverrides 属性会忽略通过管道分隔的文本序列(注意此例中的空格也是必要的)。它带来的结果就是所有在 prefixOverrides 属性中指定的内容将被移除,并且插入 prefix 属性中指定的内容。
trim标签有4个属性:
prefix:当trim元素内包含内容时,会给内容增加prefix指定的前缀。
prefixOverrides:当trim元素内包含内容时,会把内容中匹配的前缀字符串去掉。
suffix:当trim元素内包含内容时,会给内容增加suffix指定的后缀。
suffixOverrides:当trim元素内包含内容时,会把内容中匹配的后缀字符串去掉。
3.set 元素
三、foreach元素:
foreach 元素,它允许你指定一个集合,声明可以用在元素体内的集合项和索引变量。它也允许你指定开闭匹配的字符串以及在迭代中间放置分隔符。
foreach 元素可以(动态 SQL 的另外一个常用的必要操作是需要对一个集合进行遍历,通常是在构建 IN 条件语句的时候。)
collection :必填,值为要选代循环的属性名。这个属性值的情况有很多。
item:变量名,值为从法代对象中取出的每一个值。
index :索引的属性名,在集合数组情况下值为当前索引值,当选代循环的对象是Map类型时,这个值为Map 的key (键值)。
open:整个循环内容开头的字符串。
close :整个循环内容结尾的字符串。
separator :每次循环的分隔符
代码如下(示例):
<foreach item="item" index="index" collection="list"
open="(" separator="," close=")">
#{item}
</foreach>
四、bind 元素
bind 元素可以从 OGNL 表达式中创建一个变量并将其绑定到上下文。
<select id="selectBlogsLike" resultType="Blog">
<bind name="pattern" value="'%' + _parameter.getTitle() + '%'" />
SELECT * FROM BLOG
WHERE title LIKE #{pattern}
</select>
五、include标签
include标签引用,可以复用SQL片段
sql标签中id属性对应include标签中的refid属性。
通过include标签将sql片段和原sql片段进行拼接成一个完整的sql语句进行执行。
代码示例:
<sql id="sqlid">
res_type_id,res_type
</sql>
<sql id="base_table">
bu_res_type,pub_res_type
</sql>
<select id="selectbyId" resultType="com.property.vo.PubResTypeVO">
select
<include refid="sqlid"/>
from
<include refid="base_table"/>
</select>
等同于:
<select>
select res_type_id,res_type
from pbu_res_type,pub_res_type
</select>
最后
深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
小编已加密:aHR0cHM6Ly9kb2NzLnFxLmNvbS9kb2MvRFVrVm9aSGxQZUVsTlkwUnc==出于安全原因,我们把网站通过base64编码了,大家可以通过base64解码把网址获取下来。