【测试开花】二、项目管理-后端-实现新增接口

基于 springboot+vue 的测试平台开发继续更新。

接下来开发项目管理,是一个很常规的功能:有列表页、查询、新增、编辑,删除暂时先不做。

首先来做新增项目的功能,先实现后端接口。

一、编写实体类 Project

定义实体类的属性,对应着数据库对应表里的字段。

package com.pingguo.bloomtest.pojo;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;

import java.util.Date;

@Data
public class Project {

    @TableId(type = IdType.AUTO)
    private Long id;

    private String projectName;

    private String description;

    @TableField(fill = FieldFill.INSERT)        // 新增的时候填充数据
    private Date createTime;
    @TableField(fill = FieldFill.INSERT_UPDATE) // 新增或修改的时候填充数据
    private Date updateTime;

    private String createUser;

}

二、创建数据表

CREATE TABLE `project` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `projectName` varchar(30) DEFAULT NULL COMMENT '项目名称',
  `description` varchar(255) DEFAULT NULL COMMENT '描述',
  `createTime` datetime NOT NULL DEFAULT '1900-01-01 00:00:00' COMMENT '创建时间',
  `updateTime` datetime NOT NULL DEFAULT '1900-01-01 00:00:00' COMMENT '更新时间',
  `createUser` varchar(30) DEFAULT NULL COMMENT '创建人',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='项目表';
修改 application.properties 中的配置
# mybatis-plus,关闭自动转化驼峰和下划线
mybatis-plus.configuration.map-underscore-to-camel-case=false

这里添加一个 mybatis-plus 的配置,默认 true,设置为 false 。

  • true:比如 Project 类中的属性 projectName,映射到表里的字段名就是 project_name 。
  • false:关闭自动转化驼峰和下划线,projectName 映射到表里还是 projectName 。

三、编写 ProjectDAO 接口

package com.pingguo.bloomtest.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.pingguo.bloomtest.pojo.Project;
import org.springframework.stereotype.Repository;

@Repository
public interface ProjectDAO extends BaseMapper<Project> {
}

四、编写 ProjectService 类

在这里,实现添加项目的方法。

package com.pingguo.bloomtest.service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.pingguo.bloomtest.common.BtException;
import com.pingguo.bloomtest.dao.ProjectDAO;
import com.pingguo.bloomtest.pojo.Project;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Date;


@Service
public class ProjectService {
    @Autowired
    ProjectDAO projectDAO;

    public void addProject(Project project) {
        if (StringUtils.isBlank(project.getProjectName())) {
            BtException.throwException("项目名称为空");
        }
        QueryWrapper<Project> wrapperProject = new QueryWrapper<>();
        wrapperProject.eq("projectName", project.getProjectName());
        if (projectDAO.selectCount(wrapperProject) != 0) {
            BtException.throwException("项目名称已存在");
        }
        project.setCreateTime(new Date());
        project.setUpdateTime(new Date());
        projectDAO.insert(project);
    }
}

注意,在这里加入了新的代码,比如BtException.throwException("项目名称为空");,当项目名称为空的时候抛出我自定义的异常。

自定义异常类

这里写了一个自定义异常类 BtException ,方便抛出自定义的异常。

package com.pingguo.bloomtest.common;

public class BtException extends RuntimeException{
    private BtException(String message) {
        super(message);
    }

    public static void throwException(String message) {
        throw new BtException(message);
    }
}

五、编写 ProjectController 类

编写控制器类,接收前端过来的请求。

package com.pingguo.bloomtest.controller;

import com.pingguo.bloomtest.common.Result;
import com.pingguo.bloomtest.pojo.Project;
import com.pingguo.bloomtest.service.ProjectService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("project")
public class ProjectController {
    @Autowired
    ProjectService projectService;

    @PostMapping("/add")
    public Result addProject(@RequestBody Project project) {
        try {
            projectService.addProject(project);
            return Result.success();
        } catch (Exception e) {
            return Result.fail(e.toString());
        }
    }
}

在这里调用projectService.addProject()方法时候,加了 try catch,来捕获 service 层抛出的异常,为了统一的返回结果。

当不捕获时,报错之后就是这样:

捕获之后,就是这样:

六、测试新增接口 /project/add

正常新增的场景。

重复新增的场景。

入参项目名称为空。

刷新数据表。

数据新增成功。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: ICM-42607-P是一款运动传感器芯片,由英飞凌公司生产,主要用于嵌入式系统的运动测量应用。该芯片采用MEMS技术制造,具有三轴加速度计和三轴陀螺仪功能,能够高精度地测量运动姿态和加速度信息。 ICM-42607-P具有多种接口支持,包括I2C、SPI和UART等,能够与各种不同的微处理器和控制器相连接。此外,该芯片还具有多种信号处理功能,如数字低通滤波、自动校准、场景检测和自动休眠等,能够提供高精度的运动数据和节能优化的功能。 ICM-42607-P广泛应用于各种运动测量和姿态控制应用中,如运动跟踪、智能手表、健身器械、航空航天等领域。它的高精度和低功耗特点使得它成为了许多物联网应用中必备的设备之一。 ### 回答2: ICM-42607-P是一种小型惯性测量单元(IMU),由意法半导体生产。这款IMU集成了3轴陀螺仪和3轴加速度计,可以帮助用户在物理世界中测量物体的运动。ICM-42607-P采用了先进的MEMS技术,具有高度的可靠性和精度,同时具备了低功耗和小型化的特点,可在多种应用场景中使用。该模块还支持SPI和I2C接口,适用于手持设备、无人机、自主导航车辆等众多领域。该模块具备遍地开花式物体之后自动测量旋转姿态的能力,因此在那些需要定位、导航、动作跟踪等领域具有广泛的应用。除了监控运动之外,ICM-42607-P还提供了温度、电压和自测功能等特性,以满足用户对于全面精确的数据采集的需求,同时降低了设计成本和开发周期。总之,ICM-42607-P是一款高度优化和集成化的IMU,为用户带来了一种新型的微小、功能强大、可靠性高的运动监测解决方案。 ### 回答3: ICM-42607-P是一款6轴惯性测量单元(IMU)芯片。它可以实现精确的运动测量和姿态估计,并提供高度可靠和稳定的数据输出。该芯片内置了3轴陀螺仪和3轴加速度计,能够检测并输出3D空间中物体的角速度、加速度、角度等多种数据。ICM-42607-P具有非常低的功耗和噪声,具备自适应噪声滤波和嵌入式自诊断功能,能够适应复杂环境下的应用需求。此外,该芯片还支持多种智能化算法如步数计算和动作检测等。ICM-42607-P适用于包括智能手机、可穿戴设备、节能型物联网设备、机器人和自动驾驶车辆等领域中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值