你好 StackOverflowers,
MyBatis resultMap 有一些我不明白的地方。
我正在研究的模型正在更新。我们决定创建一个新的对象图来反映我们未来的数据库模式(当前的模式很糟糕)。
总结一下我们的问题,这里有一个简单的例子:与表 SITE 相关的当前对象是org.example.model.SiteModel
。我们创建了一个名为 的新对象org.example.entity.Site
。(包名是临时的)。
现在的目标是使用由 MyBatis 开发的现有 SQL 请求,并添加一个新的 ResultMap 链接到我们方法的返回类型。
这是一个例子:
/**
* Get all site defined as template.
*/
@Select("SELECT * FROM SITE WHERE ISTEMPLATE = 'True'")
@ResultMap({"siteResMap" , "siteResultMap"})
@Options(statementType = StatementType.CALLABLE)
<T> List<T> findTemplates();
然后,在一个 XML 配置文件中,我们定义了以下映射:
...
<resultMap id="siteResMap" type="org.example.entity.Site" />
<resultMap id="siteResultMap" type="org.example.model.SiteModel" />
...
然后我们从 DAO 中调用该方法:
List<Site> site = siteDao.findTemplates();
List<SiteModel> siteMod = siteDao.findTemplates();
我们对此的期望是来自 MyBatis 的动态解释,根据计算的返回类型获取正确的 ResultMap。
但是这两个列表都显示为List<org.example.entity.Site>
来自调试器。
这让我觉得第一个 ResultMap 被拿走了,而忽略了第二个。
我错过了什么吗?有没有办法让 MyBatis 以这种方式表现?
问候