查询区域列表并统计点位数量

1. MyBatis 核心配置(自动下划线转驼峰)

文件路径:resources/mybatis/mybatis-config.xml

复制代码
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<configuration>
    <settings>
        <!-- 开启数据库下划线自动映射为Java驼峰命名 -->
        <setting name="mapUnderscoreToCamelCase" value="true"/>
        <setting name="logImpl" value="SLF4J"/>
        <setting name="autoMappingUnknownColumnBehavior" value="WARNING"/>
    </settings>
</configuration>

2. 前端展示 VO 类

文件路径:com/dkd/manage/domain/vo/RegionVo.java

复制代码
package 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 version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.dkd.manage.mapper.RegionMapper">

    <!--
        查询区域列表(带点位数量统计)
        1. 左连接:保留所有区域
        2. 子查询:统计每个区域的点位数量
        3. 支持区域名称模糊查询
    -->
    <select id="selectRegionList" resultType="com.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 test="regionName != null and regionName != ''">
                and r.region_name like concat('%', #{regionName}, '%')
            </if>
        </where>
    </select>

</mapper>

4. Mapper 接口

文件路径:com/dkd/manage/mapper/RegionMapper.java

复制代码
package 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 {
    /**
     * 查询区域列表(带点位数量)
     */
    List<RegionVo> selectRegionList(Region region);
}

5. Service 接口

文件路径:com/dkd/manage/service/IRegionService.java

复制代码
package com.dkd.manage.service;

import com.dkd.manage.domain.Region;
import com.dkd.manage.domain.vo.RegionVo;
import java.util.List;

public interface IRegionService {
    /**
     * 查询区域列表(带点位数量)
     */
    List<RegionVo> queryRegionListWithNodeCount(Region region);
}

6. Service 实现类(核心业务方法)

文件路径:com/dkd/manage/service/impl/RegionServiceImpl.java

复制代码
package 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 List<RegionVo> queryRegionListWithNodeCount(Region region) {
        // 调用Mapper执行关联查询,返回带点位数的区域列表
        return regionMapper.selectRegionList(region);
    }
}

7. Controller 层

文件路径:com/dkd/manage/controller/RegionController.java

复制代码
package 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();
        // 调用业务方法
        List<RegionVo> list = regionService.queryRegionListWithNodeCount(region);
        // 返回分页数据
        return getDataTable(list);
    }
}

8. 前端表格字段

文件路径:vue页面

复制代码
<el-table-column label="区域名称" prop="regionName" />
<el-table-column label="备注" prop="remark" />
<el-table-column label="点位数量" prop="nodeCount" />
相关推荐
wangchunyu1145 小时前
JAVA CompletableFuture异步编程实战
java·开发语言·python
paopaokaka_luck6 小时前
流浪动物救助与收养系统(DeepSeek AI对话、 ECharts多维分析、救助流程衔接、领养与回访衔接、 捐赠确认与公示、志愿者协作)
java·前端·javascript·人工智能·mysql·echarts·推荐算法
Thomas.Sir6 小时前
第9课:SpringBoot4.x Web开发基础:WebMvc自动配置、静态资源、请求参数接收
java·spring boot
程序 代码狂人6 小时前
切片表与分区表的区别(数据开发面试版)
java·大数据·开发语言·数据仓库·算法
2501_944521597 小时前
Deepmerge 跨端三方库仓颉适配全流程
java·python·eclipse·github
南归北隐8 小时前
Spring AI Alibaba Graph框架实现MCP数据库查询实战
java·后端·spring ai·mcp·spring ai mcp
古法老登瞎折腾8 小时前
大数据智能运维实战(九):让 AI 查日志——找到异常,也保留上下文
java·大数据·运维·人工智能·spring ai·mcp
ai大模型-探索者8 小时前
Function Call与MCP(区别、联系与实战)
java·服务器·网络
略略略咯咯9 小时前
啊啊啊啊啊
java·服务器·数据库
SL_staff9 小时前
运维救火实战:钉钉API变更致薪资计算中断,如何用可视化逻辑引擎5分钟热修复
java·开源·全栈