mybatis多层嵌套resultMap及返回自定义参数详解

网友投稿 1519 2023-03-06

mybatis多层嵌套resultMap及返回自定义参数详解

mybatis多层嵌套resultMap及返回自定义参数详解

1.两层嵌套,一个list中加另外一个list

data:[

{a:123,b:456,c:[{d:7,e:8}]}

]

xml文件定义的sql

select * from zhy z LEFT JOIN wl w on z.id = w.zid

resultMap可以定义:

如果测试表zhy与wl表中存在重复名称的字段可以使用columnPrefix

注意w_

select z.*,w.b as w_b,w.c as w_c from zhy z LEFT JOIN wl w on z.id = w.zid

如果接收的实体是自定义的实体并且还有默认参数

当resultMap返回的实体中存在默认值的时候,发现外层的zhy是可以赋值成功的,但是内层的wl却没有,这个时候需要将自动生成的BaseResultMap复制一份重新定义接收实体类

/**

* 比如这样实体接收中存在默认赋值

*

* @author zhy

*/

@EqualsAndHashCode(callSuper = true)

@Data

public class WlVo extends Wl {

/**

* 默认赋值false

*/

private boolean select = false;

}

将type改为自定义的之后在引用

2.三层嵌套,一个list中加另外一个list,内list中还存在list

data:[

{a:123,b:456,c:[{d:7,e:8,f:[str]}]}

]

这时候只需要在内层wlBaseResultMap中再增加一个collection即可

需要注意的是这个时候columnPrefix可能会导致数据为空

补充知识:Mybatis中查询返回多个对象使用resultType使用Map类型代替resultMap

查询resultType直接使用Type,Dao层返回对象为List嵌套的一个Map数据结构

List> selectAll();

//查询语句

其中Map的key值为查询的属性,Object为查询的值.

注:使用map类型无法转换成驼峰命名,建议还是使用resultMap类型

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:vue 小程序开发框架(vuejs开发小程序)
下一篇:Mybatis有查询结果但存不进实体类的解决方案
相关文章

 发表评论

暂时没有评论,来抢沙发吧~