如何重用带参数的 SQL 片段?

2024-01-08

我打算制作一个片段以便与参数一起重用。

<insert ...>
  <selectKey keyProperty="id" resultType="_long" order="BEFORE">
    <choose>
      <when test="_databaseId == 'derby'">
        VALUES NEXT VALUE FOR SOME_ID_SEQ
      </when>
      <otherwise>
        SELECT SOME_ID_SEQ.NEXTVAL FROM DUAL
      </otherwise>
    </choose>
  </selectKey>
  INSERT INTO ...
</insert>

我可以使用参数创建 SQL 片段吗?

<sql id="selectKeyFromSequence">
  <selectKey keyProperty="id" resultType="_long" order="BEFORE">
    <choose>
      <when test="_databaseId == 'derby'">
        VALUES NEXT VALUE FOR #{sequenceName}
      </when>
      <otherwise>
        SELECT #{sequenceName}.NEXTVAL FROM DUAL
      </otherwise>
    </choose>
  </selectKey>
</sql>

这样我就可以像这样重复使用它们吗?

<insert ...>
  <include refid="...selectKeyFromSequence"/> <!-- How can I pass a parameter? -->
  INSERT INTO ...
</insert>

这可能吗?


从版本 3.3.0 开始,您可以这样做:

<sql id="myinclude">
  from ${myproperty}
</sql>

<include refid="myinclude">
  <property name="myproperty" value="tablename"/>
</include>

请参阅中的 SQL 部分http://www.mybatis.org/mybatis-3/sqlmap-xml.html http://www.mybatis.org/mybatis-3/sqlmap-xml.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何重用带参数的 SQL 片段? 的相关文章

  • 使用子模块创建公共存储库

    我想创建一个包含多个子模块的公共存储库 裸存储库 我希望不同的人克隆这个裸存储库 在任何子模块中进行更改 更新公共存储库 然而 我意识到这是相当痛苦的 我希望我的存储库如下所示 我有四个独立的存储库 a kernel b rootfs c

随机推荐

  • 无法在 XML 文件上 insertBefore

    我正在尝试编写一个脚本来更新 RSS XML 文件 我希望它获取现有文件并将新项目添加到项目列表的顶部 我之前已经将其添加到文件末尾 但现在它根本没有添加新项目 我已经在网上检查过 但仍然无法使其工作 这是我到目前为止所拥有的 rssDoc
  • python 模块存储在哪里?

    我最近开始学习Python 有两个与模块相关的问题 有没有办法获取机器上可用 即安装 的Python模块列表 我使用 Ubuntu Karmic 和 Synaptic 进行包管理 我刚刚安装了一个 python 模块 模块代码实际存储在我的
  • 能让代码分析理解代码契约吗?

    当组合使用代码分析和代码契约时 我收到很多警告 例如 CA1062 http msdn microsoft com en us library ms182182 aspx Microsoft Design 在外部可见的方法 Foo Bar
  • ggmap,使用 coord_cartesian 将所有点推向北方

    正如标题所说 当我添加时coord cartesian到我的 ggmap 它将我所有的点都向上移动 这是一些数据 pricedata lt structure list nodename c CIN WABRIVR 2 CIN WHEATC
  • Julia v0.6 函数内部宏

    有人可以解决我遇到的这个宏错误吗 它只在版本 0 6 中开始发生 mutable struct Foo x Int end macro test myfoo quoteblock quote myfoo x 1 end return quo
  • 如何从另一个数据框中获取值的行列名称

    给定一个范围表 start end name blue green yellow purple a 1 5 654 678 11 15 b 88761 88776 c 1211 1215 38 47 d 89 95 1567 1578 和一
  • 处理 twitter chill 中的案例类(Scala 到 Kryo 的接口)?

    Twitter chill 看起来是一个很好的解决方案 可以解决如何在 Scala 中高效序列化而不需要过多的样板文件的问题 但是 我没有看到任何证据表明他们如何处理案例类别 这是自动工作还是需要做一些事情 例如创建一个零参数构造函数 我有
  • 尝试调用不存在的方法, mongo-java-driver , mongobee

    我正在使用 MongoBee 进行迁移 但出现异常mongoTemplate insertAll 机场 ChangeLog order 001 public class DbChangeLog001 ChangeSet order 001
  • React Navigation V5 有没有办法链接导航?

    假设我有屏幕 A B C 是否可以在屏幕 A 中编写代码从 A 导航到 B 然后立即导航到 C use dispatch https reactnavigation org docs navigation prop dispatch wit
  • Windows Media Player Control (winforms) - 将当前帧捕获为位图?

    我在 winforms 应用程序中使用 Windows Media Player 控件 我想定期将播放帧捕获到位图中并将其保存在本地 WMP 是否会暴露当前播放帧 当然 WMP 库应该公开当前帧 但我已经到处寻找它但无济于事 请帮助 附注我
  • C 中的面向对象

    一组漂亮的预处理器 hack 兼容 ANSI C89 ISO C90 可以在 C 中实现某种丑陋 但可用 面向对象的功能是什么 我熟悉几种不同的面向对象语言 因此请不要回复 学习 C 之类的答案 我读过了 使用 ANSI C 进行面向对象编
  • PHP PDO 事务复制

    我有一个游戏网站 我想更新用户的钱 但是如果我同时使用 2 台电脑 此代码将执行两次 用户将剩下负钱 我怎样才能阻止这种情况发生 这让我疯狂 db getDB sql UPDATE users SET money money money W
  • 如何将 npm 参数传递给 dotnetpublish?

    长话短说 私有 npm 注册表 企业网络 无法从 github 下载 我需要通过 no optional to the npm install that dotnet publish 作为一部分执行 Target PublishRunWeb
  • 在 ajaxSuccess 期间确定响应是否为 JSON 的理想方法

    在我的 ajaxSucess 函数中 我需要查明响应是否为 json 目前我正在这样做 body ajaxSuccess function evt xhr settings var contType xhr getAllResponseHe
  • 在 Internet Explorer 中运行本地“Javascript Dependant”HTML 文件

    当您使用 Internet Explorer 打开本地 HTML 文件 包含 Javascript 时 会出现一条消息 Internet Explorer restricted this webpage from running scrip
  • 该领域已处于写入事务中

    该领域已处于写入事务中 我怎样才能避免这个错误 有没有办法检查领域是否处于写入牵引状态 如果领域处于写事务中 则先关闭 然后再执行其他工作 现在 在收到此错误后 该领域已处于写入事务中 那么与领域相关的其他任务也无法正常工作 这是我遇到的一
  • 什么决定了 System.Net.IPAddress.ToString() 的 IPv6 地址格式?

    内置 Net 方法 System Net IPAddress ToString 对于 IPv6 地址的行为不一致 给定字节数组0xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 在某些环境下 aaaa aaaa aaaa
  • 如何更改 localStorage 项中的单个值?

    我有一组已保存的项目 但我试图在检索它之后并将其传递给我的 php 函数之前更改一个值 是否可以只更改一项 我的项目串如下所示 var args window localStorage getItem localusers start 0
  • 动画 SVG 路径填充自下而上

    我有一个带有多个路径的 SVG 我正在尝试对其填充进行动画处理 我的目标是制作一个动画 从下到上缓慢地填充每个路径中不同颜色的颜色 我尝试过使用线性渐变 但不知道如何将它与路径一起使用 我创建了以下 SVG https jsfiddle n
  • 如何重用带参数的 SQL 片段?

    我打算制作一个片段以便与参数一起重用