Echarts连接数据库使用Ajax的简单使用

一、项目环境

  • IDEA2019.3.3
  • MySql 5.7
  • SSM
  • echarts.js 

二、 柱状图简单案例

1.创建一个book表

2.后台准备

book实体类:

public class Book {
    private Integer bid;

    private String bname;

    private String btype;

    private Integer bnumber;

    public Book(Integer bid, String bname, String btype, Integer bnumber) {
        this.bid = bid;
        this.bname = bname;
        this.btype = btype;
        this.bnumber = bnumber;
    }

    public Book() {
        super();
    }

    public Integer getBid() {
        return bid;
    }

    public void setBid(Integer bid) {
        this.bid = bid;
    }

    public String getBname() {
        return bname;
    }

    public void setBname(String bname) {
        this.bname = bname;
    }

    public String getBtype() {
        return btype;
    }

    public void setBtype(String btype) {
        this.btype = btype;
    }

    public Integer getBnumber() {
        return bnumber;
    }

    public void setBnumber(Integer bnumber) {
        this.bnumber = bnumber;
    }
}

mapper层:

@Repository
public interface BookMapper {
    List<Book> selectAll();
}

service层:

public interface IBookService {
    List<Book> selectAll();
}

service实现类:

@Service
public class BookServiceImpl implements IBookService {
    @Autowired
    private BookMapper bookMapper;

    @Override
    public List<Book> selectAll() {
        return bookMapper.selectAll();
    }
}

mapper映射文件:

<?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.zking.news.mapper.BookMapper" >
  <resultMap id="BaseResultMap" type="com.zking.news.model.Book" >
    <constructor >
      <idArg column="bid" jdbcType="INTEGER" javaType="java.lang.Integer" />
      <arg column="bname" jdbcType="VARCHAR" javaType="java.lang.String" />
      <arg column="btype" jdbcType="VARCHAR" javaType="java.lang.String" />
      <arg column="bnumber" jdbcType="INTEGER" javaType="java.lang.Integer" />
    </constructor>
  </resultMap>
  <sql id="Base_Column_List" >
    bid, bname, btype, bnumber
  </sql>
    <select id="selectAll" resultType="com.zking.news.model.Book">
      select * from book
    </select>
</mapper>

Controller层:

@Controller
public class IndexController {

    @Autowired
    private IBookService bookService;

    @RequestMapping("/All")
    public String toAll(){
        return "echarts";
    }

    @RequestMapping("/getAll")
    @ResponseBody
    public List<Book> selectAll(){
        List<Book> books = bookService.selectAll();
        System.out.println("books"+books);
        return books;
    };

}

三、前台页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>ECharts</title>
    <%@include file="/common/head.jsp"%>
    <!-- 引入刚刚下载的 ECharts 文件 -->
    <script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery-3.4.1.min.js"></script>
    <script src="${pageContext.request.contextPath}/js/echarts.js"></script>
</head>
<body>
<!-- 为 ECharts 准备一个定义了宽高的 DOM -->
<div id="main" onclick="year()" style="width: 600px;height:400px;"></div>
<script type="text/javascript">
    function year(){
        var ctx = "${pageContext.request.contextPath}";
        var da = [];
        var nums = [];
        //这里是根据下拉框的内容进行柱形数据转化的
        $.ajax({
            url:ctx+'/getAll',//要请求的服务器url
            async:true,   //是否为异步请求
            cache:false,  //是否缓存结果
            type:"POST", //请求方式为POST
            dataType:"json",   //服务器返回的数据是什么类型
            success:function(result){  //这个方法会在服务器执行成功是被调用 ,参数result就是服务器返回的值(现在是json类型)
                var rows = result;
                console.log(result)
                //遍历循环从后台传过来的数据,将要用的数据放到定义好的数组中,不然获取不到值
                for(var i = rows.length-1;i>=0;i--){
                    da.push(rows[i].bname);
                }
                for(var i = rows.length-1;i>=0;i--){
                    nums.push(rows[i].bnumber);
                }
                if(result){
                    myChart.setOption({        //给echarts图标赋值
                        xAxis: {
                            data: da
                        },
                        series: [{
                            data: nums
                        }]
                    });
                }else{
                    alert("网页错误,请重写刷新网站")
                }
            }
        })
        // 基于准备好的dom,初始化echarts实例
        var myChart = echarts.init(document.getElementById('main'));
        // 指定图表的配置项和数据
        var option = {
            title: {
                text: '书本销量分析'
            },
            tooltip: {},
            legend: {
                data:['销量']
            },
            xAxis: {
                data: da,
                axisLabel : {//标签内容太长的解决方案  坐标轴刻度标签的相关设置。
                    interval:0,
                    rotate:"45"
                }
            },
            yAxis: {},
            series: [{
                name: '销量',
                type: 'bar',//折线line 柱形bar			         data: nums,
                itemStyle : {//设置折线的颜色,点的颜色
                    normal : {
                        color:'#1A94E6'
                    },
                    lineStyle:{
                        color:'#1A94E6'
                    }
                }

            }]
        };

        // 使用刚指定的配置项和数据显示图表。
        myChart.setOption(option);
    }
</script>
</body>
</html>

效果:

 博主水平有限,难免有错。欢迎评论交流

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值