扩展
Mybatis 学习扩展
多级映射返回JSON数据
在日常的开发中,接口的返回数据大多都是Json,以下也是一个很常见的json格式
[
{
"addressee": "北京",
"addressee_name": "yanghaiji",
"addressee_phone": "1234565432",
"senderVOList": [
{
"sender_add": null,
"sender_name": "北京",
"informationVOS": [
{
"ems_status": "0",
"retreat_status": "0",
"create_by": "admin",
"create_date": "2019-11-02"
}
]
}
]
},
{
"addressee": "shanghai",
"addressee_name": "hiaji",
"addressee_phone": "1234565432",
"senderVOList": [
{
"sender_add": null,
"sender_name": "shanghai",
"informationVOS": [
{
"ems_status": "0",
"retreat_status": "0",
"create_by": "admin123",
"create_date": "2019-11-02"
}
]
}
]
},
{
"addressee": "北京",
"addressee_name": "ji",
"addressee_phone": "1234565432",
"senderVOList": [
{
"sender_add": null,
"sender_name": "北京",
"informationVOS": [
{
"ems_status": "0",
"retreat_status": "0",
"create_by": "admin",
"create_date": "2019-11-02"
}
]
}
]
}
]看到上边的json,您会想到,直接查询一下,在java代码进行循环拼接?实则不然,Mybatis为我们提供了很好的帮助, 细心的朋友会在mybatis 结果映射中有所感悟,其实我们只需要利用到 <resultMap> <collection> 等结果映射标签即可完成,不需要代码处理
首先我们写这样一段sql
根据您需要的结构编写实体类,这里略过,大家可以参考source-code 关系Mybatis的相关代码
然后开始编写resultMap 这里我只是三层的关系,更多的层次关系继续写就可以
最后测试

foreach里写if
大多数我们都是利用 foreach 来做某个字段的 in 查询,但是有一天一个朋友问我,foreach 里可以写if吗? 我的第一反应是应该可以写,后来想了一下,肯定是可以的,当然我们也不能全部停留在自己的想法上,还是要去实现一下的;
由于我们这里直接写 WHERE 肯定会报错 ,毕竟这是动态 SQL,所以我们采用<trim>来写,如果您还不了解,可以看一下Mybatis 动态SQL 假设可以,最终执行的SQL应该是类似这样:
SQL与已经写完,来开发个接口验证一下:
通过下图我们可以看出,和我预想的sql是一样的,源代码,请参考source-code 内mybatis相关的代码 
Last updated
Was this helpful?