springboot+apifox+MybatisPlus 做平均温度计算程序(一)

首先欢迎大家一起学习讨论,刚开始创作希望能点赞加收藏。感谢!

本文主要利用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。

希望点赞和收藏,多多支持

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值