Java精品項目瑞吉外賣之員工新增篇
一. 需求分析
后臺系統(tǒng)可以管理員工信息,通過新增員工來添加后臺系統(tǒng)的用戶,點擊添加用戶轉(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)建時間 employee.setCreateTime(LocalDateTime.now()); // 設(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ù),說明添加成功了。
三. 編寫全局異常處理
對于添加有一個問題,就是用戶名已經(jīng)設(shè)置了主鍵,若員工用戶名已經(jīng)存在就會報錯(SQLIntegrityConstraintViolationException異常),此時我們需要捕獲異常,通常捕獲異常有以下兩種方式:
- 通過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精品項目瑞吉外賣之員工新增篇的文章就介紹到這了,更多相關(guān)Java瑞吉外賣內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
聽說用了YYYY-MM-dd的程序員,前些天都在加班改Bug
這篇文章主要介紹了YYYY-MM-dd的實用方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01springboot CommandLineRunner接口實現(xiàn)自動任務(wù)加載功能
這篇文章主要介紹了springboot CommandLineRunner接口實現(xiàn)自動任務(wù)加載功能,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-05-05java中http請求之restTemplate配置超時時間問題解決
這篇文章主要介紹了java中http請求之restTemplate配置超時時間,本文給大家分享三種解決方法,結(jié)合實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-05-05SpringBoot項目將mybatis升級為mybatis-plus的方法
本文主要介紹了SpringBoot項目將mybatis升級為mybatis-plus的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01