如何将mysql数据库中的方式通过echarts可视化呢,以下面这个简单的例子向大家进行演示:
 

步骤一:mysql的创表和插入数据,当然这些数据也可以是你通过爬虫抓取的。

 
 

步骤二:

 
创建实体类,

 
 
 

步骤三:通过java连接数据库

 
将连接数据库所需的jar包,导入WEB-INF下的lib目录下:
 
package db;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import entity.Bar;
public class BarDao {
 private static final String URL="jdbc:mysql://localhost:3306/bar?useUnicode=true&characterEncoding=UTF-8";
 
 
 private static final String USER="root";
 private static final String PASSWORD="123456";
 private static Connection conn=null;
 
  public ArrayList<Bar> query(){   //这里的query()方法是将从数据库中读取到的数据存储到集合中
   ResultSet rs = null;
   Statement st = null;
   ArrayList<Bar> barArr=new ArrayList<Bar>();
  try{
   Class.forName("com.mysql.jdbc.Driver"); //加载数据库驱动
  conn =DriverManager.getConnection(URL, USER, PASSWORD);  //获取数据库连接对象
  st = conn.createStatement();
  rs = st.executeQuery("select * from testbar");
   while(rs.next()){
    Bar bar=new Bar();
    bar.setName(rs.getString("name"));
    bar.setNum(rs.getInt("num"));
    barArr.add(bar);     //将从数据库中读取到的数据 以bar对象的方式存储到 集合中
   }
   conn.close();  //断开连接
  }catch(SQLException e){
   e.printStackTrace();
  }catch (ClassNotFoundException e) {
   e.printStackTrace();
  }
  
  return barArr;   //返回该集合
  }
 
 
 
  public void update(String name,Integer num){          //该方法用于更新数据
   try{
   
    Class.forName("com.mysql.jdbc.Driver"); //加载数据库驱动
    conn =DriverManager.getConnection(URL, USER, PASSWORD);  //获取数据库连接对象
    PreparedStatement ptmt=conn.prepareStatement("update testbar set num=? where name=? ");
    ptmt.setInt(1, num);
    ptmt.setString(2,name);
    ptmt.execute();
    
  
  }catch(SQLException e){
   e.printStackTrace();
  }catch (ClassNotFoundException e) {
   e.printStackTrace();
  }
   
  }
 
}
 

步骤四:创建servlet。

 
这里的BarService通过调用上面的query方法,获取从数据库中读取的Bar实例的集合,需要说明的是由于Echarts前台不能识别ArrayList对象,所以需要转换为JSONArray类型,转换的时候必须导入jar包,不然会报错,具体要使用到的jar包如下:
 
 
 
 
 
BarService.java代码:
 
public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  request.setCharacterEncoding("utf-8");  
  BarDao barDao=new BarDao();
  ArrayList<Bar>  barArr=barDao.query();  //调用BarDao的query方法。返回一个从数据库中读取之后的集合
  response.setContentType("text/html;charset=utf-8");
  JSONArray json=JSONArray.fromObject(barArr);   //将ArrayList对象转化为JSON对象,因为Echarts前台只能识别JSONArray,不能识别ArrayList类型
  //返回到jsp
  PrintWriter writer =response.getWriter();
  writer.println(json);
  writer.flush();
  writer.close(); //关闭输出流
 }
 
 
JsoService.java则是用于数据更新,我们会在下面JSP界面中创建文本框,通过post方式链接到该servlet页面进行业务逻辑,调用更新方法,可以将mysql中的数据进行更新:
 
 public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
   String name=request.getParameter("name");
   String num=request.getParameter("num");
   BarDao bDao=new BarDao();
   bDao.update(name,Integer.parseInt(num));  //调用更新方法并传入参数。
  
 }
 

步骤五:配置web.xml

 
 
这里的utl-pattern的地址会在jsp页面中的ajax的url进行使用。
 

步骤六:导入echarts,和并编写视图层代码

 
 
 
 

 <script src="echarts.min.js"></script>
 <script src="jquery-1.8.3.min.js"></script>
  </head>
 
  <body  onload="loadData()">
 
  <!-- 画图 -->
<div id="content" style="margin:40px auto;width:1300px;height:400px">
 
 <div id="myBarDiv" style="height:300px;width:430px;display:inline-block"></div> 
 <div id="myLineDiv" style="height:300px;width:430px;display:inline-block"></div>
 
 <div id="myTest" style="width:600px;height:60px;margin:20px auto">
  <label for="name">商品名称:</label><input type="text" id="myName">
   <label for="num">销量:</label><input type="text" id="myNum">
   <button id="myButton" type="submit" onClick="sub()">数据更新</button>
 </div>
