Мне нужно иметь отображение наследования в ibatis. Из документации Ibatis я узнал, что мы можем сравнить значение столбца для вызова подкарт в теге дискриминатора resultMap следующим образом:
<resultMap id="map">
<discriminator javaType="java.lang.Integer" column="type">
<subMap resultMap="submap1" value="1" />
<subMap resultMap="submap2" value="2"/>
<subMap resultMap="submap3" value="3"/>
</discriminator>
</resultMap>
В приведенной выше карте результатов вложенные карты отображают столбцы на другой объект.
Но я хочу сравнить значение столбца в самом операторе select, чтобы получить необходимые столбцы. кое-что вроде как:
<select id="load" resultMap="map">
select mt.id,mt.name, mt.type
<here we have to check the value of type column returned dynamically>
<if type = "1">
table1.column1, table1.column2 ... table1.columnN
</if>
<if type = "2">
table2.column1, table2.column2 ... table2.columnN
</if>
</here>
from main_table mt
LEFT OUTER JOIN TABLE1 table1 ON mt.id=table1
LEFT OUTER JOIN TABLE2 table2 ON mt.id=table2
where mt.id=#value#
</select>
Это всего лишь алгоритм для моего требования. Возможно ли это на Ибатисе?
Надеюсь, вы понимаете мою проблему. Если вопрос неясен, я с радостью отредактирую это, чтобы вы поняли.
Заранее спасибо.