首先欢迎大家一起学习讨论,刚开始创作希望能点赞加收藏。感谢!
本文主要利用springboot框架做一些计算,本文之前用此框架设计计算的文章少之又少(大多为做管理系统),对于刚入门小白学习较为困难。对此我直接从应用出发,结合Mp将储存到数据库中的数据查出,对数据进行处理后,通过axios返回,采用现流行的测试软件apifox进行测试。
这里我对于ssm框架不在详细介绍,对于前后端交互原理直接上图:
在此,我们采用apifox代替页面视图,向后端发送计算请求,后端接受到请求之后,进行业务逻辑处理,包括从数据库中,查找相应数据,对数据进行处理,将计算结果保存数据库或者返回。返回的结果通过apifox查出。
项目整体如下
:
首先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.2</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>springbootDemo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springbootDemo</name>
<description>springbootDemo</description>
<properties>
<java.version>11</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.29</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure</artifactId>
<version>2.7.2</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.3.1</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.5</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.5.2</version>
<configuration>
<excludes>
<exclude>
<groupId>org.project-lombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</project>
2、我们需要建立与数据库变量向对应的实体类User
package com.example.demof.Utils;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
@Data
@TableName("petroloil")
public class User {
@TableId(value = "id",type = IdType.AUTO)
private int id;
private Integer temperature;
private int numbers;
private int length;
private int height;
private double landtem;
private double viscosity;
}
@TableName("数据库表名")
将id设置为自增,在表中设为主键,对于变量名的设置大小,数据库与实体类要相对应,否则运行会报错。
2、建立Mapper层,Mapper层是直接对数据库经行增删改查的操作,不要与Service层混淆,二者虽然都有对数据库增删改查的方法,虽然service与mapper层增删改查的方法名有所改变,但是建议用mapper查,service层更多的是处理业务上的问题。
本实例给出一个计算例子,计算平均温度的方法,接下来的方法大家自行琢磨,评论区交流。
package com.example.demof.Mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.demof.Utils.User;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
@Mapper//平均温度密度计算
@Repository
public interface UserMapper extends BaseMapper<User> {
}
建立UserMapper接口继承BaseMapper这个父接口,BaseMapper是MybatisPlus提供的,里面有已经写好的增删改查的方法,继承后可直接用它提供的方法,无需再用SQL语句写xml文件。节省开发人员学习时间。
3、建立service层开始处理业务
service层结构如下:
首先建立一个抽象接口ServiceFP
package com.example.demof.Service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.example.demof.Utils.User;
public interface ServiceFP extends IService<User> {
double Pcaculation();
}
此接口继承父接口IService,新写入一个方法,作为计算的方法,返回值类型double,不需要太高精度。
查询数据库数据,在此,我已经将excel表格中的数据导入数据库表中。
这里因为查询到这个温度数据只用一次,我不再建立新的service来专门查数据。直接将查数据和计算写到一个service里面。
建立与抽象接口对应的实体类IServiceImpl,继承父类,实现这个IService接口,对抽象接口中的方法重写,注入UserMapper
package com.example.demof.Service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.example.demof.Mapper.UserMapper;
import com.example.demof.Utils.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class ServiceFImpl extends ServiceImpl <UserMapper, User>implements ServiceF {
@Autowired
UserMapper userMapper;
QueryWrapper queryWrapper = new QueryWrapper<>();
@Override//计算平均温度
public double Tcaculation(){
List<User> list1 = userMapper.selectList(queryWrapper.select("landtem"));
double sum1 = 0;
for (int i = 0; i < list1.size(); i++) {
sum1 = sum1 + list1.get(i).getLandtem();
}
double At1 = sum1/12 ;
double t8 = 21,t2=5;
return At1;
}
采用条件查询的方式,建立querywrapper对象,如对这查询方面不熟悉的同学,建议看一下MyBatisPlus的查询方法。
这里采用按字段查询的方法,具体采用那种查询方式根据自己业务,找合适的查询方式即可,将地温(landtem)这个字段的所有数据查询出来,注意我这里是selectlist查询到的是一个list集合。而我定义了一个List集合变量来存储这个list集合,所以数据格式为[[landtem]],大家写的时候不必再用一个集合放这个list,直接定义一个变量将查询到的集合赋值给这个变量,更为方便。
计算平均温度将这集合遍历求和,再除以元素个数集合,这里我写12写死了长度,可.size的方法代替这个12。现在将计算得到的平均温度
4、controller层将调用实现类的方法,将计算的结果返回,前端可调用改接口渲染结果。
@CrossOrigin
@GetMapping("/tem")//平均温度计算
public double save() {
double AverageT = serviceF.Tcaculation();
return Result.success(AverageT).getData();
}
返回。
yml文件配置,这里设置端口号为9000,我使用多数据原的配置,大家不必这样配置,url填写本机正确的url
server:
port: 9000
spring:
datasource:
dynamic:
primary: master #??????????????,?????mysql1
strict: true #???????,??false. true?????????????,false???????
datasource:
master:
url: jdbc:mysql://localhost:3307/demo?serverTimezone=GMT%2b8&useSSL=false&failOverReadOnly=false&characterEncoding=utf-8
username: root
password: 123456
driver-class-name: com.mysql.jdbc.Driver # 3.2.0????SPI??????
demo_1:
url: jdbc:mysql://localhost:3307/demo_1?serverTimezone=GMT%2b8&useSSL=false&failOverReadOnly=false&characterEncoding=utf-8
username: root
password: 123456
driver-class-name: com.mysql.jdbc.Driver
main:
allow-circular-references: true
mybatis-plus:
configuration:
map-underscore-to-camel-case: false
5、apifox测试计算接口,前端写法将在往后介绍。
在apifox建立快捷请求
测试后我们得到返回计算结果39.074999999996。
后几章将更新后端http封装,跨域处理,集成jwt的token验证,以及vue3.2+Elmentplus。
希望点赞和收藏,多多支持