关于Mybatis的一对一和一对多

在后端开发中,有时候在某个实体类下有另一个实体类的单个对象作为属性或者那个对象的list作为属性,如果需要在查出来那个实体后还要再跑一遍mapper层,多少会影响性能,所以就有了一对一和一对多这写法,直接在<resultMap>标签块里加个标签就能一次性查好了

一对一

一般条件下的一对一只需要带个id过去就行了,所以一般情况下的一对一写法是这样的

<resultMap id = "" type = "" >
<id ........>
<result ......>
<association property = "实体类中对象名" column = "调用的查询的参数字段表中名" select = "所要调用的mapper完整路径加名字.调用的查询(如果是本类则只需要写查询名)" />
</reultMap>

如果是没有能调用的查询,直接左右内连接查出来的数据,则是这么写

<resultMap id = "" type = "" >
<id ........>
<result ......>
<association property = "实体类中对象名" javaType = >
<id property = "对象属性名" column = "查询条件中名字(可能为别称)">
<result property = "对象属性名" column = "查询条件中名字(可能为别称)">
.......
</association>
</reultMap>
<!-- 这种情况下是有内外连接时使用 -->

嵌套调用别的resultmap的用法

<association property = "实体类中对象名" resultMap = "调用的resultMap名">
<!-- 暂不知道是否能拿别的mapper的resultmap -->

一对多

类似一对一的第一个写法

<collection property = "实体类中对象名" column = "带到查询中的参数表中名" select = "所要调用的mapper完整路径加名字.调用的查询" />
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容