进入Spring官网,ADD DEPENDENCIES选择Lombok、Spring Web、MySQL Driver、MariaDB Driver

https://start.spring.io/

然后得到一个压缩包demo,选择自己想要的位置解压,这里我本人选择解压到了E盘,自己能找到就可以,然后编程IDEA打开,你就得到了这么一个目录,注意,test目录是测试目录,main才是我们主要的目录,打包后的资源也是以main下面的java目录为准

先编辑我们的pom.xml,这里我的pom.xml是:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.1</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>demo</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>2.7.1</version>
        </dependency>

        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.2.2</version>
        </dependency>

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.1.2</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>provided</scope>
            <optional>true</optional>
            <version>2.7.18</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.33</version>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
            <version>1.18.30</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <version>2.7.1</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
            <version>2.7.18</version>
        </dependency>

        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <version>5.8.1</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-site-plugin</artifactId>
            <version>2.4</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>


        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
            <version>2.7.18</version>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.6.0</version>
            </plugin>
        </plugins>
    </build>
    <packaging>jar</packaging>
</project>

然后编辑application.yml ,在resource目录下面,正常应该是application.properties,不过没事,我们创建一个yml或者直接改后缀名,URL的这里改成自己的数据库地址和数据库名,我的是47.93.153.170,数据库为ren,下面的username是数据库用户名,password是数据库密码

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://47.93.153.170:3306/ren?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&zeroDateTimeBehavior=CONVERT_TO_NULL
    username: ren
    password: 123456789
  jpa:
    properties:
      hibernate:
        dialect: org.hibernate.dialect.MySQL5InnoDBDialect
  web:
    resources:
      static-locations: classpath:/templates/, classpath:/static/
logging:
  level:
    org.springframework.data.jpa: DEBUG
    com.zaxxer.hikari: DEBUG

现在可以开始编写我们的代码来接受后端数据了,请确保你的数据库有数据,这里以我个人的为准。在main/java/com/example/demo下面创建目录,如图依次创建目录-contrllor、Dao、entity、service,在service下面再创建一个impI

DemoApplication是我们的启动类,所以代码完成后运行才可以

Entity层:Entity层,顾名思义就是实体层,放置一个个实体,及其相应的set、get方法。如果想要对数据库进行一些操作(比如说读取)的话,就要先写entity层

Dao层:Dao是数据访问层,Dao的作用是封装对数据库的访问:增删改查,不涉及业务逻辑,只是达到按某个条件获得指定数据的要求

service层:Service被称作业务逻辑层。顾名思义,它处理逻辑上的业务,而不去考虑具体的实现

controller层:Controller层的主要职责包括接收用户的输入请求、解析请求数据、调用相应的业务逻辑层进行处理,并最终将处理结果以适当形式返回给用户

这里我们的事例只需要修改Entity层和controller层就好了

在Entity目录下面创建java类chu_guoEntity,其中@TableName("chu_guo")改为你自己的数据表,下面的qu和yuan改成你表里面的列名

package com.example.demo.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

import java.io.Serializable;

@Data
@TableName("chu_guo")
public class chu_guoEntity implements Serializable {
    private static final Long serialVersionUID = 1L;

    @TableField
    private String qu;
    private int yuan;

}

在controller目录下面创建java类chu_guoController,其中

@RequestMapping("useractioncount")和@RequestMapping("list")为端口地址,如/useractioncount/list,可以改成自己想要的
package com.example.demo.contrlloer;

import com.example.demo.entity.chu_guoEntity;
import com.example.demo.entity.chu_guoEntity;
import com.example.demo.service.chu_guoService;
import com.example.demo.service.chu_guoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
@RequestMapping("useractioncount")
public class chu_guoController {

    @Autowired
    private chu_guoService chu_guoService;
    @RequestMapping("list")
    public List<chu_guoEntity> list(){
        return chu_guoService.list();
    }
}

在Dao目录下面创建接口chu_guoDao

package com.example.demo.Dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.demo.entity.chu_guoEntity;
import com.example.demo.entity.chu_guoEntity;
import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface chu_guoDao extends BaseMapper<chu_guoEntity> {
}

在service目录下面创建接口chu_guoService

package com.example.demo.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.example.demo.entity.chu_guoEntity;
import com.example.demo.entity.chu_guoEntity;

public interface chu_guoService extends IService<chu_guoEntity> {
}

在service下面的impI目录创建Java类

package com.example.demo.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.example.demo.Dao.chu_guoDao;
import com.example.demo.entity.chu_guoEntity;
import com.example.demo.service.chu_guoService;
import org.springframework.stereotype.Service;