</div>
 
<script type="text/javascript">
  function sub(){
   var j={"name":$("#myName").val(),"num":$("#myNum").val()};
   $.ajax({
    type:'post',
    url:'servlet/JsoService',
    dataType:'json',
    data:{"name":$("#myName").val(),"num":$("#myNum").val()},
    contentType:"application/x-www-form-urlencoded",
    success:function(message){
     alert("success");
    }
                                               //该区域用于数据更新
   
   });
   window.location.reload();
  }
 </script>
 
 <script type="text/javascript">
  function loadData(option){
   $.ajax({
    type:"post",                         //跳转方式为post
    async:false,                         //同步传输
    url:'servlet/BarService',      //跳转的界面,这里必须和web.xml中的url-pattern相同。跳转到该servlet之后,获取到JSONArray类型的数据,可以被Echarts识别。
    data:{},
    dataType:'json',          
    success:function(result){
     if(result){
      option.xAxis[0].data=[];
      for(var i=0;i<result.length;i++){
       option.xAxis[0].data.push(result[i].name);  //设置横坐标的数据
      }
      
      //初始化series[0]的data
      option.series[0].data=[];
      for(var i=0;i<result.length;i++){
       option.series[0].data.push(result[i].num);   //设置纵坐标的数据
      }
     }
    },
    error:function(errorMsg){
     alert("数据加载失败");
    }
    
    
   });
  }
 //初始化Echarts
 var myChart=echarts.init(document.getElementById('myBarDiv'));
 var option={
  title:{
   text:'柱状图'
  },
  tooltip:{
   show:true
  },
  legend:{
   data:['销量']
  },
  xAxis:[{
  
   type:'category'
  }],
  yAxis:[{
   type:'value'
  }],
  series:[{
   name:'销量',
   type:'bar'
   
  }]
 };
 loadData(option);  //加载数据到option
 myChart.setOption(option);  //设置option(画图)
 </script>
 
 
 <script type="text/javascript">
 var myChart=echarts.init(document.getElementById('myLineDiv'));
 var option={
  title:{
   text:'折线图'
  },
  tooltip:{
   show:true,
   trigger:'item'
  },
  legend:{
   data:['销量']
  },
   toolbox:{   //工具栏组件
               show:true,
               feature:{  //需要的功能
                   saveAsImage:{
                       show:true
                   },                      //保存为图片
                   dataView:{
                       show:true          //数据视图
                   },
                   dataZoom:{
                       show:true            //区域缩放与区域缩放还原
                   },
                   magicType:{
                       type:['line','bar']       //动态类型转换
                   }
               }
           },
  xAxis:[{
  
   type:'category'
  }],
  yAxis:[{
   type:'value'
  }],
  series:[{
   name:'销量',
   type:'line'
   
  }]
 };
 loadData(option);  //加载数据到option
 myChart.setOption(option);  //设置option
 </script>
 
 

步骤七:运行效果展示

 
这是初始化界面,当然这里只做了两个图,Echarts中还有很多模型,感兴趣的可以学习。
 
输入商品名称和销量点击数据更新后:
 
可以发现数据已经得到了更新,查看数据库中是否得到了更新:
 
 
可以看到,后台的数据也通过我们前台界面的修改得到了更新。至此整个过程就全部结束了。
 
总结:如何利用数据库中的数据将其可视化。主要步骤为:首先通过编程语言链接到数据库,这里可以选择JAVA.PHP等 然后获取到数据库中的数据。在servlet中调用调用方法,获取到数据,然后将其转换为Echarts可以识别的JSONArray类型的数据,当然这里是需要导入jar包的。然后在视图层,通过Ajax的同步传输的方式,指定跳转的方式为post,以及url为跳转的servlet,通过执行该servlet的方法来获取到数据,或者其他操作。最后返回数据;然后就可以导入Echarts进行初始化,通过调用方法获取到ajax中的数据,最后调用该option进行可视化。
 

