国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

最適合新手的SpringBoot+SSM項(xiàng)目《蒼穹外賣》實(shí)戰(zhàn)—(五)員工管理

這篇具有很好參考價(jià)值的文章主要介紹了最適合新手的SpringBoot+SSM項(xiàng)目《蒼穹外賣》實(shí)戰(zhàn)—(五)員工管理。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

黑馬程序員最新Java項(xiàng)目實(shí)戰(zhàn)《蒼穹外賣》,最適合新手的SpringBoot+SSM的企業(yè)級Java項(xiàng)目實(shí)戰(zhàn)。

新增員工

設(shè)計(jì) DTO 類

  1. 我們需要根據(jù)新增員工接口設(shè)計(jì)對應(yīng)的 DTO 類去接收前端傳遞的參數(shù),前端傳遞參數(shù)列表如下:

    最適合新手的SpringBoot+SSM項(xiàng)目《蒼穹外賣》實(shí)戰(zhàn)—(五)員工管理,# 蒼穹外賣,spring boot,后端,java

    注意: 當(dāng)前端提交的數(shù)據(jù)和實(shí)體類中對應(yīng)的屬性差別比較大時(shí),建議使用 DTO 來封裝數(shù)據(jù)。

  2. 進(jìn)入 sky-pojo 模塊,在 com.sky.dto 包下,定義 EmployeeDTO:

    public class EmployeeDTO implements Serializable {
    
        private Long id;
    
        private String username;
    
        private String name;
    
        private String phone;
    
        private String sex;
    
        private String idNumber;
    }
    

編寫接口

sky-server下EmployeeController.java 中添加新增員工接口:

/**
* 新增員工
*
* @param employeeDTO
* @return
*/
@PostMapping
@ApiOperation(value = "新增員工")
public Result add(EmployeeDTO employeeDTO) {
  log.info("新增員工:{}", employeeDTO);
  employeeService.save(employeeDTO);
  return Result.success();
}

設(shè)置 Header

  1. 項(xiàng)目中使用了 Token 作為身份驗(yàn)證和授權(quán)的憑證,用于驗(yàn)證用戶的身份和授權(quán)用戶訪問系統(tǒng)中的受保護(hù)資源。

    最適合新手的SpringBoot+SSM項(xiàng)目《蒼穹外賣》實(shí)戰(zhàn)—(五)員工管理,# 蒼穹外賣,spring boot,后端,java

  2. 我們點(diǎn)擊【員工登錄】接口,在請求體中設(shè)置用戶登錄的賬號密碼,點(diǎn)擊發(fā)送,獲取后端生成的 Token。

    {
      "password": "123456",
      "username": "admin"
    }
    

    最適合新手的SpringBoot+SSM項(xiàng)目《蒼穹外賣》實(shí)戰(zhàn)—(五)員工管理,# 蒼穹外賣,spring boot,后端,java

  3. 所有后續(xù)的請求都需要在請求頭中攜帶我們生成的 Token,以確保后端進(jìn)行用戶驗(yàn)證。我們在設(shè)置中,設(shè)置環(huán)境,在 Header 中添加我們上一步獲取的 Token。

    最適合新手的SpringBoot+SSM項(xiàng)目《蒼穹外賣》實(shí)戰(zhàn)—(五)員工管理,# 蒼穹外賣,spring boot,后端,java

捕獲 SQL 異常

  1. 在員工數(shù)據(jù)表 employee 中,對 username 字段設(shè)置了唯一約束:

    最適合新手的SpringBoot+SSM項(xiàng)目《蒼穹外賣》實(shí)戰(zhàn)—(五)員工管理,# 蒼穹外賣,spring boot,后端,java

  2. 當(dāng)我們插入已存在員工姓名時(shí),會出現(xiàn) SQL 異常:

    java.sql.SQLIntegrityConstraintViolationException: Duplicate entry '11111' for key 'employee.idx_username'
    
  3. 我們需要在全局異常 GlobalExceptionHandler 類中捕獲這個(gè)異常,處理異常并返回前端結(jié)果:

    /**
    * 處理SQL異常
    * @param ex
    * @return
    */
    @ExceptionHandler
    public Result exceptionHandler(SQLIntegrityConstraintViolationException ex){
      //Duplicate entry 'zhangsan' for key 'employee.idx_username'
      String message = ex.getMessage();
      if(message.contains("Duplicate entry")){
        String[] split = message.split(" ");
        String username = split[2];
        String msg = username + MessageConstant.ALREADY_EXISTS;
        return Result.error(msg);
      }else{
        return Result.error(MessageConstant.UNKNOWN_ERROR);
      }
    }
    
  4. 再次運(yùn)行【新增員工】接口,后端返回結(jié)果如下:

    {
      "code":0,
      "msg":"'xiaozhi'已存在",
      "data":null
    }
    