@Service("useractioncountService")
public class chu_guoServiceImpl extends ServiceImpl<chu_guoDao, chu_guoEntity> implements chu_guoService {
}

我们的数据接收映射就完成了,现在来看看,点击DemoApplication运行一下,这是正常启动页面,不会直接结束退出,如果直接退出请仔细查看红色报错,是否是端口被占用,还是其他问题接下来在我们本地的浏览器查看端口,浏览器输入localhost:8080/useractioncount/list

数据接收映射成功,接下来布置我们的前端页面,在main/resources/templates下面创建JS目录用于存放css样式

在templates目录下面创建bar-trend.html文件,这里因为我只有俩个数据使用的是柱状图,所以就只有俩个数组,如果有多个数据和想要使用其他图表类型,可以直接copy复制去一些AI上面让它帮忙修改,比较推荐使用通义灵码,也可以使用网页版的讯飞星火,文心一言等。

<!DOCTYPE html>
<html>

<!--出口-->
<head>
    <meta charset="utf-8">
    <title>柱状图</title>
    <!-- 引入 echarts.js -->
    <script src="/js/echarts.min.js"></script>
    <script src="/js/jquery-3.5.1.min.js"></script>
</head>
<body>
<!-- 为ECharts准备一个具备大小(宽高)的Dom -->
<div id="main" style="width: 100%;height:300px;"></div>
<script type="text/javascript">

    var chartDom = document.getElementById('main');
    var myChart = echarts.init(chartDom);
    var option;

    let xAxisData = [];
    let data1 = [];

    // 请求后端接口获取数据
    $.ajax({
        url: '/useractioncount/list',
        type: 'GET',
        dataType: 'json',
        success: function (data) {
            for (let i = 0; i < data.length; i++) {
                xAxisData.push(data[i].qu);
                data1.push(+data[i].yuan);
            }

            var emphasisStyle = {
                itemStyle: {
                    shadowBlur: 10,
                    shadowColor: 'rgba(0,0,0,0.3)'
                }
            };
            option = {
                legend: {
                    data: ['百万美元'],
                    left: '10%',
                    textStyle: {
                        color:'white'
                    }
                },
                brush: {
                    toolbox: ['rect', 'polygon', 'lineX', 'lineY', 'keep', 'clear'],
                    xAxisIndex: 0
                },
                toolbox: {
                    feature: {
                        magicType: {
                            type: ['stack']
                        },
                        dataView: {}
                    }
                },
                tooltip: {},
                xAxis: {
                    data: xAxisData,
                    name: '出口国',
                    axisLine: { onZero: true },
                    splitLine: { show: false },
                    splitArea: { show: false },
                    axisLabel: {
                        color:'white'
                    }
                },
                yAxis: {
                    axisLabel: {
                        color:'white'
                    }
                },
                grid: {
                    bottom: 100
                },
                series: [
                    {
                        name: '百万美元',
                        type: 'bar',
                        stack: 'one',
                        emphasis: emphasisStyle,
                        data: data1
                    },
                ]
            };
            myChart.on('brushSelected', function (params) {
                var brushed = [];
                var brushComponent = params.batch[0];
                for (var sIdx = 0; sIdx < brushComponent.selected.length; sIdx++) {
                    var rawIndices = brushComponent.selected[sIdx].dataIndex;
                    brushed.push('[Series ' + sIdx + '] ' + rawIndices.join(', '));
                }
                myChart.setOption({
                    title: {
                        backgroundColor: '#06cffc',
                        text: 'SELECTED DATA INDICES: \n' + brushed.join('\n'),
                        bottom: 0,
                        right: '10%',
                        width: 100,
                        textStyle: {
                            fontSize: 12,
                            color: '#fff'
                        }
                    }
                });
            });

            option && myChart.setOption(option);
        }
    });

</script>
</body>

自此,我们的一个数据图表就成功了,再次运行一下DemoApplication试试,浏览器输入http://localhost:8080/bar-trend.html

接下来我们多创建几个数据组成大屏,在Dao、controller、Entity和service下面多创建几个文件,同上操作,只需要修改Entity层的接收数据和controller的映射端口就可以,这里我包括第一个外一共创建了六个,再在templates下面创建htnl文件来存放图表,代码如上,如果不想自己动手就负责代码去AI让它帮忙修改,如:

(copy的代码)

要求

接下来我们创建一个用于存放所有图表的html文件,并且使用css样式对页面样式进行一下排版美化用于展示,这里我用的index.html,里面的每一个iframe标签里面的scr就是对应的html图表文件,

