创建父实体类
| package com.example.demo.pojo; |
| |
| public class BaseCompanyDto { |
| |
| private String tableName; |
| |
| private String partTableName; |
| } |
普通实体类继承
| public class Everything extends BaseCompanyDto {} |
Dao层编写
| List<Everything> CompanyList(Everything everything); |
Mapper实现层[分组列表]
| <select id="CompanyList" resultType="com.example.demo.pojo.Everything"> |
| select (select ${partTableName}.dName |
| from ${partTableName} |
| where ${tableName}.deptld = ${partTableName}.deptNo) as DepartMent, count(${tableName}.eName) as NumberOfPeople |
| from ${tableName} |
| group by ${tableName}.deptld; |
| </select> |
Controller调用Dao
| @RequestMapping("/Company") |
| @ResponseBody |
| public Object Company() { |
| Map<Object, Object> map = new HashMap<>(); |
| |
| Everything company = new Everything(); |
| company.setTableName("Staff"); |
| company.setPartTableName("StaffDept"); |
| map.put("code", 2); |
| map.put("count", staffDao.CompanyList(company).size()); |
| map.put("$data", staffDao.CompanyList(company)); |
| return map; |
| } |
| { |
| "code": 2, |
| "$data": [ |
| { |
| "numberOfPeople": 1, |
| "departMent": "研发部" |
| }, |
| { |
| "numberOfPeople": 2, |
| "departMent": "技术部" |
| }, |
| { |
| "numberOfPeople": 2, |
| "departMent": "市场部" |
| } |
| ], |
| "count": 3 |
| } |
前端ECharts处理
- 代码展示
| <!DOCTYPE html> |
| <%@ page contentType="text/html;charset=UTF-8" language="java" %> |
| <html> |
| <head> |
| <meta charset="utf-8"> |
| <title>ECharts</title> |
| <!-- 引入 echarts.js --> |
| <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts@4.5.0/dist/echarts.min.js"></script> |
| <script type="text/javascript" src="${path}/js/jquery.min.js"></script> |
| </head> |
| <body> |
| <!-- 为ECharts准备一个具备大小(宽高)的Dom --> |
| <div id="main" style="width: 600px;height:400px;"></div> |
| |
| <script type="text/javascript"> |
| |
| |
| var list01 = []; |
| |
| var list02 = []; |
| |
| var urls = "http://localhost:8888/staff/Company"; |
| searchEverything(urls); |
| |
| function searchEverything(urls) { |
| $.ajax({ |
| url: urls, |
| type: "POST", |
| data: null, |
| async: false, |
| contentType: "application/json", |
| success: function (data) { |
| |
| $.each(data.$data, function (index, value) { |
| list01.push(value.numberOfPeople); |
| }); |
| |
| $.each(data.$data, function (index, value) { |
| list02.push(value.departMent); |
| }); |
| } |
| }); |
| } |
| |
| |
| var myChart = echarts.init(document.getElementById('main')); |
| |
| |
| var option = { |
| title: { |
| text: 'ECharts 部门人数统计' |
| }, |
| tooltip: {}, |
| legend: { |
| data: ['销量'] |
| }, |
| xAxis: { |
| data: list02 |
| }, |
| yAxis: {}, |
| series: [{ |
| name: '销量', |
| type: 'bar', |
| data: list01 |
| }] |
| }; |
| |
| |
| myChart.setOption(option); |
| </script> |
| </body> |
| </html> |
- 如图

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~