ThreadLocal 優(yōu)化

ThreadLocal 為每個(gè)線程提供單獨(dú)一份存儲空間,具有線程隔離的效果,只有在線程內(nèi)才能獲取到對應(yīng)的值,線程外則不
能訪問。

  1. 我們需要在 JwtTokenAdminInterceptor 攔截器中當(dāng)前登錄用戶 ID 保存到 ThreadLocal 中,方便后續(xù)處理:

    // 在線程變量中保存登錄用戶id
    BaseContext.setCurrentId(empId);
    
  2. 修改 EmployeeServiceImpl 實(shí)現(xiàn)類中的 save() 方法,增加員工時(shí)添加創(chuàng)建人的 ID:

    //設(shè)置當(dāng)前記錄創(chuàng)建人id和修改人id
    Long createUserId = BaseContext.getCurrentId();
    employee.setCreateUser(createUserId);
    employee.setUpdateUser(createUserId);
    
  3. 當(dāng)我們在線程池下使用 ThreadLocal 時(shí),需要手動調(diào)用 remove() 方法,防止內(nèi)存泄漏。

員工分頁查詢

設(shè)計(jì) DTO 類

  1. 我們需要根據(jù)新增員工接口設(shè)計(jì)對應(yīng)的 DTO 類去接收前端傳遞的參數(shù),前端傳遞參數(shù)列表如下:

    最適合新手的SpringBoot+SSM項(xiàng)目《蒼穹外賣》實(shí)戰(zhàn)—(五)員工管理,# 蒼穹外賣,spring boot,后端,java

  2. 進(jìn)入 sky-pojo 模塊,在 com.sky.dto 包下,定義 EmployeePageQueryDTO:

    public class EmployeePageQueryDTO implements Serializable {
    
        //員工姓名
        private String name;
    
        //頁碼
        private int page;
    
        //每頁顯示記錄數(shù)
        private int pageSize;
    
    }
    

