Question

Existe-t-il un moyen de réutiliser le même resultMap plusieurs fois dans une même requête?

Par exemple, supposons que j'ai un & "; foo &"; résultat:

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

Existe-t-il un moyen de définir une autre carte de résultats qui réutilise ce qui précède pour différentes colonnes? Quelque chose comme ...

<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>
Était-ce utile?

La solution

Presque. Si vous sélectionnez l'ID du Foo dans votre requête, vous pouvez faire en sorte que la carte de résultat Fizz exécute un SELECT pour cet ID, qui utilisera la carte de résultat Foo.

<result property="Foo1" column="bar1Id" select="selectFoo"/>

(En supposant que vous ayez défini une selectFoo requête.) Mais cela est extrêmement lent avec des ensembles de résultats volumineux, car il effectue un SELECT supplémentaire pour chaque ligne.

iBATIS a une solution à ce problème dans le cas typique où vous avez un objet composite qui contient divers autres objets. Tout d’abord, vous définissez une requête qui joint vos tables, puis vous pouvez utiliser fooMap pour renseigner une Foo:

.

<result property="Foo1" resultMap="fooMap"/>

Mais vous ne pouvez pas utiliser cette carte de résultats deux fois pour deux Foos différentes, car la carte de résultats spécifie certains noms de colonne. Vous pouvez utiliser une autre technique, cependant:

<result property="foo1.bar" column="foo1bar"/>
<result property="foo2.bar" column="foo2bar"/>

Plus de détails à la page 35 du manuel iBatis Datamapper.

Autres conseils

vous pouvez utiliser des cartes de résultats, qui étendent une autre carte de résultats par exemple

<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>

plus d'informations: http://ibatis.apache.org/docs/dotnet /datamapper/ch03s05.html

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top