Java 对不同列名重用resultMap

Java 对不同列名重用resultMap,java,jdbc,ibatis,datamapper,ibatis.net,Java,Jdbc,Ibatis,Datamapper,Ibatis.net,是否有一种方法可以在一个查询中多次重用同一个resultMap 例如,假设我有一个“foo”结果映射: <resultMap id="foo" class="Foo"> <result property="Bar" column="bar" /> </resultMap> 有没有一种方法可以定义另一个resultMap,对不同的列重复使用上述内容?类似于 <resultMap id="fizz"class="Fizz"> <re

是否有一种方法可以在一个查询中多次重用同一个resultMap

例如,假设我有一个“foo”结果映射:

<resultMap id="foo" class="Foo">
  <result property="Bar" column="bar" />
</resultMap>

有没有一种方法可以定义另一个resultMap,对不同的列重复使用上述内容?类似于

<resultMap id="fizz"class="Fizz">
  <result property="Foo1" column="bar=bar1" resultMapping="foo" />
  <result property="Foo2" column="bar=bar2" resultMapping="foo" />
  <result property="Foo3" column="bar=bar3" resultMapping="foo" />
</resultMap>

差不多了。如果在查询中选择Foo的ID,那么可以让Fizz结果映射对该ID执行select,这将使用Foo结果映射

(假设您定义了一个
selectFoo
query。)但是对于大的结果集,这是非常慢的,因为它对每一行都进行额外的选择

iBATIS针对典型情况提供了此问题的解决方案,其中您有一个包含各种其他对象的复合对象。首先,定义一个联接表的查询,然后可以使用
fooMap
填充
Foo

但是不能对两个不同的
Foos
使用该结果映射两次,因为结果映射指定了某些列名。不过,您可以使用另一种技术:



更多详细信息请参见iBatis数据映射器手册第35页。

。如果在查询中选择Foo的ID,那么可以让Fizz结果映射对该ID执行select,这将使用Foo结果映射

(假设您定义了一个
selectFoo
query。)但是对于大的结果集,这是非常慢的,因为它对每一行都进行额外的选择

iBATIS针对典型情况提供了此问题的解决方案,其中您有一个包含各种其他对象的复合对象。首先,定义一个联接表的查询,然后可以使用
fooMap
填充
Foo

但是不能对两个不同的
Foos
使用该结果映射两次,因为结果映射指定了某些列名。不过,您可以使用另一种技术:



更多详细信息请参见iBatis数据映射器手册第35页。

您可以使用resultmaps,它扩展了另一个resultmap e、 g



更多信息:

您可以使用resultmaps,它扩展了另一个resultmap e、 g



更多信息:

这太不幸了。在我的例子中,我想重用的resultMap非常简单,我只在一个查询中找到了它,所以我将保持它的简单性,现在只是喘息复制粘贴。这很不幸。在我的例子中,我想重用的resultMap非常简单,我只在一个查询中找到了它,所以我将保持它的简单性,现在只需喘息复制粘贴。
<resultMap id="document" class="Document"> 
  <result property="Id" column="Document_ID"/>
  <result property="Title" column="Document_Title"/>
  <discriminator column="Document_Type" type="string"/>
  <subMap value="Book" resultMapping="book"/>
  <subMap value="Newspaper" resultMapping="newspaper"/>
</resultMap>

<resultMap id="book" class="Book" extends="document"> 
  <property="PageNumber" column="Document_PageNumber"/>
</resultMap>