springboot vue項目管理後端實現接口新增

基於 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

正常新增的場景。

重復新增的場景。

入參項目名稱為空。

刷新數據表。

數據新增成功。

以上就是springboot vue項目管理後端實現接口新增的詳細內容,更多關於springboot vue後端接口新增的資料請關註WalkonNet其它相關文章!

推薦閱讀: