<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
通過從資料庫獲取資料轉為JSON資料,返回前端介面實現資料視覺化。
資料視覺化測試
pom.xml引入(僅為本文範例需要,其他依賴自行匯入)
<!--Thymeleaf整合security--> <dependency> <groupId>org.thymeleaf.extras</groupId> <artifactId>thymeleaf-extras-springsecurity5</artifactId> <version>3.0.4.RELEASE</version> </dependency> <!--匯入lombok小辣椒驅動依賴,用來生成get/set方法依賴--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <!--<optional>true</optional>--> <version>1.18.12</version> <scope>provided</scope><!--自動生成有參無參構造--> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.4</version> </dependency>
1. Controller層
package com.dvms.controller; /* *檔名: DataviewController *建立者: CJW *建立時間:2022/4/15 20:33 *描述: TODO */ import com.alibaba.fastjson.JSON; import com.dvms.service.ParamoduleService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import java.util.ArrayList; @Controller public class DataviewController { @Autowired private ParamoduleService paramoduleService; // 查出 @RequestMapping("/data/todatashow") public String finddata(ModelMap model){ ArrayList<String> dataname = paramoduleService.finddata(); ArrayList<Integer> datanum = paramoduleService.finddatanum(); String datanameJson = JSON.toJSONString(dataname); String datanumJson = JSON.toJSONString(datanum); System.out.println(datanameJson); System.out.println(datanumJson); model.put("datanameJson",datanameJson); model.put("datanumJson",datanumJson); return "ems/charts"; } }
2. Service層
package com.dvms.service; import com.dvms.entity.Record; import com.dvms.entity.Video; import java.util.ArrayList; import java.util.List; import java.util.Map; /* *檔名: ParamoduleService *建立者: CJW *建立時間:2022/1/15 10:54 *描述: TODO */ public interface ParamoduleService { ArrayList<String> finddata(); ArrayList<Integer> finddatanum(); }
3. ServiceImpl層
package com.dvms.service.Impl; import com.dvms.dao.ParamoduleDao; import com.dvms.entity.Record; import com.dvms.entity.Video; import com.dvms.service.ParamoduleService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; import java.util.Map; /* *檔名: ParamoduleServiceImpl *建立者: CJW *建立時間:2022/1/15 10:55 *描述: TODO */ @Service public class ParamoduleServiceImpl implements ParamoduleService { @Autowired private ParamoduleDao paramoduleDao; //查出資料名 @Override public ArrayList<String> finddata(){ return paramoduleDao.finddata(); } //查出資料數量 @Override public ArrayList<Integer> finddatanum(){ return paramoduleDao.finddatanum(); } }
4. entity層
package com.dvms.entity; /* *檔名: Data *建立者: CJW *建立時間:2022/4/14 16:17 *描述: TODO */ import lombok.AllArgsConstructor; import lombok.NoArgsConstructor; import lombok.ToString; import lombok.experimental.Accessors; @lombok.Data @ToString @AllArgsConstructor @NoArgsConstructor @Accessors(chain = true) //鏈式呼叫 public class Data { private String id; private String dataname; private Integer datanum; }
5. dao(pojo)層
package com.dvms.dao; import com.dvms.entity.Record; import com.dvms.entity.Video; import org.springframework.stereotype.Repository; import java.util.ArrayList; import java.util.List; import java.util.Map; /* *檔名: ParamoduleDao *建立者: CJW *建立時間:2022/1/15 10:52 *描述: TODO */ @Repository public interface ParamoduleDao { ArrayList<String> finddata(); ArrayList<Integer> finddatanum(); }
6. daoMapper層
<?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.dvms.dao.ParamoduleDao"> <!--查詢資料名--> <select id="finddata" resultType="String"> select dataname from data </select> <!--查詢資料數量--> <select id="finddatanum" resultType="Integer"> select datanum from data </select> </mapper>
7. 資料庫data表
前端引入:
<script src="https://cdn.bootcss.com/echarts/4.6.0/echarts.min.js"> <html lang="en" xmlns:th="http://www.thymeleaf.org"></script>
展示前端部分程式,主要是以下兩句:
var datanum=[[${datanumJson}]]; // thymeleaf 獲取後端引數方式 JSON.parse(dataname) // JSON接收資料
<div class="main"> <!-- MAIN CONTENT --> <div class="main-content"> <div class="container-fluid"> <h3 class="page-title">資料視覺化測試範例</h3> <div class="row"> <div class="col-md-12"> <div class="panel"> <div class="panel-heading"> <h3 class="panel-title">讀取資料庫資料視覺化範例</h3> <div class="right"> <button type="button" class="btn-toggle-collapse"><i class="lnr lnr-chevron-up"></i> </button> <button type="button" class="btn-remove"><i class="lnr lnr-cross"></i></button> </div> </div> <div class="panel-body"> <!--<div id="demo-line-chart" class="ct-chart"></div>--> <!-- 為ECharts準備一個具備大小(寬高)的Dom --> <div class="col-md-6" id="main" style="width: 600px;height:400px;"> <script type="text/javascript" th:inline="javascript"> //在js讀取thymeleaf變數值 var dataname=[[${datanameJson}]]; var datanum=[[${datanumJson}]]; // 基於準備好的dom,初始化echarts範例 var myChart = echarts.init(document.getElementById('main')); // 指定圖表的設定項和資料 var option = { title: { text: '讀取資料庫資料視覺化範例' }, tooltip: {}, legend: { data: ['數量'] }, xAxis: { data: JSON.parse(dataname) }, yAxis: {}, color:['#62d1de'],//在這裡設定colorList,是一個陣列,圖片顏色會按順序選取 series: [ { name: '數量', type: 'bar', data: JSON.parse(datanum) } ] }; // 使用剛指定的設定項和資料顯示圖表。 myChart.setOption(option); </script> </div> <div class="col-md-6" id="main1" style="width: 600px;height:400px;"> <script type="text/javascript" th:inline="javascript"> // 基於準備好的dom,初始化echarts範例 var myChart1 = echarts.init(document.getElementById('main1')); option = { title: { text: '某站點使用者存取來源', subtext: '純屬虛構', left: 'center' }, tooltip: { trigger: 'item', formatter: '{a} <br/>{b} : {c} ({d}%)' }, legend: { orient: 'vertical', left: 'left', data: ['直接存取', '郵件行銷', '聯盟廣告', '視訊廣告', '搜尋引擎'] }, color:['#62d1de','#54d6b6','#a6db69','#ffd454','#ffa361','#d1d1d1'],//在這裡設定colorList,是一個陣列,圖片顏色會按順序選取 series: [ { name: '存取來源', type: 'pie', radius: '55%', center: ['50%', '60%'], data: [ {value: 335, name: '直接存取'}, {value: 310, name: '郵件行銷'}, {value: 234, name: '聯盟廣告'}, {value: 135, name: '視訊廣告'}, {value: 1548, name: '搜尋引擎'} ], emphasis: { itemStyle: { shadowBlur: 10, shadowOffsetX: 0, shadowColor: 'rgba(0, 0, 0, 0.5)' } } } ] }; // 使用剛指定的設定項和資料顯示圖表。 myChart1.setOption(option); </script> </div> </div> </div> </div> </div> </div> </div> </div> <!-- END MAIN CONTENT --> </div>
到此這篇關於SpringBoot+thymeleaf+Echarts+Mysql 實現資料視覺化讀取的範例的文章就介紹到這了,更多相關SpringBoot視覺化讀取內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45