Java精品項(xiàng)目瑞吉外賣之員工新增篇
一. 需求分析
后臺系統(tǒng)可以管理員工信息,通過新增員工來添加后臺系統(tǒng)的用戶,點(diǎn)擊添加用戶轉(zhuǎn)至添加頁面:

添加員工的信息需要保存至員工表【employee】中,結(jié)構(gòu)如下:

其中員工狀態(tài)默認(rèn)設(shè)為1,表示賬號在初始創(chuàng)建是可用的狀態(tài)下的。
二. 代碼開發(fā)
開發(fā)過程
開發(fā)之前,梳理一下具體的流程:
- 頁面發(fā)送ajax請求,將員工輸入的數(shù)據(jù)轉(zhuǎn)換為JSON格式提交至服務(wù)器;
- 服務(wù)端控制層接收請求數(shù)據(jù)并調(diào)用業(yè)務(wù)層將數(shù)據(jù)保存;
- 業(yè)務(wù)層調(diào)用持久層(Mapper)將數(shù)據(jù)保存至數(shù)據(jù)庫。
類似以下數(shù)據(jù)格式:

請求API:
| 說明 | 值 |
| 請求URL | /employee |
| 請求數(shù)據(jù) | JSON格式的Employee對象 |
代碼編寫:
在EmployeeController下添加如下代碼:
@PostMapping
public R<String> save(HttpServletRequest request, @RequestBody Employee employee) {
log.info("新增員工信息:{}", employee.toString());
// 設(shè)置默認(rèn)密碼為123456 并進(jìn)行MD5加密
employee.setPassword(DigestUtils.md5DigestAsHex(CommonsConst.INIT_PASSWORD.getBytes()));
// 設(shè)置創(chuàng)建時(shí)間
employee.setCreateTime(LocalDateTime.now());
// 設(shè)置更新時(shí)間
employee.setUpdateTime(LocalDateTime.now());
// 用戶ID設(shè)置(session中取得)
Long empId = (Long) request.getSession().getAttribute("employee");
employee.setCreateUser(empId);
employee.setUpdateUser(empId);
// 調(diào)用存儲方法
employeeService.save(employee);
return R.success("添加成功");
}測試添加數(shù)據(jù):

數(shù)據(jù)庫發(fā)現(xiàn)多了一天數(shù)據(jù),說明添加成功了。

三. 編寫全局異常處理
對于添加有一個(gè)問題,就是用戶名已經(jīng)設(shè)置了主鍵,若員工用戶名已經(jīng)存在就會報(bào)錯(cuò)(SQLIntegrityConstraintViolationException異常),此時(shí)我們需要捕獲異常,通常捕獲異常有以下兩種方式:
- 通過try、catch進(jìn)行捕獲異常
- 使用異常處理器進(jìn)行全局的異常捕獲
現(xiàn)在使用第二種方式進(jìn)行異常捕獲:
package com.itheima.reggie.common;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import java.sql.SQLIntegrityConstraintViolationException;
/**
* @author jektong
* @Date 2022/4/29
*/
@ControllerAdvice(annotations = {RestController.class, Controller.class})
@ResponseBody
@Slf4j
public class GlobalExceptionHandler {
/**
*
* @param ex
* @return
*/
@ExceptionHandler(SQLIntegrityConstraintViolationException.class)
public R<String> exceptionHandler(SQLIntegrityConstraintViolationException ex){
log.error(ex.getMessage());
return R.error("該賬號已經(jīng)存在");
}
}
到此這篇關(guān)于Java精品項(xiàng)目瑞吉外賣之員工新增篇的文章就介紹到這了,更多相關(guān)Java瑞吉外賣內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
kafka 重新分配partition和調(diào)整replica的數(shù)量實(shí)現(xiàn)
當(dāng)需要提升Kafka集群的性能和負(fù)載均衡時(shí),可通過kafka-reassign-partitions.sh命令手動(dòng)重新分配Partition,增加節(jié)點(diǎn)后,可以將Topic的Partition的Leader節(jié)點(diǎn)均勻分布,以提高寫入和消費(fèi)速度,感興趣的可以了解一下2022-03-03
Springboot實(shí)現(xiàn)公共字段填充的示例詳解
這篇文章主要為大家詳細(xì)介紹了Springboot實(shí)現(xiàn)公共字段填充的相關(guān)知識,文中的示例代碼講解詳細(xì),對我們深入學(xué)習(xí)springboot有一定的幫助,感興趣的小伙伴可以了解下2023-10-10
springboot啟動(dòng)時(shí)沒有日志的原因分析
這篇文章主要介紹了springboot啟動(dòng)時(shí)沒有日志的原因分析,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07
SpringBoot-JWT生成Token和攔截器的使用(訪問受限資源)
本文主要介紹了SpringBoot-JWT生成Token和攔截器的使用(訪問受限資源),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05
詳解Java去除json數(shù)據(jù)中的null空值問題
這篇文章主要介紹了詳解Java去除json數(shù)據(jù)中的null空值問題,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08

