springboot?vue項(xiàng)目管理后端實(shí)現(xiàn)接口新增
基于 springboot+vue 的測試平臺開發(fā)繼續(xù)更新。
接下來開發(fā)項(xiàng)目管理,是一個很常規(guī)的功能:有列表頁、查詢、新增、編輯,刪除暫時先不做。
首先來做新增項(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ù)據(jù) private Date createTime; @TableField(fill = FieldFill.INSERT_UPDATE) // 新增或修改的時候填充數(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)建時間', `updateTime` datetime NOT NULL DEFAULT '1900-01-01 00:00:00' COMMENT '更新時間', `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)閉自動轉(zhuǎn)化駝峰和下劃線 mybatis-plus.configuration.map-underscore-to-camel-case=false
這里添加一個 mybatis-plus 的配置,默認(rèn) true,設(shè)置為 false 。
true:比如 Project 類中的屬性 projectName,映射到表里的字段名就是 project_name 。
false:關(guān)閉自動轉(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)目名稱為空的時候拋出我自定義的異常。
自定義異常類
這里寫了一個自定義異常類 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()方法時候,加了 try catch,來捕獲 service 層拋出的異常,為了統(tǒng)一的返回結(jié)果。
當(dāng)不捕獲時,報錯之后就是這樣:
捕獲之后,就是這樣:
六、測試新增接口 /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測試平臺開發(fā)調(diào)通前后端環(huán)境實(shí)現(xiàn)登錄
- springboot vue項(xiàng)目后端列表接口分頁模糊查詢
- springboot?vue測試前端項(xiàng)目管理列表分頁功能實(shí)現(xiàn)
- springboot?vue測試平臺前端項(xiàng)目查詢新增功能
- springboot?vue項(xiàng)目管理前后端實(shí)現(xiàn)編輯功能
- Springboot Vue可配置調(diào)度任務(wù)實(shí)現(xiàn)示例詳解
相關(guān)文章
Java中static和static?final的區(qū)別詳解
這篇文章主要介紹了Java中static和static?final的區(qū)別詳解,開發(fā)時我們經(jīng)常用到static以及static?final來修飾我們的字段變量,那么他們到底有什么區(qū)別呢?其實(shí)他們的區(qū)別可以用使用字節(jié)碼文件來解析,需要的朋友可以參考下2023-10-10postman中實(shí)現(xiàn)傳遞@RequestBody參數(shù)
這篇文章主要介紹了postman中實(shí)現(xiàn)傳遞@RequestBody參數(shù),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-10-10java 算法之希爾排序詳解及實(shí)現(xiàn)代碼
這篇文章主要介紹了java 算法之希爾排序詳解及實(shí)現(xiàn)代碼的相關(guān)資料,需要的朋友可以參考下2017-03-03SpringDataJPA之Specification復(fù)雜查詢實(shí)戰(zhàn)
這篇文章主要介紹了SpringDataJPA之Specification復(fù)雜查詢實(shí)戰(zhàn),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-11-11