当前位置: 首页 > 面试题库 >

MyBatis / iBatis-可重用的SQL片段在单独的SQL Map文件中?

曹骞仕
2023-03-14
问题内容

我想将多个SQL Map
XML文件使用的sql片段放在单独的文件中。目前,<sql>具有这些片段的元素与其他元素(例如<select>,)一起位于一个映射器中,这使得它们很难找到。

我可以有一个仅定义一些<sql>元素并且不用于生成接口实现的映射器吗?该映射器的正确名称空间是什么?

这是带有框架的SQL Map文件:

<mapper namespace="com.company.project.dao.someDao">

    <sql id="whereDate">
        WHERE date(`time`) BETWEEN #{startDate} AND #{endDate}
    </sql>

    <sql id="someOtherSqlFragment">
        ...
    </sql>

    <select id="getSomeData" resultType="SomeClass" parameterType="DateParam" >
        SELECT some_column, another_column          
        FROM some_table
        <include refid="whereDate"/>
        <include refid="otherSqlFragment"/>
    </select>

</mapper>

我想将这样的元素分开:
第一个Sql Map文件:

<mapper namespace="com.company.project.dao.???">

    <sql id="whereDate">
        WHERE date(`time`) BETWEEN #{startDate} AND #{endDate}
    </sql>

    <sql id="someOtherSqlFragment">
        ...
    </sql>

</mapper>

第二个Sql Map文件:

<mapper namespace="com.company.project.dao.someDao">

    <select id="getSomeData" resultType="SomeClass" parameterType="DateParam" >
        SELECT some_column, another_column          
        FROM some_table     
        <include refid="whereDate"/>
        <include refid="otherSqlFragment"/>
    </select>

</mapper>

问题答案:

这正是我以前从事的项目所做的。通用片段在单独的文件中定义,该文件包含在主iBATIS配置文件中。

我们在名为root的根目录下有一个SQL映射文件,Core.ism.xml如下所示:

<sqlMap namespace="Core" >

    <sql id="fragmentBasicAuditFieldNames">
        CreateDate, CreateUser, 
        UpdateDate, UpdateUser, UpdateCode 
    </sql>

    ....

然后,在我们的SQL映射文件中,我们可以像这样引用它:

<include refid="Core.fragmentBasicAuditFieldNames" />

希望我已经理解您的要求!



 类似资料:
  • 我有一个,它显示了一个包含的。我正在使用从SQL加载数据,所有数据都显示得很好。 我想知道的是,我的工具栏中有一个搜索图标在中膨胀,当用户单击它并输入数据时,它应该在中的中进行筛选。 我已经在中实现了,还实现了和方法。我只是不知道如何直接使用中的搜索来过滤中的。

  • 问题内容: 就像在口吃的情况下,如果文本为“ dean”且乘数为3,则由提供的乘数指定的次数,结果将为“ dddeeeaaannn”。 没有得到所需的结果。我究竟做错了什么? 问题答案: 您只需要为字符串中的每个字符添加n次字符串本身。您需要遍历字符串,并将每个字符追加n次。 另外,另一种解决方案是使用正则表达式。

  • 两个(切换)按钮是否可能在片段之间具有同步行为?即:当按钮A在片段A中打开时,我希望按钮B在片段B中的外观也显示为打开。 我该怎么做呢?最终目标是在任何一个片段上都有一个全局按钮。

  • 我在一个详细视图中使用ViewPager和FragmentPagerAdapter。这意味着我有一个项目列表,一个屏幕显示单个项目的细节。但用户可以左右滑动来浏览所有项目。这遵循了谷歌滑动视图的指导方针。 但是我想知道一件事。在ListView中,每一行的视图都会被重用。一旦一行从屏幕上滚动出来,它就会被重用为绑定到ListView的适配器的getView方法的转换器视图参数。但是这种重用行为似乎

  • 我使用IBM的APIConnect来创建一些API。我一直试图编辑我的API的YAML定义来创建对属性的引用,这样我就可以将它们具体化。但到目前为止,我遇到了引用的问题。它们或者不根据“API Connect Swagger extensions schema API定义”或者“IBM Swagger Version 2.0 schema API定义”进行验证。 以下是我尝试的两个参考:- 引用安