springboot?vue項(xiàng)目管理后端實(shí)現(xiàn)接口新增
基于 springboot+vue 的測試平臺(tái)開發(fā)繼續(xù)更新。
接下來開發(fā)項(xiàng)目管理,是一個(gè)很常規(guī)的功能:有列表頁、查詢、新增、編輯,刪除暫時(shí)先不做。
首先來做新增項(xiàng)目的功能,先實(shí)現(xiàn)后端接口。
一、編寫實(shí)體類 Project
定義實(shí)體類的屬性,對應(yīng)著數(shù)據(jù)庫對應(yīng)表里的字段。
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) // 新增的時(shí)候填充數(shù)據(jù)
private Date createTime;
@TableField(fill = FieldFill.INSERT_UPDATE) // 新增或修改的時(shí)候填充數(shù)據(jù)
private Date updateTime;
private String createUser;
}二、創(chuàng)建數(shù)據(jù)表
CREATE TABLE `project` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主鍵ID', `projectName` varchar(30) DEFAULT NULL COMMENT '項(xiàng)目名稱', `description` varchar(255) DEFAULT NULL COMMENT '描述', `createTime` datetime NOT NULL DEFAULT '1900-01-01 00:00:00' COMMENT '創(chuàng)建時(shí)間', `updateTime` datetime NOT NULL DEFAULT '1900-01-01 00:00:00' COMMENT '更新時(shí)間', `createUser` varchar(30) DEFAULT NULL COMMENT '創(chuàng)建人', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='項(xiàng)目表';
修改 application.properties 中的配置
# mybatis-plus,關(guān)閉自動(dòng)轉(zhuǎn)化駝峰和下劃線 mybatis-plus.configuration.map-underscore-to-camel-case=false
這里添加一個(gè) mybatis-plus 的配置,默認(rèn) true,設(shè)置為 false 。
true:比如 Project 類中的屬性 projectName,映射到表里的字段名就是 project_name 。
false:關(guān)閉自動(dòng)轉(zhuǎn)化駝峰和下劃線,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 類
在這里,實(shí)現(xiàn)添加項(xiàng)目的方法。
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("項(xiàng)目名稱為空");
}
QueryWrapper<Project> wrapperProject = new QueryWrapper<>();
wrapperProject.eq("projectName", project.getProjectName());
if (projectDAO.selectCount(wrapperProject) != 0) {
BtException.throwException("項(xiàng)目名稱已存在");
}
project.setCreateTime(new Date());
project.setUpdateTime(new Date());
projectDAO.insert(project);
}
}注意,在這里加入了新的代碼,比如BtException.throwException("項(xiàng)目名稱為空");,當(dāng)項(xiàng)目名稱為空的時(shí)候拋出我自定義的異常。
自定義異常類
這里寫了一個(gè)自定義異常類 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());
}
}
}在這里調(diào)用projectService.addProject()方法時(shí)候,加了 try catch,來捕獲 service 層拋出的異常,為了統(tǒng)一的返回結(jié)果。
當(dāng)不捕獲時(shí),報(bào)錯(cuò)之后就是這樣:

捕獲之后,就是這樣:

六、測試新增接口 /project/add
正常新增的場景。

重復(fù)新增的場景。

入?yún)㈨?xiàng)目名稱為空。

刷新數(shù)據(jù)表。

數(shù)據(jù)新增成功。
以上就是springboot vue項(xiàng)目管理后端實(shí)現(xiàn)接口新增的詳細(xì)內(nèi)容,更多關(guān)于springboot vue后端接口新增的資料請關(guān)注腳本之家其它相關(guān)文章!
- Springboot?Vue實(shí)現(xiàn)單點(diǎn)登陸功能示例詳解
- springboot?vue測試平臺(tái)開發(fā)調(diào)通前后端環(huán)境實(shí)現(xiàn)登錄
- springboot vue項(xiàng)目后端列表接口分頁模糊查詢
- springboot?vue測試前端項(xiàng)目管理列表分頁功能實(shí)現(xiàn)
- springboot?vue測試平臺(tái)前端項(xiàng)目查詢新增功能
- springboot?vue項(xiàng)目管理前后端實(shí)現(xiàn)編輯功能
- Springboot Vue可配置調(diào)度任務(wù)實(shí)現(xiàn)示例詳解
相關(guān)文章
詳解Springboot @Cacheable 注解(指定緩存位置)
這篇文章主要介紹了詳解Springboot @Cacheable 注解(指定緩存位置),使用? @Cacheable ?注解就可以將運(yùn)行結(jié)果緩存,以后查詢相同的數(shù)據(jù),直接從緩存中取,不需要調(diào)用方法,需要的朋友可以參考下2023-09-09
基于多網(wǎng)卡環(huán)境下Eureka服務(wù)注冊IP的選擇問題
這篇文章主要介紹了基于多網(wǎng)卡環(huán)境下Eureka服務(wù)注冊IP的選擇問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03
Spring注解Autowired的底層實(shí)現(xiàn)原理詳解
從當(dāng)前springboot的火熱程度來看,java?config的應(yīng)用是越來越廣泛了,在使用java?config的過程當(dāng)中,我們不可避免的會(huì)有各種各樣的注解打交道,其中,我們使用最多的注解應(yīng)該就是@Autowired注解了。本文就來聊聊Autowired的底層實(shí)現(xiàn)原理2022-10-10
SpringBoot集成swagger-ui以及swagger分組顯示操作
這篇文章主要介紹了SpringBoot集成swagger-ui以及swagger分組顯示操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09
Java swing實(shí)現(xiàn)酒店管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了Java swing實(shí)現(xiàn)酒店管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-02-02
Spring?Validation實(shí)現(xiàn)數(shù)據(jù)校驗(yàn)的示例
Spring?Validation其實(shí)就是對Hibernate?Validator進(jìn)一步的封裝,方便在Spring中使用,這篇文章主要介紹了Spring?Validation實(shí)現(xiàn)數(shù)據(jù)校驗(yàn)的示例,需要的朋友可以參考下2023-03-03
SpringBoot中集成Swagger2及簡單實(shí)用
使用Swagger你只需要按照它的規(guī)范去定義接口及接口相關(guān)的信息,再通過Swagger衍生出來的一系列項(xiàng)目和工具,就可以做到生成各種格式的接口文檔,以及在線接口調(diào)試頁面等等,這篇文章主要介紹了SpringBoot中集成Swagger2,需要的朋友可以參考下2023-06-06

