数据大屏后端接口开发案例
如何创建一个 maven 项目,开发后端接口,这里演示一个练习案例,从数据库获取数据,然后在网页显示。
本文章面向群体为入门级学者,文章产生于作者大学课程学习期间,参考网上其他博主教程,总结归纳所得。
1 maven 环境配置
1.1 下载好 maven 本地仓库
如图
1.2 配置环境
在 maven 安装路径下的 conf 文件夹中的 settings.xml 中进行相关配置,如图
1.3 国内镜像
为了后续下载一些依赖包速度更快,在 maven 安装路径下的 conf 文件夹中的 settings.xml 中进行相关配置,我这里使用的是阿里云镜像,如图
<mirrors>
<!-- 阿里云私服 -->
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
2 IDEA 配置
配置如图
3 准备数据
在 MySQL 创建表 TopN,并将 HDFS 上文件导入 MySQL(数据是我的文章《MapReduce介绍及实践》中的 TopN 案例结果),相关命令不多介绍,有需要可以查看我的文章《MapReduce介绍及实践》和《Hadoop 集群部署及简要使用(Hadoop2.7)》,如图
查看是否导入成功,如图
4 创建 Maven 项目
如图
5 编写代码
最终项目结构如图,接下来逐个介绍:
5.1引入依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.7</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.3</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
5.2 TopNApplication
package com.itheima;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@MapperScan("com.itheima.mapper")
@SpringBootApplication
public class TopNApplication {
public static void main(String[] args) {
SpringApplication.run(TopNApplication.class, args);
}
}
5.3 实体类
package com.itheima.entity;
public class TopN {
private String uid;
private String watchnumpv;
public String getUid() {
return uid;
}
public void setUid(String uid) {
this.uid = uid;
}
public String getWatchnumpv() {
return watchnumpv;
}
public void setWatchnumpv(String watchnumpv) {
this.watchnumpv = watchnumpv;
}
@Override
public String toString() {
return "TopN{" +
"uid='" + uid + '\'' +
", watchnumpv=" + watchnumpv +
'}';
}
}
5.4 控制层
package com.itheima.controller;
//import org.springframework.web.bind.annotation.CrossOrigin;
//import org.springframework.web.bind.annotation.GetMapping;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.RestController;
import org.apache.ibatis.type.TimeOnlyTypeHandler;
import org.springframework.web.bind.annotation.*;
import com.itheima.entity.TopN;
import com.itheima.service.TopNService;
import javax.annotation.Resource;
import java.util.List;
@RestController
@CrossOrigin
@RequestMapping("/topn")
public class TopNController {
@Resource
private TopNService topnService;
@GetMapping("/hello")
public String hello(){
return "hello spring boot ";
}
@GetMapping("/test")
public String test(){
return "希望大家把项目搭建起来";
}
@GetMapping("/list") //get 查询
// @PostMapping("/list")//post //put //deletet
public List<TopN> list(){
List<TopN> list = topnService.list();
return list;
}
}
5.5 服务层
package com.itheima.service;
import com.itheima.entity.TopN;
import com.itheima.mapper.TopNMapper;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
@Service
public class TopNService {
@Resource
private TopNMapper topnMapper;
public List<TopN> list(){
List<TopN> list = topnMapper.list();
return list;
}
}
5.6 mapper层
package com.itheima.mapper;
import com.itheima.entity.TopN;
import java.util.List;
public interface TopNMapper {
public List<TopN> list();
}
5.7 映射
<?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为映射的根节点-->
<!-- mapper为映射的根节点,namespace指定Dao接口的完整类名
mybatis会依据这个接口动态创建一个实现类去实现这个接口,
而这个实现类是一个Mapper对象-->
<mapper namespace="com.itheima.mapper.TopNMapper">
<!--id ="接口中的方法名"
parameterType="传入的参数类型"
resultType = "返回实体类对象,使用包.类名"-->
<select id="list"
resultType="com.itheima.entity.TopN">
select `uid`, `watchnumpv`
from `TopN`
order by watchnumpv desc
</select>
</mapper>
5.8 数据库配置文件
server.port=8088
spring.datasource.url=jdbc:mysql://192.168.31.154:3306/db01?
characterEncoding=UTF8&autoReconnect=true&serverTimezone=Asia/Shanghai&allowMultiQueries=true
spring.datasource.username=user01
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
mybatis.mapper-locations=classpath:/mapper/*.xml
6 运行
6.1 运行 TopNApplication
6.2 网站查看
网站地址为:localhost:8088/topn/list