当前位置: 首页 > news >正文

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解码把网址获取下来。

相关文章:

  • 面试题-参加生日宴会的最多人数
  • 开发运维-常用远程桌面开源软件
  • 【JAVA】SrpingMVC(上)—— 注解请求与响应
  • ZZCMS201910代码审计
  • HTTPDNS
  • ApacheDBUtils的使用
  • 补涨行情的模式如何做?(几天几板模式)
  • 基于Levy飞行策略的改进樽海鞘群算法-附代码
  • 【CSDN高校社区无锡学院】# 新学期,新Flag # 开学季征文活动
  • Linux安装zlib、libpng、freetype给交叉编译工具链使用
  • 深度讲解指针的笔试题目
  • Python 环境安装系统教程——PyCharm
  • 都这麽大了还不快了解防火墙(1)?
  • Code For Better 谷歌开发者之声——谷歌Web工具包(GWT)
  • c++图解内存管理
  • -------------------- 第二讲-------- 第一节------在此给出链表的基本操作
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • 【面试系列】之二:关于js原型
  • 11111111
  • Gradle 5.0 正式版发布
  • input的行数自动增减
  • js中forEach回调同异步问题
  • magento 货币换算
  • open-falcon 开发笔记(一):从零开始搭建虚拟服务器和监测环境
  • sessionStorage和localStorage
  • SQL 难点解决:记录的引用
  • supervisor 永不挂掉的进程 安装以及使用
  • webpack+react项目初体验——记录我的webpack环境配置
  • 前端代码风格自动化系列(二)之Commitlint
  • 前端工程化(Gulp、Webpack)-webpack
  • 吐槽Javascript系列二:数组中的splice和slice方法
  • 王永庆:技术创新改变教育未来
  • 项目实战-Api的解决方案
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • 从如何停掉 Promise 链说起
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • # 透过事物看本质的能力怎么培养?
  • #define、const、typedef的差别
  • #if #elif #endif
  • (阿里云万网)-域名注册购买实名流程
  • (超详细)语音信号处理之特征提取
  • (二)fiber的基本认识
  • (附源码)ssm基于微信小程序的疫苗管理系统 毕业设计 092354
  • (附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366
  • (深入.Net平台的软件系统分层开发).第一章.上机练习.20170424
  • (一)pytest自动化测试框架之生成测试报告(mac系统)
  • (原)本想说脏话,奈何已放下
  • (转)菜鸟学数据库(三)——存储过程
  • (轉)JSON.stringify 语法实例讲解
  • (最全解法)输入一个整数,输出该数二进制表示中1的个数。
  • .htaccess配置重写url引擎
  • .NET : 在VS2008中计算代码度量值
  • .NET 解决重复提交问题