mybatis查询树结构,以省市区举例(数据库递归查询方式)

树结构实体类:

@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("AREA_INFO")
public class AreaInfo{
    //行政区域编号
    @TableId(value = "AREA_NO", type = IdType.ID_WORKER_STR)
    private String areaNo;
    // 行政区域名称
    @TableField("AREA_NAME")
    private String areaName;
    // 父区域编号
    @TableField("PARENT_AREA_NO")
    private String parentAreaNo;
    // 备注
    @TableField("REMARK")
    private String remark;
    //状态(0-无效;1-有效)
    @TableField("STATUS")
    private String status;
    //子元素
    @TableField(exist = false)
    private List children;
}

数据库表机构如下:

CREATE TABLE `AREA_INFO` (
  `AREA_NO` varchar(32) NOT NULL COMMENT '行政区域编号',
  `AREA_NAME` varchar(128) DEFAULT NULL COMMENT '行政区域名称',
  `PARENT_AREA_NO` varchar(32) DEFAULT NULL COMMENT '父区域编号',
  `REMARK` varchar(512) DEFAULT NULL COMMENT '备注',
  `STATUS` varchar(8) DEFAULT NULL COMMENT '状态(0-无效;1-有效)',
  PRIMARY KEY (`AREA_NO`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='区域表';

java dao中如下:

@Mapper
public interface AreaInfoDao extends BaseMapper {
	//获取区域树形菜单
	public List getAreaInfoTree(String parentAreaNo);
}

mybatis中sql如下:


        
        
        
             
 

 

说明:此查询方式只是适合于少量数据查询,如果数据量太大数据库压力特别大,所以不建议使用,针对于大量的树形数据,可采用懒加载的方式,或者直接查询出列表交给前段自己处理。

 

你可能感兴趣的:(java,mysql,递归查询)