利用Ajax实现数据的同步传输,从mysql中提取数据,通过echarts可视化的更多相关文章

  1. Vusual C++连接Mysql和从MySql中取出数据的API介绍

    .1 mysql_real_connect() 2.1.1 函数原型: MYSQL *mysql_real_connect(MYSQL *mysql, const char *host, const ...

  2. load data导txt文件进mysql中的数据

    1.实验内容: 利用SQL语句“load data ”将“.txt”文本文件中的数据导入到mysql中 2.实验过程: 首先我创了一个txt(也可以是其他的),设置其编码为utf-8,在windows ...

  3. 用python批量向数据库(MySQL)中导入数据

    用python批量向数据库(MySQL)中导入数据 现有数十万条数据,如下的经过打乱处理过的数据进行导入 数据库内部的表格的数据格式如下与下面的表格结构相同 Current database: pyt ...

  4. PHP如何批量更新MYSQL中的数据

    最近项目需要用到批量更新数据库里的数据,在网上找了一下这方面的例子,觉得这个还不错,分享给大家. 在这个业务里里面涉及到了更新两张数据表,那么大家是不是会想到非常简单,马上上代码 $sql ,type ...

  5. hadoop项目实战--ETL--(二)实现自动向mysql中添加数据

    四 项目开发 1 创建数据库db_etl,新建两张表user 和oder.表结构如第一部分图所示. 2 编写python脚本,实现自动向mysql中插入数据. 新建python 项目,目录结构如下图 ...

  6. PHP读取mysql中的数据

    <!DOCTYPE HTML> <html> <head> <title> PHP动态读取mysql中的数据 </title> <me ...

  7. ajax异步获取数据后动态向表格中添加数据(行)

    因为某些原因,项目中突然需要做自己做个ajax异步获取数据后动态向表格中添加数据的页面,网上找了半天都没有 看到现成的,决定自己写个例子 1.HTML页面 <!doctype html> ...

  8. 辛星浅谈mysql中的数据碎片以及引擎为MyISAM下的操作

    对于mysql中的数据碎片,事实上和我们删除数据是息息相关的,删除数据的时候必定会在数据文件里造成不连续的空白空间,对于少量的数据的删除,并不会产生多少的空白空间.假设在一段时间内的大量的删除操作,会 ...

  9. PHP批量更新MYSQL中的数据

    原文链接:https://blog.csdn.net/wuming19900801/article/details/62893429 $sql = "update newhouse_clic ...

随机推荐

  1. zedboard通过BRAM实现PS和PL的简单通信

    使用Block Memory进行PS和PL的数据交互或者数据共享,通过zynq PS端的Master GP0端口向BRAM写数据,然后再通过PS端的Mater GP1把数据读出来,将结果打印输出到串口 ...

  2. 题解 AT1812 【テレビ】

    题目大意 高桥君有一个宽\(w\),高\(h\)的电视机. 判定\(w:h\)是\(4:3\)还是\(16:9\). 分析 我们可以理解成把一个比\(w:h\)化为最简整数比,也就是将\(w:h\)化 ...

  3. float浮动造成高度塌陷的解决办法

    Float是我们在页面布局中常用的,也是非常重要的一个属性,可以让页面布局变得更加灵活. 但是在继续学习之后,尤其是掌握了宽高自适应之后,我们常常会发现一个奇怪的现象:如果父元素没有设置高度,而子元素 ...

  4. mysql建立索引类型及索引建立的原则

    索引类型:Unique(唯一索引,一般为主键),Normal(一般索引,普通字段,可做组合索引),索引方法:BTREE 1.选择唯一性索引 唯一性索引的值是唯一的,可以更快速的通过该索引来确定某条记录 ...

  5. 使用vim打开文件的16进制形式,编辑和全文替换

    1.先用vim打开文件的二进制形式,如果不以二进制可能会产生转换错误. vim -b file-to-open.dat 2.用xxd把文件转换成十六进制格式 :%!xxd 现在就可以对待普通文本一样查 ...

  6. ECMAScript基本语法——⑥流程控制语句

    if...else...switch...case... 在java中能接收的数据类型:byte .short.char.int.枚举类型(JDK5.0新增).String类型(JDK7.0新增) s ...

  7. jpa报错object references an unsaved transient instance

    错误原因: 在调用hibernate存储数据时,需要将数据库中表对应的持久类对象作为参数传递.如果这时的对象中有其他的表字段属性并且是引用对象类型,那么这个属性必须是持久态或者是null的,瞬时态和脱 ...

  8. Bootstrap资料

    Bootstrap手册  : https://www.jqhtml.com/bootstraps-syntaxhigh/index.html 中文文档 :https://v3.bootcss.com/ ...

  9. Spring-session+Redis解决Session共享

    1. 保证Redis启动           2. 导入依赖                SpringBoot+Spring-Session+Redis <!--spring boot 与re ...

  10. Windows中配置maven环境变量

    添加maven环境变量 添加新的系统环境变量:MAVEN_HOME 设置其值为你安装的目录:D:\IT_program\apache-maven-3.6.0 更新系统PATH 变量 添加变量值:%MA ...