当前位置: 首页 > news >正文

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

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" />
http://www.jsqmd.com/news/675673/

相关文章:

  • 用Python和Matplotlib手把手教你绘制需求曲线(附完整代码与经济学原理)
  • 5分钟实战指南:罗技鼠标宏技术助你掌控PUBG武器后坐力
  • 用ComfyUI插件mixlab的‘实时设计’和‘图层’功能,快速迭代你的AI绘画创意
  • TypeScript算法实战——字符串操作进阶:从基础API到高频算法场景解析
  • 仅限首批内测开发者掌握的Spring Boot 4.0 Agent-Ready 调试技巧:如何用jcmd + Spring Agent实现零重启灰度切流?
  • WindowsCleaner:三招解决C盘爆红,让你的Windows系统重获新生!
  • 从示波器波形到稳定计数:硬件消抖实战与74LS160应用解析
  • APISIX Dashboard实战:从零构建微服务路由网关
  • FPGA数据流处理中的‘时间魔术师’:深入理解Xilinx Shift Register IP核的延时机制与仿真验证
  • AD20出Gerber防泄密?过孔盖油规则设置保姆级教程(附3D效果对比)
  • Mac M1程序员效率起飞指南:iTerm2、oh-my-zsh与必备插件(语法高亮/自动补全)的深度调校
  • 从Windows Server到Linux:手把手教你为VMware虚拟机更换高性能磁盘控制器(附驱动安装避坑指南)
  • 2026物联网照明解决方案公司技术创新与行业应用探索 - 品牌排行榜
  • 手把手教你用Livox AVIA激光雷达+Rviz做实时点云采集(附自定义消息格式说明)
  • 别再只会npm install了!保姆级配置指南:从.npmrc到全局依赖,一次搞定Node.js开发环境
  • 告别网络卡顿!用FortiGate防火墙的SLA功能,自动帮你选最优宽带(附保姆级配置)
  • SpringMvc中的请求参数传递和mybatis中的参数传递
  • 1995-2021年省级财政数据清洗实战:从混乱文本到规整面板数据(以转移支付为例)
  • SenseVoice Small从零开始:轻量模型+Streamlit WebUI完整部署
  • 支付宝立减金回收的几种方式(安全高效不浪费) - 米米收
  • 【实战】Android CTS兼容性测试:从环境搭建到结果解析全流程指南
  • MLX90640红外热像仪API实战:从STM32读取到温度矩阵显示的完整流程
  • Phi-3.5-Mini-Instruct创意工作流:文案策划+脚本生成+多轮迭代对话实践
  • 【CrewAI系列3】8 分钟,我用 CrewAI 创建了第一个 AI 员工
  • SolidWorks模型转URDF避坑指南:从零搭建ROS巡线小车的完整流程(含常见报错解决)
  • 写一篇文章 关于苹果官宣库克卸任CEO 属于他的时代结束了
  • MeterSphere性能测试模块部署避坑指南:ZooKeeper、Kafka、Node-Controller怎么装?
  • 如何解决RAC环境下的脑裂问题_Voting Disk表决磁盘与仲裁机制
  • 从USB到GPIB:如何用NI GPIB-USB-HS转换器为你的笔记本电脑搭建便携式测试工站
  • 2026年|AI率太高怎么降?必备这10款降AI工具,高效降低AI率(含免费降AI工具) - 降AI实验室