springboot+echarts+mybatisplus 实现动态数据图(饼状,折线)

ECharts介绍

ECharts是一个使用 JavaScript 实现的开源可视化库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Firefox,Safari等),底层依赖矢量图形库 ZRender,提供直观,交互丰富,可高度个性化定制的数据可视化图表。

效果图

 

 

1.创建表

2.搭建springboot项目

选择java8

选择要导入的依赖,因为是springboot整合thymeleaf 所以我选择了勾选 thymeleaf 以及 Spring Web,如要使用数据库可在sql里勾选您使用的数据库

 这就是springboot创建出来的完整结构

 2.1 实体类(pojo)

 3.controller层

package com.wjj.echarts.controller;

import com.wjj.echarts.pojo.Goods;
import com.wjj.echarts.service.GoodsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;


import java.util.List;

@Controller
public class HelloSpringBoot {

    @Autowired
    private GoodsService goodsService;

    @RequestMapping( "/show")
    @ResponseBody
    public List<Goods> findById(Model model) {
        List<Goods> users =goodsService.list();
        System.err.println(users.toString());
        return users;
    }

    //展示柱状图
    @RequestMapping( "/showbar")
    public String show2() {

        return "bar";
    }

    //展示饼图
    @RequestMapping( "/showpie")
    public String show3() {
        return "pie";
    }

}

 4.application.yml配置文件

数据源的URL记得填写自己数据库的名字

 5.引入echarts和jQuery的js文件

6.HTML

bar.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>饼状图</title>
  <script src="https://cdn.staticfile.org/jquery/2.2.4/jquery.min.js"></script>
  <!-- 引入 echarts.js -->
  <script src="https://cdn.staticfile.org/echarts/4.3.0/echarts.min.js"></script>
</head>
<body>
<div id="main" style="width: 800px;height:450px;" align="center"></div>
<script type="text/javascript">
  $(document).ready(function(){
    // 基于准备好的dom,初始化echarts实例
    var myChart = echarts.init(document.getElementById('main'));
    //数据加载完之前先显示一段简单的loading动画
    myChart.showLoading();
    var values=[];
    //数据加载完之前先显示一段简单的loading动画
    myChart.showLoading();
    $.ajax({
      type : "post",
      async : true,            //异步请求(同步请求将会锁住浏览器,用户其他操作必须等待请求完成才可以执行)
      url : "/show",    //请求发送到dataActiont处
      data : {},
      dataType : "json",        //返回数据形式为json
      success : function(data) {
        //请求成功时执行该函数内容,result即为服务器返回的json对象
        if (data) {
          for(var i=1;i<data.length;i++){
            var test={"value":data[i].count, "name":data[i].name};
            values.push(test);

          }

          myChart.hideLoading();    //隐藏加载动画
          myChart.setOption(
                  {
                    title: {
                      text: '商品数量占比',
                      subtext: '纯属虚构',
                      left: 'center'
                    },
                    legend: {
                      orient: 'vertical',
                      left: 'left',
                      data: values
                    },
                    series: [
                      {
                        name: '物料来源',
                        type: 'pie',
                        radius: '60%',
                        center: ['50%', '50%'],
                        data:values,
                        itemStyle: {
                          emphasis: {
                            shadowBlur: 10,
                            shadowOffsetX: 0,
                            shadowColor: 'rgba(0, 0, 0, 0.5)'
                          }
                        }
                      }
                    ]
                  }
          );
        }
      },
      error : function(errorMsg) {
        //请求失败时执行该函数
        alert("图表请求数据失败!");
        myChart.hideLoading();
      }
    });//end ajax
  });//刷新方法结束
</script>
</body>
</html>

 pie.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <script src="https://cdn.staticfile.org/jquery/2.2.4/jquery.min.js"></script>
  <!-- 引入 echarts.js -->
  <script src="https://cdn.staticfile.org/echarts/4.3.0/echarts.min.js"></script>
</head>
<body>
<div id="main" style="width: 800px;height:450px;"></div>
<script type="text/javascript">
  $(document).ready(function(){
    // 基于准备好的dom,初始化echarts实例
    var myChart = echarts.init(document.getElementById('main'));
    //数据加载完之前先显示一段简单的loading动画
    myChart.showLoading();
    var names=[];    //横坐标数组(实际用来盛放X轴坐标值)
    var values=[];    //纵坐标数组(实际用来盛放Y坐标值)
    $.ajax({
      type : "post",
      async : true,            //异步请求(同步请求将会锁住浏览器,用户其他操作必须等待请求完成才可以执行)
      url : "/show",    //请求发送到dataActiont处
      data : {},
      dataType : "json",        //返回数据形式为json
      success : function(result) {
        //请求成功时执行该函数内容,result即为服务器返回的json对象
        if (result) {
          for(var i=0;i<result.length;i++){
            names.push(result[i].name);
            values.push(result[i].count);
          }
          myChart.hideLoading();    //隐藏加载动画
          myChart.setOption({
            //加载数据图表
            title:{
              text: '商品数量'
            },

            legend: {
              data:['商品数量']
            },
            xAxis: {
              data: names,
              axisLabel:{
                interval: 0
              }

            },
            yAxis: {
              type: 'value'
            },
            series: [{
              // 根据名字对应到相应的系列
              name: '商品名称',
              type: 'line',
              data: values
            }]
          });
        }
      },
      error : function(errorMsg) {
        //请求失败时执行该函数
        alert("图表请求数据失败!");
        myChart.hideLoading();
      }
    });//end ajax
  });

</script>
</body>
</html>

总结

springboot+echarts实现动态数据主要是通过前端利用ajax发送请求给后端返回list集合,前端通过返回的数据(data)添加到图标中或计算

  • 0
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值