当前位置: 首页 > 知识库问答 >
问题:

如何查询MyBatis片段的静态参数的值?

贡可人
2023-03-14

在MyBatis中是否可以将静态参数化的 可重用片段与 动态SQL结合起来?

如何查询MyBatis 片段的静态(=不是来自Java方法,而是直接输入到映射器XML中)参数的值?

问题不是如何比较MyBatis中的string值,而是如何查询静态参数的值。

我试图用静态参数source调用可重用元素select-part

我尝试了各种编写 条件的方法,但都失败了:

  • active'”">
  • <如果test=“${source}=='active'”>

简化的映射器XML如下所示:

<sql id="select-part">
    SELECT d.field1, d.field2, ..., d.fieldN
    <if test="${source} == 'active'">
        , null AS archivedDate
        FROM active_table d
    </if>
    <if test="${source} == 'archive'">
        , d.achived AS archivedDate
        FROM archive_table d
    </if>
    LEFT JOIN ...
    ORDER BY ...
</sql>

<select id="fetchData" resultMap="Data">
    <include refid="select-part">
        <property name="source" value="active"/>
    </include>
    UNION ALL
    <include refid="select-part">
        <property name="source" value="archive"/>
    </include>
</select>

共有1个答案

傅奕
2023-03-14

不幸的是,当前的实现有一个“bug”,它没有替换SQL片段中XML属性中的占位符。只替换文本节点中的占位符。我认为这是实现中的一个bug,应该予以修复。我已经在我的fork:https://github.com/kmoco2am/mybatis-3中实现了这一点,我将尝试推进到原始存储库中。

 类似资料:
  • 我在活动中定义了一个静态ArrayList,其中有几个片段使用它。此ArrayList有时会被修改。 这是不好的做法吗?我应该改用bundles/SQLite吗?

  • 本文向大家介绍MyBatis带参查询的方法详解,包括了MyBatis带参查询的方法详解的使用技巧和注意事项,需要的朋友参考一下 #{}占位符 类似于jdbc中通过PreparedStatement进行操作的方式, 会将sql语句中需要参数的位置使用?进行占位,后续由传进来的参数进行参数的绑定。?处绑定的都是值,不能指定表的列,转换成sql时表名会被当成字符串,会出错,防止sql注入。 简单类型参数

  • 问题内容: 我在客户端上为我的应用程序使用react和react-router。我似乎无法弄清楚如何从如下网址获取以下查询参数: 我的路线如下所示(我知道该路线完全错误): 我的路线工作正常,但我不确定如何格式化路径以获取所需的参数。感谢任何帮助! 问题答案: 注意:复制/粘贴评论。确保喜欢原始帖子! 编写es6并使用react 0.14.6 / react-router 2.0.0-rc5。我使

  • 我有一个基本的rest控制器,可以获取参数。 如果查询字符串包含我没有定义的参数,我如何拒绝连接? 当前,在调用此url时,只使用id执行该方法,而忽略未知的参数。一般来说,这很好,但我如何验证它们,以防返回HTTP状态码?

  • 在我的AppMapper.xml中,我有一个查询,如: 假设它将返回姓名,地址,年龄,职业,这些都是字符串。我用这个对吗? *我正在询问是使用resultType=String还是使用resultMap“PersonProfileObj” 我的理解正确吗?