SSM echarts 柱状图 动态加载

本文介绍了如何在SSM框架下结合Echarts实现柱状图的动态加载。关键在于后台处理数据,将数据转化为Echarts所需的格式,并通过ResponseBody返回到前端JSP页面进行展示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >




关键是数据结构,list还是map合适。数据格式,官网有样例。我们要做的就是后台处理好数据,按照指定的格式responseBody传到前台。


JSP

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	  <!-- 为ECharts准备一个具备大小(宽高)的dom,必须设置宽高 -->
    <div id="main" style="width: 1500px;height:500px;"></div>
    
    <script type="text/javascript">
	    // 基于准备好的dom,初始化echarts实例
	    var barChart = echarts.init(document.getElementById("main"));  
	    var option = null; 
    	//页面加载数据
	    $(function () {  
	    	  $.ajax({  
		            url: "<%=request.getContextPath()%>/getEchartsData.do",  
		            dataType: 'json',  
		            success: function (data) {  
		            	option = {
		            	        title: {
		            	            text: '柱状图展示'//标题内容
		            	        },
		            	        tooltip: {},
		            	        legend: {
		            	            data:['部门人员分布图']//标签内容
		            	            //注意例子格式为数组,后台传过来的需要对应格式处理数据
		            	            //data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
		            	        },
		            	        xAxis: {
		            	            data: data.name,
		            	            //x轴项目名竖直排列
		            	            axisLabel: {  
		                                interval: 0,  
		                                formatter:function(value)  
		                                {  
		                                    return value.split("").join("\n");  
		                                }  
		                            }   
		            	        },
		            	      
		            	        yAxis: {},
		            	        series: [{
		            	            name: '部门人员分布图',//与标签内容相同
		            	            type: 'bar',
		            	            //增加数据的单位展示
		            	            label:{
		                           	 normal: {
		                           		    show: true,
		           		                    position: 'top',
		           		                    formatter: '{c}人' 
		           		                }
		                           	 },
		            	            //注意例子格式为数组,后台传过来的需要对应格式处理数据
		            	            //data: [5, 20, 36, 10, 10, 20]
		            	            data:data.value
		            	        }]
		            	    };
		            	 // 使用刚指定的配置项和数据显示图表。
		        	    barChart.setOption(option);
		            }  
		        });  
	    });  
    </script>
</body>
</html>


Controller

@RequestMapping("getEchartsData")
	@ResponseBody
	public Map<String,Object> getEchartsData() {
		/*例子中:x轴,y轴data数据都是数组型,注意处理格式,将两个data需要的数据分别以name/value存入map
		 * xAxis: {
        data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
	    },
	    yAxis: {},
	    series: [{
	        name: '销量',
	        type: 'bar',
	        data: [5, 20, 36, 10, 10, 20]
	    }]*/
		List name = new ArrayList();
		List value = new ArrayList();
		
		List<EchartsDataBallBean> list = auserService.getEchartsDataBall();
		//单独挑出两种数据的集合放入map
		for (EchartsDataBallBean echartsDataBallBean : list) {
			name.add(echartsDataBallBean.getName());//对应xAxis data
			value.add(echartsDataBallBean.getValue());//对应yAxis data
		}
		Map<String,Object> map = new HashMap<String,Object>();
		map.put("name", name);
		map.put("value", value);
		return map;
	}

Entity 这里设定属性名value/name为了后续饼状图共用这个实体类接收数据

package com.jk.quanxian.entity;

public class EchartsDataBallBean {
	private Integer value;
	private String name;
	public Integer getValue() {
		return value;
	}
	public void setValue(Integer value) {
		this.value = value;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	@Override
	public String toString() {
		return "EchartsDataBallBean [value=" + value + ", name=" + name + "]";
	}
	
	
	
}


Mapper.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.jk.quanxian.mapper.EchartsDataBallMapper" >
  <resultMap id="BaseResultMap" type="com.jk.quanxian.entity.EchartsDataBallBean" >
    <result column="name" property="name" />
    <result column="value" property="value" />
  </resultMap>
  <select id="getEchartsDataBall" resultMap="BaseResultMap" >
    select d.C_Name as name, COUNT(u.C_Name) as value 
    from t_aty_dept d,t_aty_user u where d.C_ID = u.C_DEPT GROUP BY d.C_Name
  </select>
</mapper>




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值