天天看點

ECharts擷取資料庫中的内容

echart擷取資料庫中的内容附上下載下傳位址,可以自己去下載下傳

echarts是一個對于我完全陌生的事務,也許,它曾經出現在某個我浏覽的網頁上,但我是真的不認識它。哎,官網也真是的,每次給的demo全是死的資料,你讓我們這些什麼都不會的人怎麼看啊。哪還有人用死的資料啊。網上的解決方法也大都是php什麼的,看了也白看,隻能自己來了。

這裡的示例本來是一個降水量的柱形圖,我在資料庫建立了一個demo表,字段有:mon,jsl,zfl。讓圖表橫坐标顯示月份,柱形圖顯示蒸發量(zfl)。需要注意的是,在開始寫的時候google的控制台一直報錯,說$沒有定義,查了一下,說是jquery要放在做前面,我試了一下還是不行,後來發現是路徑的問題。

主要的解決方法就是将 xAxis 、 series 中的date改成調用别的方法。在這裡使用了getXX()來擷取數組。由于對hibernate也不是很了解,我利用sql查詢表中的一個字段時傳回出了錯。于是又自己寫了一個方法,調用查詢所有的資訊,在利用數組和for循環将值傳到數組中,傳回到js中。本來在網上查找到的ajax方法是這樣寫的:

function getMonth(){

var arrStr = new Array();

$.ajax({

type: "POST",

url: "syncData.jsp?line=0&r="+Math.random(),

  dataType:"text",

  async:false,  //同步

 success: function(data){

 eval(data);

 var dataChart = data.dataChart.split(",");

 for(var i = 0;i < dataChart.length; i++){

 arrStr.push(dataChart[i]);

 }

   }

}); 

return arrStr;

}

但是我試了一下,當我查詢蒸發量的時候,所有的資料都已經被查出來了,但是一月和十二月的資料卻沒有顯示,這讓我郁悶的很,後來改成下面的就可以了。

<!DOCTYPE html>

<head>

    <meta charset="utf-8">

    <title>ECharts</title>

    <script type="text/javascript" src="js/jquery.min.js"></script>

<script type="text/javascript" src="js/jquery.easyui.min.js"></script>

<script type="text/javascript" src="js/esl.js"></script>

</head>

<body>

    <div id="main" style="height:400px"></div>

    <script type="text/javascript">

        require.config({

            paths:{ 

                'echarts' : 'http://echarts.baidu.com/build/echarts',

                'echarts/chart/bar' : 'http://echarts.baidu.com/build/echarts'

            }

        });

    function getXname(){

    var arrStr = [];

    $.ajax({

    type: "POST",    

    url: "../do/mon/getMon",

      dataType:"text",

      async:false,  //同步

     success: function(data){

     arrStr = eval('('+data+')');

       }

    });

    return arrStr;

    }

    //x軸

    function getMonth(){

    url: "../do/mon/getZfl",

       arrStr = eval('('+data+')');

    }); 

        // 使用

        require(

            [

                'echarts',

                'echarts/chart/bar' // 使用柱狀圖就加載bar子產品,按需加載

            ],

            function(ec) {

                // 基于準備好的dom,初始化echarts圖表

                var myChart = ec.init(document.getElementById('main')); 

                var option = {

                   //提示框,滑鼠懸浮互動時的資訊提示

                    tooltip: {

                        show: true

                    },

                    //圖例,每個圖表最多僅有一個圖例

                    legend: {

                        data:['蒸發量']

                    //橫軸數組,

                    xAxis : [

                        {

                            type : 'category',  //橫軸預設類目型是category

                            data : getXname()

                        }

                    ],

                    //縱軸數組

                    yAxis : [

                            type : 'value'   //縱軸預設類目型value

                    //驅動圖表生成的資料内容數組

                    series : [

                            "name":"蒸發量",

                            "type":"bar",

                            "data": getMonth()

                    ]

                };

                // 為echarts對象加載資料 

                myChart.setOption(option); 

        );

    </script>

</body>

這裡是将所有的結果分開,我隻擷取它的月份,讓後添加到數組中。

@RequestMapping("/getMon")

public @ResponseBody String[] queryMon(){

Demo demo = new Demo();

String mon = null ;

List<Demo> demolist = service.findDemoMon();

System.out.println(demolist.size());

String[] array = new String[demolist.size()] ;

for(int i = 0 ; i < demolist.size() ; i++){

demo = demolist.get(i);

long dmon = demo.getMon();

mon = Long.toString(dmon) + "月";

array[i] = mon;

System.out.println(mon);