利用ECharts可视化mysql数据库中的数据

技术实现背景

在我们的日常开发中我们经常使用到各种各样的数据进行相关的功能的开发,在这个过程中我们可以用到各种各样的图表来分析和实现我们的需求,很多的时候我们可以进行相关的功能的分析和判断,在这个过程中我们就需要从数据库中读取的数据使用Echarts来进行相关的功能的分析,下图所示即为我们要实现的细节性,在这个过程中我们注意是Echarts的相关的功能的研究,然后是我们的进行相关的分析功能,下图即为我们要把我们的功能进行相关的数据库中的数据在前端进行相关的功能进行展示。

准备工作

  1. 开发工具主要是包含mysql数据库,echarts,ssm框架(也可以使用servlet和ssh)均可以,idea编辑器和Tomcat等
  2. 数据表的建立,为了大家的入门的方便,这里博主还是选择了以单表的功能进行相关的功能的开发给大家进行相关的功能的讲解。
CREATE TABLE `bookinfo` (`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键id',`bid` varchar(40) NOT NULL COMMENT '图书编号',`bookName` varchar(40) NOT NULL COMMENT '书名',`author` varchar(30) NOT NULL COMMENT '作者',`publisher` varchar(40) NOT NULL COMMENT '出版社',`classifyCode` varchar(40) NOT NULL COMMENT '分类名称',`createTime` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`bookAge` int(11) NOT NULL COMMENT '书龄',`isBorrowed` varchar(2) NOT NULL COMMENT '是否可借',`status` varchar(2) NOT NULL COMMENT '状态',`number` int(11) NOT NULL COMMENT '图书数量',`qrCode` varchar(100) NOT NULL COMMENT '二维码',`location` varchar(100) NOT NULL COMMENT '位置',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COMMENT='图书表';-- ----------------------------
-- Records of bookinfo
-- ----------------------------
INSERT INTO `bookinfo` VALUES ('1', '0001', 'Java编程思想', '马丁', '新华出版社', '科技类', '2020-08-02 10:48:23', '5', '1', '1', '7', '111', '1111');
INSERT INTO `bookinfo` VALUES ('2', '0002', 'Java核心', '马丁', '清华出版社', '科技类', '2020-08-03 15:04:42', '5', '1', '1', '5', '555', '67');
INSERT INTO `bookinfo` VALUES ('3', '0004', 'C++', '陈道明', '北大出版社', '科技类', '2019-08-03 15:47:01', '6', '4', '1', '4', '55', '65');
INSERT INTO `bookinfo` VALUES ('4', '0005', 'Java', '马丁', '郑州大学出版社', '科技类', '2019-08-03 16:06:46', '6', '1', '1', '5', '56', '45');
INSERT INTO `bookinfo` VALUES ('5', '0007', '数据结构', '马丁', '郑州大学出版社', '自然类', '2018-08-03 16:07:38', '5', '6', '3', '1', '43', '43');

Echarts的前端实现过程

1.首先是我们需要引入我们的前端的资源,这里我们主要是引入其相关的Echarts的相关的资源引入到我们的程序中去

<link rel="stylesheet" type="text/css" href="${ctx}/static/eacharjs/echarts.common.min.js" />

2.我们进行相关的功能的分析实现,我们进行相关的功能的设计,首先是对我们的请求的参数的获取和然后我们可以通过ajax异步请求来获取相关的功能的特点性,在这个流程中去获取我们所需要的参数,然后对其相关的水平的参数和其对于的数据的分析和判断,在这个过程中我们能够实现其相关的功能,其对于的功能的开发即是主要是参照echarts的官方文档进行相关的功能的分析和判断,下面为
https://echarts.apache.org/zh/tutorial.html#5%20%E5%88%86%E9%92%9F%E4%B8%8A%E6%89%8B%20ECharts

<script type="text/javascript">/*点击查询的时候就是提交表单*/function sear() {// 基于准备好的dom,初始化echarts实例var myChart = echarts.init(document.getElementById('box'));//利用3个变量接收这几个从前台传入的变量方便后面能够合理的使用产生搜索条件var author = $("#author").val();var bookName = $("#bookName").val();var classifyCode = $("#classifyCode").val();var logDateStart = $("#logDateStart").val();var logDateEnd = $("#logDateEnd").val();//分别定义作者和对应的年份的数组var Turnover = [];var year=[];var is=false;//发收ajax请求,异步获取相对应的数据$.ajax({url:'${ctx}/book/marking',data:{"author":author,"bookName":bookName,"classifyCode":classifyCode,"logDateStart":logDateStart,"logDateEnd":logDateEnd},dataType:'json',type:'post',success:function (data) {console.log(data);$.each(data.backMsg,function (index,obj) {var createTime = new Date(obj.createTime);if(year.length==0){year.push(createTime.getFullYear());//如果是第一个的话就把其对应的数据给加上Turnover[0]=obj.number;}else{for(var i=0;i<year.length;i++){if(year[i]==createTime.getFullYear()){is=true;//如果是重复的是,其对应的个数加上其数据和就行了Turnover[i]=Turnover[i]+obj.number;break;}}if(is==false){//如果这不重复的话就将其对于的值给重新加一个就行了year.push(createTime.getFullYear());Turnover[Turnover.length]=obj.number;}else{is=false;}}});// 指定图表的配置项和数据var option = {title: {text: '指定年份图书在馆数量'},tooltip: {},legend: {data:['作者/图书名称/图书类别']},xAxis: {data: year},yAxis: {},series: [{name: '作者/图书名称/图书类别',type: 'bar',data: Turnover}]}// 使用刚指定的配置项和数据显示图表myChart.setOption(option);}});}</script>

项目后台流程实现

1.首先是主要是对后台的数据的各层的写法,主要是包含着controller,service,和dao,这里主要是常规的写法,就不在一一的详细的讲解了,这里只展示核心代码,也就是与echarts生成相关的代码,其他的不相关的代码就不在啰嗦讲解,这里主要就是为了在后天对查询的代码进行相关的代码的实现

controller

    // 显然该数据是我们要进行相关的功能的匹配的@RequestMapping(value = "/marking")@ResponseBody // 根据需要来查询对应的相关的功能的特点 显然是通过这样返回json字符串的形式在返回数据public String marking(EcartsDateUtils ecarts) {System.out.println(ecarts);List<Book> books = bookService.marking(ecarts);// return books;return books;}

service

    //显然这是对其相关的相关的图书的匹配的相关的查询public List<Book> marking(EcartsDateUtils ecarts) {// TODO Auto-generated method stubreturn bookDao.marking(ecarts);}

dao

   //显然这里是对我们的ecarts的相关的功能的描述public List<Book> marking(EcartsDateUtils ecarts) {// TODO Auto-generated method stubList<Book> books = new ArrayList<Book>();books = sqlSession.selectList("BookDao.marking",ecarts);return books;}

mapper文件中对数据库的信息进行相关的功能的判断,其对应的sql语句的写法

    <!--根据自己的搜索条件来查询商品的数据 --><select id="marking" parameterType="com.nisco.core.util.EcartsDateUtils" resultType="map">select * from bookinfo<where><if test="author!=null and author!=''">and author = #{author}</if><if test="bookName!=null and bookName!=''">AND bookName LIKE '%${bookName}%'</if><if test="classifyCode!=null and classifyCode!=''">and classifyCode = #{classifyCode}</if></where>and createTime between #{logDateStart}and #{logDateEnd} order by createTime</select>

因为需求是我们是一个组合查询,这里博主是以一个工具类的方式进行了相关的功能的封装,将其实现的细节条件进行了相关的功能的封装,细节实现比较重要,大家注意一下。

package com.nisco.dms.entity;import com.nisco.dms.util.ExcelUtil.ExcelAnotation;public class Book{// 书编号private String bid;private String bookName;// 作者private String author;// 出版社private String publisher;// 分类编号private String classifyCode;// 创建时间private String createTime;// 书龄private String bookAge;// 是否可借private String isBorrowed;// 状态private String status;// 图书数量private String number;// 二维码private String qrCode;// 位置private String location;public String getBid() {return bid;}public void setBid(String bid) {this.bid = bid;}public String getBookName() {return bookName;}public void setBookName(String bookName) {this.bookName = bookName;}public String getBookAge() {return bookAge;}public void setBookAge(String bookAge) {this.bookAge = bookAge;}public String getAuthor() {return author;}public void setAuthor(String author) {this.author = author;}public String getPublisher() {return publisher;}public void setPublisher(String publisher) {this.publisher = publisher;}public String getClassifyCode() {return classifyCode;}public void setClassifyCode(String classifyCode) {this.classifyCode = classifyCode;}public String getCreateTime() {return createTime;}public void setCreateTime(String createTime) {this.createTime = createTime;}public String getIsBorrowed() {return isBorrowed;}public void setIsBorrowed(String isBorrowed) {this.isBorrowed = isBorrowed;}public String getStatus() {return status;}public void setStatus(String status) {this.status = status;}public String getNumber() {return number;}public void setNumber(String number) {this.number = number;}public String getQrCode() {return qrCode;}public void setQrCode(String qrCode) {this.qrCode = qrCode;}public String getLocation() {return location;}public void setLocation(String location) {this.location = location;}}

利用ECharts可视化mysql数据库中的数据相关推荐

  1. mysql的可视化图表_利用ECharts可视化mysql数据库中的数据

    这是工程所有文件的一个目录 工程文件目录 我做了一个柱状图,一个饼状图,一个折线图,配置过程很恶心,出了好多错,所以在这里记录一下. 如果想直接看 echarts 的部分,可以跳过下面数据库的建立. ...

  2. php怎么插入数据,利用PHP怎么向MySQL数据库中插入数据

    利用PHP怎么向MySQL数据库中插入数据 发布时间:2020-12-11 16:41:47 来源:亿速云 阅读:89 作者:Leah 这篇文章给大家介绍利用PHP怎么向MySQL数据库中插入数据,内 ...

  3. qsql 关联_QTableView与QSqlTableModel显示mysql数据库中的数据,怎么在QTableView的项中添加chekbox按钮与上拉列表啊真心求指导...

    QTableView与QSqlTableModel显示mysql数据库中的数据,如何在QTableView的项中添加chekbox按钮与下拉列表啊?真心求指导. 各位大侠好,利用QTableView与 ...

  4. mysql source导入_读取MySQL数据库中的数据【Python数据分析百例连载】

    当所需的数据存贮在MySQL数据库中时,那么数据分析首要任务就是要通过Pandas读取MySQL数据.例如,某网站注册用户信息保存在MySQL数据库中,如图所示(部分数据),下面将使用Pandas的r ...

  5. mysql double 转 字符串_没想到!在MySQL数据库中的数据有这三种类型!

    MySQL数据库是一个或多个数据列构成二维表,它的每一种数据列都有特定类型,而类型决定MySQL是怎么看待该列数据,如果把整型数值存放到字符类型的列中,MySQL则会把它当成字符串来处理. MySQL ...

  6. python excel模板 生成excel表格_python制作简单excel统计报表3之将mysql数据库中的数据导入excel模板并生成统计图...

    python制作简单excel统计报表3之将mysql数据库中的数据导入excel模板并生成统计图 #coding=utf-8 from openpyxl importload_workbookfro ...

  7. mye连接mysql数据库_MySQL_如何在Java程序中访问mysql数据库中的数据并进行简单的操作,在上篇文章给大家介绍了Myeclip - phpStudy...

    如何在Java程序中访问mysql数据库中的数据并进行简单的操作 在上篇文章给大家介绍了Myeclipse连接mysql数据库的方法,通过本文给大家介绍如何在Java程序中访问mysql数据库中的数据 ...

  8. jq获取内容ajax传递数据库,使用php和jquery ajax从mysql数据库中获取数据

    我想使用php和jquery ajax从mysql数据库中获取数据." process.php"是连接到数据库并获取mysql数据的php文件.当它单独运行时它可以工作,但是当使用 ...

  9. php mysql取出来,php从mysql数据库中取数据

    php从数据库中取数据  面向过程 $server_name="localhost:3306"; //数据库服务器名称 $username="root"; // ...

最新文章

  1. 刘小京 | 与盐碱地和谐共生-关于盐碱地改良利用的思考
  2. Scala可变数组ArrayBuffer:查询/修改/遍历/增加/删除
  3. VC++基于APR实现禁止某个业务(开发行为控制软件用得着,例如上班禁止上QQ)...
  4. RocketMQ消息支持的模式-消息异步发送
  5. Linux软件包管理的知识点,Linux基础知识之软件包管理(二)
  6. Leetcode--144. 二叉树的前序遍历(迭代递归)
  7. java怎么使用floor_Java floor() 方法
  8. 引擎优化的facebook中文网
  9. 一个做运营的朋友过来抱怨,现在HR谈薪都这么强硬吗?
  10. 书屋(三):《浪潮之巅》品各大百年公司兴衰历程
  11. 全球及中国信用卡生成器行业投资模式及投资策略分析报告2022-2028年
  12. 软著注销流程 软件著作权撤销 操作流程
  13. 腾讯云服务器入门使用流程 新手必看教程
  14. 简单的java文档扫描器
  15. 微信域名被屏蔽被封了的解决办法 微信网址被屏蔽了红了照样打开
  16. [LeetCode] 871. Minimum Number of Refueling Stops @ python
  17. 俗话说:十赌九输。因为大多数赌局的背后都藏有阴谋。不过也不尽然,有些赌局背后藏有的是:“阳谋”。
  18. 拓嘉辰丰:拼多多店铺装修有哪几个部分
  19. 【工业大数据】工业大数据真正要做的是智能分析和智能决策
  20. 开源的搜索引擎——详细概述

热门文章

  1. 哪里才能下载到好用的CAD建筑练习图纸?
  2. 转:从一个故事看经验、科学与伪科学
  3. 最全的PHP正则表达式
  4. 关于JS中的内存溢出与内存泄漏
  5. 流媒体技术笔记(视频编码相关)
  6. Programming C#.Classes and Objects.传递参数
  7. 什么是中文分词及中文分词的应用
  8. word被加密不能编辑如何破解
  9. JetBrain系列软件的学生授权认证及认证到期重新申请授权
  10. MATLAB 声音文件分析、处理。