实验目的
    1、熟悉 JQuery 的使用方法
    2、熟悉 JQuery 中 ajax 的使用步骤
    3、掌握 Echarts、ajax 和 Springboot 的结合
    实验环境
    1、64 位电脑,8G 以上内存
    2、win10 系统
    3、IDEA2021 环境
    实验步骤:
    1. 首先是实现从 Controller 获取数据。在上一个实验基础上新建网页文件 并且更改文件内容如下,

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>查询用户</title>
    6. <!-- <script src="/jquery-3.5.1.min.js"></script>-->
    7. <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.js"></script>
    8. <script src="/echarts.min.js"></script>
    9. </head>
    10. <body>
    11. <div id="main" style="width: 800px;height:800px;"></div>
    12. <script type="text/javascript">
    13. var myChart = echarts.init(document.getElementById('main'));
    14. var option = {
    15. title: {
    16. text: 'ECharts 实例'
    17. },
    18. tooltip: {},
    19. legend: {
    20. data:['考试分数']
    21. },
    22. xAxis: {
    23. data: ["语文","数学","英语","地理","生物","化学"]
    24. },
    25. yAxis: {},
    26. series: [{
    27. name: '分数',
    28. type: 'bar',
    29. data: [75, 80, 76, 90, 80, 60]
    30. }]
    31. };
    32. </script>
    33. </body>
    34. </html>
    1. 建立传递数据的分数类

    在项目目录下新建 pojo 包,并在包内建立 Score 类,如下图,为了方便管理,将 Users 类也移入包中,
    也可以建立如下所示的 controller 包,并将 Echarts 类移入包中
    image.png
    Score 类的内容如下:

    public class Score {
        private double Chinese;
        private double Math;
        private double English;
        private double Geography;
        private double Biology;
        private double Chymistry;
        //省略 get,set 和 toString 方法
    
    
        public double getChinese() {
            return Chinese;
        }
    
        public void setChinese(double chinese) {
            Chinese = chinese;
        }
    
        public double getMath() {
            return Math;
        }
    
        public void setMath(double math) {
            Math = math;
        }
    
        public double getEnglish() {
            return English;
        }
    
        public void setEnglish(double english) {
            English = english;
        }
    
        public double getGeography() {
            return Geography;
        }
    
        public void setGeography(double geography) {
            Geography = geography;
        }
    
        public double getBiology() {
            return Biology;
        }
    
        public void setBiology(double biology) {
            Biology = biology;
        }
    
        public double getChymistry() {
            return Chymistry;
        }
    
        public void setChymistry(double chymistry) {
            Chymistry = chymistry;
        }
    
        @Override
        public String toString() {
            return "Score{" +
                    "Chinese=" + Chinese +
                    ", Math=" + Math +
                    ", English=" + English +
                    ", Geography=" + Geography +
                    ", Biology=" + Biology +
                    ", Chymistry=" + Chymistry +
                    '}';
        }
    }
    

    4. 建立用于前端访问的两个方法,如下
    在Echarts中

    @GetMapping("/login3") 
    public String EchartTest3_1(Model model){ 
        // model.addAttribute("currentYear",2021); 
        return "echarts3"; 
    }
    @RequestMapping(value = "/index3",method = RequestMethod.POST) 
    @ResponseBody 
    public Score EchartTest3_2(Score score){ 
        // model.addAttribute("currentYear",2021); 
        score.setChinese(80); 
        score.setMath(100); 
        score.setEnglish(70); 
        score.setGeography(100); 
        score.setBiology(100); 
        score.setChymistry(60); 
        System.out.println(score); 
        // System.out.println("成功!"); 
        return score; 
    }
    
    1. 运行程序,测试网页是否正常

    image.png
    6. 升级前端网页文件如下,使之能够接收后台数据。
    添加:

            $.ajax({
                url:"/index3",
                type:"post",
                async:false,
                success:function(r) {
                    console.log(r);
                    var temp1 = r.chinese;
                    option.series[0].data[0] = r.chinese;
                    option.series[0].data[1] = r.math;
                    option.series[0].data[2] = r.english;
                    option.series[0].data[3] = r.geography;
                    option.series[0].data[4] = r.biology;
                    option.series[0].data[5] = r.chymistry;
                    // myChart.setOption(option);
                }
    
            })
    

    7. 运行程序,测试是否可以顺利从后台获取数据
    image.png
    8. 以下实现从数据库表中获取数,首先建立 pojo 类对应的数据表,并填入数据

    CREATE TABLE `tb_score` ( 
      `ID` int(11) NOT NULL AUTO_INCREMENT, 
      `Chinese` decimal(6, 2) DEFAULT NULL, 
      `Math` decimal(6, 2) DEFAULT NULL, 
      `English` decimal(6, 2) DEFAULT NULL, 
      `Geography` decimal(6, 2) DEFAULT NULL, 
      `Biology` decimal(6, 2) DEFAULT NULL, 
      `Chymistry` decimal(6, 2) DEFAULT NULL, PRIMARY KEY (`ID`) USING BTREE 
    ) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; 
      INSERT INTO `tb_score` VALUES (1, 80.00, 90.00, 100.00, 10.00, 60.00, 20.00);
    

    image.png
    9. 引入 MySQL 和 MyBatis 的依赖

            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <scope>runtime</scope>
            </dependency>
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>2.2.2</version>
            </dependency>
    

    10.编写配置文件
    在配置文件 application.properties 中添加以下内容

    spring.datasource.url=jdbc:mysql://localhost:3306/echarts?serverTimezone=UTC
    spring.datasource.username=root
    spring.datasource.password=1234
    

    11.使用注解方式整合 MyBatis
    1
    在项目目录下创建 dao 包,在包中创建 Mapper 接口 ScoreMapper:使用注解@Mapper 和@Select,
    关键代如下:

    @Mapper
    public interface ScoreMapper {
        @Select("select * from tb_Score where Id=#{Id}")
        public Score ScoreFindById(Integer Id);
    }
    

    2
    编写测试方法进行接口方法测试及整合测试,关键代如下:

    @Autowired 
    private ScoreMapper scoreMapper; 
    @Test 
    void SelectScore(){ 
        Score score=scoreMapper.ScoreFindById(1); 
        System.out.println(score); 
    }
    

    12.让 Echarts 从数据库中获取数据
    更改 Controller 中 index3 对应的方法,将以前的固定数据注销,增加从数据库读取的代码,如下图所示。
    image.png

        @Autowired
        private ScoreMapper scoreMapper;
        @RequestMapping(value = "/index3",method = RequestMethod.POST)
        @ResponseBody
        public Score EchartTest3_2(Score score){
           Score score1=scoreMapper.ScoreFindById(1);
            return score1;
        }
    

    13.运行,测试,如下图所示
    image.png

    修改数据库的数据,观察柱状图是否有改变。
    image.png
    image.png