gpt4 book ai didi

java - 从单个 ibatis 查询返回多种类型

转载 作者:太空宇宙 更新时间:2023-11-04 10:53:06 25 4
gpt4 key购买 nike

我有一个搜索表单,需要包含两个不同表的结果。这些表彼此没有关系,也没有关系。在我的示例场景中,我们有加油站和杂货店。杂货店表可能具有诸如 freezeSize、productStorage、numberOfCarts 等属性。加油站表可能有gasTankSizeInGallons、windowCleanerInGallons 等...这两个表之间有一些共享字段(即 - numberOfEmployees、squareFeetOfStoreSpace、numberOfShelves 等...)。

我的搜索查询需要对加油站和杂货店进行排序和显示。我正在考虑使用 SQL 联合并将不适用的字段设置为 0 或 null。然而,我真的很困惑如何使用 ibatis 来做到这一点(因为这两个对象属于不同的类型):

<select id="searchQuery" parameterClass="java.util.Map" resultClass="????????????????">
SELECT
storeName, storeCity, storeState, numberOfCarts, freezerSize, 0 gasTankSizeInGallons, 0 windowCleanerInGallons
FROM
grocery_stores
UNION
SELECT
storeName, storeCity, storeState, 0 numberOfCarts, 0 freezerSize, gasTankSizeInGallons, windowCleanerInGallons
FROM
gas_stations
ORDER BY storeState, storeCity, storeName
</select>

注意 - 实际查询在 order by 中有更多内容,它是分页的,并且 select 中有更多字段(加上 select 字段中每个适用字段的 where 子句)。

上述查询的 resultClass 应该是什么?我有一个 GroceryStore 和 GasStation 类,它们都从 Store 扩展。但是,Store 没有许多 GroceryStore 和 GasStation 特定字段。我可以执行两个单独的查询,但结果的排序必须在 java 中完成,而且效率很低,因为它需要首先加载大量数据。

谢谢

最佳答案

经过多次谷歌搜索,我找到了自己问题的答案。

ibatis 判别器将在 GasStation 类和杂货店类之间进行选择。

<resultMap id="searchResultMap" class="Store">
<discriminator column="storeType" javaType="java.lang.String">
<subMap value="grocery" resultMap="groceryStoreMap"/>
<subMap value="gasStation" resultMap="gasStationMap"/>
</discriminator>
</resultMap>

然后,我将编辑查询以在选择字段中添加 storeType,并为杂货店和加油站创建 resultMap。

注意 - 为了弄清楚这一点,我读了 this stackoverflow question .

关于java - 从单个 ibatis 查询返回多种类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47598230/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com