<!DOCTYPE html>
<!-- saved from url=(0047)http://yuanbaoshuju.com/bigscreen/17/index.html -->
<html lang="en" style="font-size: 66.4062px;">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="renderer" content="webkit">
    <meta name="viewport" content="width=device-width,initial-scale=1.0,user-scalable=no">
    <script type="text/javascript"></script><style type="text/css"></style>
    <link rel="stylesheet" href="./JS/style.css">
    <link rel="stylesheet" href="bootstrap-4.3.1/css/bootstrap.min.css">
    <link rel="stylesheet" href="bootstrap-4.3.1/css/bootstrap.css">

</head>
<body class="index">
<div class="container-flex container" tabindex="0" hidefocus="true" style="margin: 0; padding: 0;width: 100%;color: white">
    <!--    <div class="box-left col-sm-4 col-12">-->
    <!--        <div class="left-top" style="height: 100%">-->
    <div style="font-size: 0.8rem;text-align: center">中国粮食产量</div>
    <div class="html_7 col-sm-4 col-12">
        中国粮食分产品进出口情况
        <iframe align="center" width="100%" height="300px" src="k.html" color=white" frameborder="no" border="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
    </div>
    <div class="html_3 col-sm-4 col-12">
        <iframe align="center" width="100%" height="350px" src="line.html" frameborder="no" border="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
    </div>

    <div class="right-top col-sm-4 col-12">
        主要进口来源地
        <iframe align="center" width="100%" height="300" src="bar.html" frameborder="no" border="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
    </div>

    <div class="right2 col-sm-4 col-12">
        主要出口目的地
        <iframe align="center" width="100%" height="300" src="bar-trend.html" frameborder="no" border="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
    </div>

    <div class="left-1 col-sm-4 col-12">
        各个粮食产品总产量(2023)
        <iframe align="center" width="100%" height="300px" src="pie.html" frameborder="no" border="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
        各省份粮食总产量
        <iframe align="center" width="100%" height="300px" src="endindex.html" frameborder="no" border="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
    </div>
    <div class="html_5 col-sm-4 col-12">
        <iframe align="center" width="100%" height="600px"  src="map.html" frameborder="no" border="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
    </div>

    <div class="html_9 col-sm-4 col-12">
        各省份粮食单位面积产量
        <iframe align="center" width="100%" height="300" src="bar-negative.html" frameborder="no" border="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
    </div>

    <!--    </div>-->
</div>

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

</body>
</html>

运行DemoApplication,浏览器输入localhost:8080,默认就是index.html页面

具体美化样式根据自己需求修改,这里我还使用了bootstrap自适应框架,可以到官网下载使用,适配不同页面大小显示效果,这里我下载的bootstrap V4,bootstrap的具体使用可以到B站找一些视频来看看就好了。Bootstrap中文网 (bootcss.com)

下载后得到压缩包bootstrap4.3.1,我们解压后放到我们的jstemplates目录下面,

并在index.html中引入它,在大的div盒子里面添加class类container,里面的每一个小div盒子,也就是存放图表iframe的div盒子,添加大屏col-log、中屏col-sm、小屏col,对应电脑端,iPad端,手机端,这里因为我的iPad端和电脑端显示一样,所以我就只设置了col-sm-4和col-12

这样子我们的一个自适应框架也做好了,对比一下没有添加自适应框架的和添加了的区别看看,页面右键检查

下面是没有添加自适应的

这是添加了自适应框架的:

到这里我们的数据大屏就完成了,具体样式美化就由自己决定,可以考虑部署到云服务上,具体教程很多,这里我推荐利用宝塔面板部署springboot项目【包括打jar包】_mvn项目 在宝塔面板 怎么启动-CSDN博客

保姆级教程——将springboot项目部署到阿里云服务器(小白包会)_怎么把框架项目放到阿里云公网上-CSDN博客

我把我原本项目文件和打包出来的jar都放到了夸克网盘上面,原项目结构文件为demo,打包出来的jar文件在demo的target下面,名为demo-0.0.1-SNAPSHOT.jar,可以直接cmd目录,然后java -jar demo-0.0.1-SNAPSHOT.jar运行一下试试能不能用,请注意运行的目录

如有相关问题请私信我

文件地址:

我用夸克网盘分享了「demo.rar」,点击链接即可保存。打开「夸克APP」,无需下载在线播放视频,畅享原画5倍速,支持电视投屏。
链接:https://pan.quark.cn/s/fb30256863eb

Logo

永洪科技,致力于打造全球领先的数据技术厂商,具备从数据应用方案咨询、BI、AIGC智能分析、数字孪生、数据资产、数据治理、数据实施的端到端大数据价值服务能力。

更多推荐