从单个ibatis查询返回多个类型

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

我的搜索查询需要一起排序和显示加油站和杂货店。 我正在考虑使用SQL联合并将不适用的字段设置为0或null。 但是,我真的很难知道如何使用ibatis(因为两个对象的类型不同):

 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中有更多的字段(加上select字段中每个适用字段的where子句)。

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

谢谢

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

ibatis鉴别器将在gasStation和groceryStore类之间进行选择。

       

然后,我将编辑我的查询以在选择字段中添加storeType,并为groceryStore和gasStation创建resultMap。

注意 – 为了解决这个问题,我读了这个stackoverflow问题 。