开发过程中,经常遇到查出来的数据需要进行业务封装的.如果用代码处理非常麻烦.这里写两种mybatis中标签的使用方法
mysql查出来如果是这种数据格式
| name | data |
|---|---|
| 1 | A |
| 1 | B |
| 2 | A |
| 2 | B |
| 2 | C |
但是业务要求.需要封装成
1—> A,B
2—>A,B,C
这时候用一对多标签就可以实现
放代码
@Data
public class NameDTO{
@ApiModelProperty(value = "名称")
private String name ;
@ApiModelProperty(value = "内容集合")
private List<DataDTO> datas;
}
@Data
public class DataDTO{
@ApiModelProperty(value = "内容")
private String data;
}
<resultMap type="NameDTO" id="detailMap--mybatis中select表对应的id">
<result column="name " property="name "/>
<collection property="datas" ofType="DataDTO"
autoMapping="true">
<result column="data" property="data"/>
</collection>
</resultMap>
如果datas是一个List<String>的集合,标签写法要稍作修改
<resultMap type="NameDTO" id="detailMap--mybatis中select表对应的id">
<result column="name " property="name "/>
<collection property="datas" ofType="String" javaType="list">
<result column="data"/>
</collection>
</resultMap>
一对一的话,比较简单直接放个代码吧
| name | data | type | status |
|---|---|---|---|
| 1 | A | 小说 | 未发布 |
| 1 | B | 小说 | 未发布 |
| 2 | A | 期刊 | 已发布 |
| 2 | B | 期刊 | 已发布 |
| 2 | C | 期刊 | 已发布 |
@Data
public class NameDTO{
@ApiModelProperty(value = "名称")
private String name ;
@ApiModelProperty(value = "类型")
private AttributeDTO attribute;
@ApiModelProperty(value = "内容")
private List<String> data;
}
@Data
public class AttributeDTO{
@ApiModelProperty(value = "类型")
private String type;
@ApiModelProperty(value = "状态")
private String status;
}
<association property="attribute" javaType="AttributeDTO" autoMapping="true">
<result column="type" property="type"/>
<result column="status" property="status"/>
</association>
不懂的可以留言
本文详细介绍如何使用MyBatis的集合和关联映射标签,将数据库查询结果封装为复杂对象,包括一对多和一对一的关系处理,适用于业务数据的高效处理。
497

被折叠的 条评论
为什么被折叠?