編寫接口

  1. 在 sky-server 下 EmployeeController.java 中添加新增員工分頁查詢接口:

    /**
    * 員工分頁查詢
    * @param employeePageQueryDTO
    * @return
    */
    @GetMapping("/page")
    @ApiOperation(value = "員工分頁查詢")
    public Result<PageResult> page(EmployeePageQueryDTO employeePageQueryDTO){
      log.info("員工分頁查詢:{}",employeePageQueryDTO);
      PageResult pageResult = employeeService.pageQuery(employeePageQueryDTO);
      return Result.success(pageResult);
    }
    
  2. 在 EmployeeServiceImpl 中實(shí)現(xiàn)分頁查詢邏輯:

    @Override
    public PageResult pageQuery(EmployeePageQueryDTO employeePageQueryDTO) {
      PageHelper.startPage(employeePageQueryDTO.getPage(),employeePageQueryDTO.getPageSize());
      Page<Employee> page = employeeMapper.pageQuery(employeePageQueryDTO);
      return new PageResult(page.getTotal(),page.getResult());
    }
    
  3. 在 EmployeeMapper.xml 中編寫 SQL 語句:

    <select id="pageQuery" resultType="com.sky.entity.Employee">
      select * from employee
      <where>
        <if test="name != null and name !=''">
          name like concat('%',#{name},'%')
        </if>
      </where>
      order by create_time desc
    </select>
    
  4. Employee 類中使用 @JsonFormat 注解修改時(shí)間格式:

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;
    
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;
    
  5. 啟動項(xiàng)目,頁面測試功能:

    最適合新手的SpringBoot+SSM項(xiàng)目《蒼穹外賣》實(shí)戰(zhàn)—(五)員工管理,# 蒼穹外賣,spring boot,后端,java

啟動禁用員工賬號

  1. 在 EmployeeController 員工控制類中編寫接口:

        /**
         * 啟用、禁用員工賬號
         * @param status
         * @param id
         * @return
         */
        @PostMapping("/status/{status}")
        @ApiOperation(value = "啟用、禁用員工賬號")
        public Result startOrStop(@PathVariable Integer status, Long id){
            log.info("啟用禁用員工賬號:{},{}",status,id);
            employeeService.startOrStop(status,id);
            return Result.success();
        }
    
  2. 在 EmployeeServiceImpl 實(shí)現(xiàn)類中實(shí)現(xiàn)功能:

        @Override
        public void startOrStop(Integer status, Long id) {
            Employee employee = Employee.builder().id(id).status(status).build();
            employeeMapper.update(employee);
        }
    
  3. 補(bǔ)充 EmployeeMapper 中的 update SQL語句:

        <update id="update" parameterType="Employee">
            update employee
            <set>
                <if test="name != null">name = #{name},</if>
                <if test="username != null">username = #{username},</if>
                <if test="password != null">password = #{password},</if>
                <if test="phone != null">phone = #{phone},</if>
                <if test="sex != null">sex = #{sex},</if>
                <if test="idNumber != null">id_Number = #{idNumber},</if>
                <if test="updateTime != null">update_Time = #{updateTime},</if>
                <if test="updateUser != null">update_User = #{updateUser},</if>
                <if test="status != null">status = #{status},</if>
            </set>
            where id = #{id}
        </update>
    

根據(jù)id查詢員工信息

  1. 在 EmployeeController 員工控制類中編寫接口:

        /**
         * 根據(jù)id查詢員工
         * @param id
         * @return
         */
        @GetMapping("/{id}")
        @ApiOperation(value = "根據(jù)id查詢員工")
        public Result<Employee> getById(@PathVariable Long id){
            log.info("根據(jù)id查詢員工:{},",id);
            Employee employee = employeeService.getById(id);
            return Result.success(employee);
        }
    
  2. 在 EmployeeServiceImpl 實(shí)現(xiàn)類中實(shí)現(xiàn)功能:

        @Override
        public Employee getById(Long id) {
            Employee employee = employeeMapper.getById(id);
            employee.setPassword("****");
            return employee;
        }
    
  3. 補(bǔ)充 EmployeeMapper 中的 SQL 語句:

        /**
         * 根據(jù)id查詢員工
         * @param id
         * @return
         */
        @Select("select * from employee where id = #{id}")
        Employee getById(Long id);
    

    編輯員工信息

  4. 在 EmployeeController 中創(chuàng)建 update 方法:

    	/**
         * 編輯員工信息
         * @param employeeDTO
         * @return
         */
        @PutMapping
        @ApiOperation("編輯員工信息")
        public Result update(@RequestBody EmployeeDTO employeeDTO){
            log.info("編輯員工信息:{}", employeeDTO);
            employeeService.update(employeeDTO);
            return Result.success();
        }
    
  5. 在 EmployeeServiceImpl 中實(shí)現(xiàn) update 方法:文章來源地址http://www.zghlxwxcb.cn/news/detail-615798.html

 	/**
     * 編輯員工信息
     *
     * @param employeeDTO
     */
    public void update(EmployeeDTO employeeDTO) {
        Employee employee = new Employee();
        BeanUtils.copyProperties(employeeDTO, employee);

        employee.setUpdateTime(LocalDateTime.now());
        employee.setUpdateUser(BaseContext.getCurrentId());

        employeeMapper.update(employee);
    }

到了這里,關(guān)于最適合新手的SpringBoot+SSM項(xiàng)目《蒼穹外賣》實(shí)戰(zhàn)—(五)員工管理的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • SpringBoot+SSM項(xiàng)目實(shí)戰(zhàn) 蒼穹外賣(11) Apache ECharts

    SpringBoot+SSM項(xiàng)目實(shí)戰(zhàn) 蒼穹外賣(11) Apache ECharts

    繼續(xù)上一節(jié)的內(nèi)容,本節(jié)學(xué)習(xí)Apache ECharts,實(shí)現(xiàn)營業(yè)額統(tǒng)計(jì)、用戶統(tǒng)計(jì)、訂單統(tǒng)計(jì)和銷量排名Top10功能。 數(shù)據(jù)統(tǒng)計(jì)效果圖: Apache ECharts 是一款基于 Javascript 的數(shù)據(jù)可視化圖表庫,提供直觀,生動,可交互,可個(gè)性化定制的數(shù)據(jù)可視化圖表。 常見效果:柱形圖、餅形圖、折線圖

    2024年01月17日
    瀏覽(27)
  • 項(xiàng)目實(shí)戰(zhàn)————蒼穹外賣(DAY11)

    項(xiàng)目實(shí)戰(zhàn)————蒼穹外賣(DAY11)

    Apache ECharts 營業(yè)額統(tǒng)計(jì) 用戶統(tǒng)計(jì) 訂單統(tǒng)計(jì) 銷量排名Top10 功能實(shí)現(xiàn): 數(shù)據(jù)統(tǒng)計(jì) 數(shù)據(jù)統(tǒng)計(jì)效果圖: 1.1 介紹 Apache ECharts 是一款基于 Javascript 的數(shù)據(jù)可視化圖表庫,提供直觀,生動,可交互,可個(gè)性化定制的數(shù)據(jù)可視化圖表。 官網(wǎng)地址:Apache ECharts 常見效果展示: 1). 柱形圖

    2024年01月20日
    瀏覽(25)
  • 蒼穹外賣-day14:前端環(huán)境搭建、員工管理

    蒼穹外賣-day14:前端環(huán)境搭建、員工管理

    前端環(huán)境搭建 員工分頁查詢 啟用禁用員工賬號 新增員工 修改員工 1.1 技術(shù)選型 本項(xiàng)目使用到的前端技術(shù)如下: node.js vue ElementUI axios vuex vue-router typescript 1.2 熟悉前端代碼結(jié)構(gòu) 直接導(dǎo)入課程資料中提供的蒼穹外賣項(xiàng)目前端初始工程,此工程中已經(jīng)開發(fā)了部分功能,后續(xù)我們

    2024年04月28日
    瀏覽(24)
  • 基于SpringBoot+Redis的前后端分離外賣項(xiàng)目-蒼穹外賣(四)

    基于SpringBoot+Redis的前后端分離外賣項(xiàng)目-蒼穹外賣(四)

    1.1 需求分析與設(shè)計(jì) 1.1.1 產(chǎn)品原型 在員工管理列表頁面點(diǎn)擊 “編輯” 按鈕,跳轉(zhuǎn)到編輯頁面,在編輯頁面回顯員工信息并進(jìn)行修改,最后點(diǎn)擊 “保存” 按鈕完成編輯操作。 修改頁面原型 : 注:點(diǎn)擊修改時(shí),數(shù)據(jù)應(yīng)該正?;仫@到修改頁面。 1.1.2 接口設(shè)計(jì) 根據(jù)上述原型圖分

    2024年02月05日
    瀏覽(25)
  • 基于SpringBoot+Redis的前后端分離外賣項(xiàng)目-蒼穹外賣集成Redis(九)

    基于SpringBoot+Redis的前后端分離外賣項(xiàng)目-蒼穹外賣集成Redis(九)

    1.1 Redis的Java客戶端 Redis 的 Java 客戶端很多,常用的幾種: Jedis Lettuce Spring Data Redis Spring 對 Redis 客戶端進(jìn)行了整合,提供了 Spring Data Redis,在Spring Boot項(xiàng)目中還提供了對應(yīng)的Starter,即 spring-boot-starter-data-redis。 1.2 Spring Data Redis使用方式 1.2.1 介紹 Spring Data Redis 是 Spring 的一部分

    2024年02月05日
    瀏覽(31)
  • 【java蒼穹外賣項(xiàng)目實(shí)戰(zhàn)三】nginx反向代理和負(fù)載均衡

    【java蒼穹外賣項(xiàng)目實(shí)戰(zhàn)三】nginx反向代理和負(fù)載均衡

    我們思考一個(gè)問題: 前端發(fā)送的請求,是如何請求到后端服務(wù)的? 前端請求地址:http://localhost/api/employee/login 后端接口地址:http://localhost:8080/admin/employee/login 很明顯,兩個(gè)地址不一致,那是如何請求到后端服務(wù)的呢? 1、nginx反向代理 nginx 反向代理 ,就是將前端發(fā)送的動態(tài)

    2024年02月21日
    瀏覽(27)
  • 基于SpringBoot+Redis的前后端分離外賣項(xiàng)目-蒼穹外賣微信小程序端(十三)

    基于SpringBoot+Redis的前后端分離外賣項(xiàng)目-蒼穹外賣微信小程序端(十三)

    地址簿,指的是消費(fèi)者用戶的地址信息,用戶登錄成功后可以維護(hù)自己的地址信息。同一個(gè)用戶可以有多個(gè)地址信息,但是只能有一個(gè) 默認(rèn)地址 。 對于地址簿管理,有以下幾個(gè)功能: 查詢地址列表 新增地址 修改地址 刪除地址 設(shè)置默認(rèn)地址 查詢默認(rèn)地址 根據(jù)上述原型圖先

    2024年01月21日
    瀏覽(21)
  • 基于SpringBoot+Redis的前后端分離外賣項(xiàng)目-蒼穹外賣微信小程序端(九)

    基于SpringBoot+Redis的前后端分離外賣項(xiàng)目-蒼穹外賣微信小程序端(九)

    1.1 入門 在進(jìn)行微信登錄之前我們要先知道HttpClient是什么,它是Apache Jakarta Common 下的子項(xiàng)目,可以用來提供高效的、最新的、功能豐富的支持 HTTP 協(xié)議的客戶端編程工具包,并且它支持 HTTP 協(xié)議最新的版本和建議。 HttpClient作用: 發(fā)送HTTP請求 接收響應(yīng)數(shù)據(jù) HttpClient應(yīng)用場景

    2024年02月03日
    瀏覽(37)
  • 基于SpringBoot+Redis的前后端分離外賣項(xiàng)目-蒼穹外賣微信小程序端(十一)

    基于SpringBoot+Redis的前后端分離外賣項(xiàng)目-蒼穹外賣微信小程序端(十一)

    1.1 問題說明 用戶端小程序展示的菜品數(shù)據(jù)都是通過查詢數(shù)據(jù)庫獲得,如果用戶端訪問量比較大,數(shù)據(jù)庫訪問壓力隨之增大。 結(jié)果 :系統(tǒng)響應(yīng)慢、用戶體驗(yàn)差 1.2 實(shí)現(xiàn)思路 通過Redis來緩存菜品數(shù)據(jù),減少數(shù)據(jù)庫查詢操作。 緩存邏輯分析: 每個(gè)分類下的菜品保存一份緩存數(shù)據(jù)

    2024年01月24日
    瀏覽(32)
  • 基于SpringBoot+Redis的前后端分離外賣項(xiàng)目-蒼穹外賣微信小程序端(十二)

    基于SpringBoot+Redis的前后端分離外賣項(xiàng)目-蒼穹外賣微信小程序端(十二)

    1.1.1 產(chǎn)品原型 用戶可以將菜品或者套餐添加到購物車。對于菜品來說,如果設(shè)置了口味信息,則需要選擇規(guī)格后才能加入購物車;對于套餐來說,可以直接點(diǎn)擊+將當(dāng)前套餐加入購物車。在購物車中可以修改菜品和套餐的數(shù)量,也可以清空購物車。 效果圖: 1.1.2 接口設(shè)計(jì) 通過

    2024年01月18日
    瀏覽(33)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包