mybatis 实现多层级collection嵌套

mybatis多层级collection嵌套

json结构

mybatis 实现多层级collection嵌套_第1张图片

第一步查询

第一层查询,将第一层的id传递到第二层当条件查询    column="id"


    
    
    
    
    
    
    
 
    

第二步查询

第二层查询,并将第二层的id传递到第三层当条件查询    column="funID"  是别名


    
    
    
    
    
    
 
    

第三步查询(第三层查询)


    
    
    

其实蛮好理解的,就是查询一个,然后把条件传递下步继续查询。。。 使用时调第一层,也就是从高到底。

最后附实体截图,其实看json就可以了

第一层实体:

mybatis 实现多层级collection嵌套_第2张图片

第二层实体:

mybatis 实现多层级collection嵌套_第3张图片

第三层实体:

mybatis 实现多层级collection嵌套_第4张图片

方式二(推荐)


    
    
    
        
        
    

mybatis多层(三层)嵌套查询

java 实体描述

/**
 * 

* 家庭表 *

* * @author lohas */ @Data @EqualsAndHashCode(callSuper = true) @TableName("t_family_info") @ApiModel(value = "FamilyInfoEntity对象", description = "家庭表") public class FamilyInfoEntity extends Model { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "主键") @TableId(value = "id", type = IdType.INPUT) private String id; @ApiModelProperty(value = "家庭名称") private String familyName; @ApiModelProperty(value = "家庭头像url") private String headUrl; @ApiModelProperty(value = "国家") private String country; @ApiModelProperty(value = "城市") private String city; @ApiModelProperty(value = "地址") private String address; @ApiModelProperty(value = "经度") private BigDecimal longitude; @ApiModelProperty(value = "纬度") private BigDecimal latitude; @ApiModelProperty(value = "租户ID") private String tenantId; @ApiModelProperty(value = "是否删除(0:正常;低于0的数字:已删除)") private String deleteFlag; @ApiModelProperty(value = "创建人ID") private String creatorId; @ApiModelProperty(value = "创建时间") @JsonDeserialize(using = LocalDateTimeSerializerConfig.LocalDateTimeDeserializer.class) @JsonSerialize(using = LocalDateTimeSerializerConfig.LocalDateTimeSerializer.class) private LocalDateTime createTime; @ApiModelProperty(value = "更新人ID") private String updateId; @ApiModelProperty(value = "更新时间") @JsonDeserialize(using = LocalDateTimeSerializerConfig.LocalDateTimeDeserializer.class) @JsonSerialize(using = LocalDateTimeSerializerConfig.LocalDateTimeSerializer.class) private LocalDateTime updateTime; }
/**
 * @author lohas
 * @description
 */
@Data
@ApiModel(value = "RoomDeviceInfoVo对象", description = "房间设备信息实体")
public class RoomDeviceInfoVo implements Serializable {
 
    @ApiModelProperty(value = "房间id")
    private String roomId;
 
    @ApiModelProperty(value = "房间名称")
    private String roomName;
 
    @ApiModelProperty(value = "设备数量")
    private Integer deviceNum;
 
    @ApiModelProperty(value = "设备信息列表")
    private List deviceIds;
}
/**
 * @author lohas
 * @description
 */
@Data
@ApiModel(value = "FamilyRoomInfoVo对象", description = "家庭房间信息对象实例")
public class FamilyRoomInfoVo extends FamilyInfoEntity {
 
    @ApiModelProperty(value = "房间设备信息列表")
    private List roomDeviceInfoVoList;
}

mybatis xml




 
    
 
	
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
	
 
	
		
		
		
		
		
		
	
 
	
		
		
	
 

调用方法

public interface FamilyInfoMapper extends BaseMapper { 
    List getFamilyRoomInfoVoByUserId(@Param("userId") String userId);   
}

注意总结

如果你的字段唯一,columnPrefix="r_" 和 columnPrefix="d_",可以不加,如果你加上了columnPrefix记得在字段上拼接上,否则查询不出数据,拼接要有前后顺序拼接例如:



r_d_device_id(要加上r因为roomMap columnPrefix="r_",加上d因为deviceMap columnPrefix="d_")

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

你可能感兴趣的:(mybatis 实现多层级collection嵌套)