1. MyBatis 核心配置自动下划线转驼峰文件路径resources/mybatis/mybatis-config.xml?xml version1.0 encodingUTF-8? !DOCTYPE configuration PUBLIC -//mybatis.org//DTD Config 3.0//EN http://mybatis.org/dtd/mybatis-3-mapper.dtd configuration settings !-- 开启数据库下划线自动映射为Java驼峰命名 -- setting namemapUnderscoreToCamelCase valuetrue/ setting namelogImpl valueSLF4J/ setting nameautoMappingUnknownColumnBehavior valueWARNING/ /settings /configuration2. 前端展示 VO 类文件路径com/dkd/manage/domain/vo/RegionVo.javapackage com.dkd.manage.domain.vo; import com.dkd.manage.domain.Region; import lombok.Data; /** * 区域信息扩展类包含点位数量 */ Data public class RegionVo extends Region { /** * 点位数量 * 对应数据库字段node_count */ private Integer nodeCount; }3. Mapper XML 核心 SQL文件路径resources/mapper/RegionMapper.xml?xml version1.0 encodingUTF-8? !DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//EN http://mybatis.org/dtd/mybatis-3-mapper.dtd mapper namespacecom.dkd.manage.mapper.RegionMapper !-- 查询区域列表带点位数量统计 1. 左连接保留所有区域 2. 子查询统计每个区域的点位数量 3. 支持区域名称模糊查询 -- select idselectRegionList resultTypecom.dkd.manage.domain.vo.RegionVo select r.id, r.region_name, r.remark, n.node_count from tb_region r left join ( select region_id, count(*) as node_count from tb_node group by region_id ) n on r.id n.region_id where if testregionName ! null and regionName ! and r.region_name like concat(%, #{regionName}, %) /if /where /select /mapper4. Mapper 接口文件路径com/dkd/manage/mapper/RegionMapper.javapackage com.dkd.manage.mapper; import com.dkd.manage.domain.Region; import com.dkd.manage.domain.vo.RegionVo; import org.apache.ibatis.annotations.Mapper; import java.util.List; Mapper public interface RegionMapper { /** * 查询区域列表带点位数量 */ ListRegionVo selectRegionList(Region region); }5. Service 接口文件路径com/dkd/manage/service/IRegionService.javapackage com.dkd.manage.service; import com.dkd.manage.domain.Region; import com.dkd.manage.domain.vo.RegionVo; import java.util.List; public interface IRegionService { /** * 查询区域列表带点位数量 */ ListRegionVo queryRegionListWithNodeCount(Region region); }6. Service 实现类核心业务方法文件路径com/dkd/manage/service/impl/RegionServiceImpl.javapackage com.dkd.manage.service.impl; import com.dkd.manage.domain.Region; import com.dkd.manage.domain.vo.RegionVo; import com.dkd.manage.mapper.RegionMapper; import com.dkd.manage.service.IRegionService; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.List; Service public class RegionServiceImpl implements IRegionService { Resource private RegionMapper regionMapper; /** * 查询区域列表包含点位数量 * param region 查询条件 * return 带点位统计的区域列表 */ Override public ListRegionVo queryRegionListWithNodeCount(Region region) { // 调用Mapper执行关联查询返回带点位数的区域列表 return regionMapper.selectRegionList(region); } }7. Controller 层文件路径com/dkd/manage/controller/RegionController.javapackage com.dkd.manage.controller; import com.dkd.common.core.controller.BaseController; import com.dkd.common.core.page.TableDataInfo; import com.dkd.manage.domain.Region; import com.dkd.manage.domain.vo.RegionVo; import com.dkd.manage.service.IRegionService; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import java.util.List; RestController RequestMapping(/manage/region) public class RegionController extends BaseController { Resource private IRegionService regionService; /** * 查询区域列表带点位数量 * 支持分页、名称模糊查询 */ PreAuthorize(ss.hasPermi(manage:region:list)) GetMapping(/list) public TableDataInfo list(Region region) { // 开启分页 startPage(); // 调用业务方法 ListRegionVo list regionService.queryRegionListWithNodeCount(region); // 返回分页数据 return getDataTable(list); } }8. 前端表格字段文件路径vue页面el-table-column label区域名称 propregionName / el-table-column label备注 propremark / el-table-column label点位数量 propnodeCount /