MyBatis:我可以将两个结果列映射到单个对象属性吗?

时间:2017-08-04 09:08:15

标签: mybatis

我有一个案例,我有一个表格,可以在两列中存储地理位置,'纬度'和经度'。当我将结果集映射到Java对象时,我想将这两列组合在一起并将它们作为嵌套对象返回,但是这个嵌套对象不是与另一个表的某种关联(通过外键)。

所以,想象一下这个问题:

SELECT id, name, latitude, longitude 
FROM places
WHERE id = <some_id>

而且,我想将它 - 理想情况下在我的XML文件中使用resultMap - 映射到:

public class Place {
   private Long id;
   private String name;
   private GeoPoint point;

   public Place(Long id, String name, GeoPoint point) {
      this.id = id;
      this.name = name;
      this.point = point;
   }
   ...
}

public class GeoPoint {
   private BigDecimal latitude;
   private BigDecimal longitude;

   public Place(BigDecimal latitude, BigDecimal longitude) {
      this.latitude = latitude;
      this.longitude = longitude;
   }
   ...
}

从我读过的文档来看,目前尚不清楚这是否真的可以在MyBatis resultMap中实现。关于嵌套对象的唯一讨论是,这些对象是从作为连接的一部分返回到另一个表(关联或集合)的列形成的 - 即似乎需要ID。

就我而言,这些列只是形成一个嵌套的值对象,并且没有自己的唯一ID。

任何人都可以共享我的问题的解决方案,避免我不得不从我的映射器而不是完全构造的对象返回HashMap吗?

0 个答案:

没有答案