mybatis的sql标签

2年前 (2022) 程序员胖胖胖虎阿
250 0 0

文章目录

  • 一、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>

版权声明:程序员胖胖胖虎阿 发表于 2022年9月28日 上午10:24。
转载请注明:mybatis的sql标签 | 胖虎的工具箱-编程导航

相关文章

暂无评论

暂无评论...