之前用的MyBatis使用的是collection和Association,但是iBATIS不支持,它也有两种写法,具体可参考这篇博客,写的很详细。
我选择了方式二,虽然方式一看起来结构清晰,但是会多次查询,方式二一次查询即可。
注意点:
- resultMap中嵌套的resultMap,必须加本sqlMap的namespace,即namespace.resultMapId,不然会一直报找不到resultMap
- groupBy很重要,一定要写,而且必须选择合适的值,不然会有问题,很可能报too many results。我选了表里的主键后终于ok了。外部resultMap和内部resultMap必须有同样的property与groupBy里的值对应,如果从表里select出来的名称不一样,需要起别名。