Java项目学习(员工管理)

新增、员工列表、编辑员工整体代码流程与登录基本一致。
在这里插入图片描述

1、新增员工

@RestController
@RequestMapping("/admin/employee")

EmployeeController 类中使用了注解 @RestController 用于构建 RESTful 风格的 API,其中每个方法的返回值会直接序列化为 JSON 或 XML 数据并发送给客户端。它负责处理对应的请求并返回相应的视图数据。

使用 @RequestMapping("/admin/employee") 注解来指定该控制器处理的 URL 路径的前缀

在这里插入图片描述

EmployeeServiceImpl 类中处理前端传参,设置默认值等,组装数据结构

在这里插入图片描述
@Mapper注解通常用于标识一个 Java 接口或类是 MyBatis 的映射器(Mapper)。MyBatis 是一个持久层框架,用于将数据库操作与 Java 代码进行映射,简化了数据库访问的过程。

@Mapper注解被应用于EmployeeMapper接口,表明该接口是一个 MyBatis 的映射器。通过在接口中的方法上使用@Select注解,可以定义与数据库操作相关的 SQL 语句。

这样,MyBatis 框架可以自动扫描并创建实现映射器接口的代理对象,实现数据库操作与 Java 代码的映射。

在这里插入图片描述

全局异常处理

定义了一个全局异常处理器exceptionHandler,用于处理SQLIntegrityConstraintViolationException类型的异常。在方法中,首先获取异常信息message,然后检查message中是否包含Duplicate entry字符串。

如果包含,则将message按照空格分割,获取第三个元素作为用户名username,并拼接MessageConstant.ALREADY_EXISTS作为错误信息msg,最后返回Result.error(msg)。如果message中不包含Duplicate entry,则返回Result.error(MessageConstant.UNKNOWN_ERROR)

在这里插入图片描述

当用户名重复时触发 sql错误,被全局异常处理器拦截并处理返回处理结果。

使用 swagger 调试
http://localhost:8080/doc.html#/home

在这里插入图片描述

2、员工列表分页查询

@Data
public class EmployeePageQueryDTO implements Serializable {//员工姓名private String name;//页码private int page;//每页显示记录数private int pageSize;
}
/*** 封装分页查询结果*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class PageResult implements Serializable {private long total; //总记录数private List records; //当前页数据集合
}

在这里插入图片描述
PageHelper.startPage 是一个用于分页查询的方法,通常在 MyBatis 框架中与 PageHelper 插件一起使用。

该方法用于设置分页查询的参数,包括当前页码和每页显示的记录数。需要在执行数据库查询之前调用该方法,将分页参数传递进去。

在这里插入图片描述

正确引入了PageHelper分页插件的依赖

在这里插入图片描述
mybatis: mapper-locations用于将配置路径下的 XML 文件加载到 MyBatis 中。

在这里插入图片描述
这是一个 MyBatis 的 Mapper 映射文件的一部分,用于定义数据库操作的 SQL 语句。

<where>:表示查询条件的开始。
<if test="name!= null and name!= ''">
一个条件判断,用于检查参数 name 是否不为空且不为空字符串。如果满足条件,则执行以下的 SQL 片段。
and name like concat('%',#{name},'%')
一个模糊查询条件,用于在 name 列中查找包含指定参数 name 的记录。concat('%',#{name},'%') 会将 % 符号与参数 name 拼接起来,形成一个模糊匹配的模式。

在这里插入图片描述

3、编辑员工与修改账号状态

EmployeeController.java

/*** 启用禁用员工账号* @param status* @param id* @return*/
@PostMapping("/status/{status}")
@ApiOperation("启用禁用员工账号")
public Result startOrStop(@PathVariable Integer status,Long id){log.info("启用禁用员工账号:{},{}",status,id);employeeService.startOrStop(status,id);return Result.success();
}
/*** 编辑员工信息* @param employeeDTO* @return*/
@PutMapping
@ApiOperation("编辑员工信息")
public Result update(@RequestBody EmployeeDTO employeeDTO){log.info("编辑员工信息:{}", employeeDTO);employeeService.update(employeeDTO);return Result.success();
}

EmployeeServiceImpl.java

/*** 启用禁用员工账号** @param status* @param id*/
public void startOrStop(Integer status, Long id) {// update employee set status = ? where id = ?Employee employee = Employee.builder().status(status).id(id).build();employeeMapper.update(employee);
}
/*** 编辑员工信息** @param employeeDTO*/
public void update(EmployeeDTO employeeDTO) {Employee employee = new Employee();//employee.setUpdateTime(LocalDateTime.now());//employee.setUpdateUser(BaseContext.getCurrentId());// 使用属性拷贝简化赋值操作BeanUtils.copyProperties(employeeDTO, employee);employeeMapper.update(employee);
}

EmployeeMapper.java

/*** 根据主键动态修改属性* @param employee*/
@AutoFill(value = OperationType.UPDATE)
void update(Employee employee);

EmployeeMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.sky.mapper.EmployeeMapper"><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>
</mapper>

4、实现效果

在这里插入图片描述

5、项目源码

前后端源码及数据库 SQL 文件
https://download.csdn.net/download/qq_44721831/89463416

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/31116.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(纯原创)基于SSM的网上购物平台(完整源代码以及开发文档)

摘要 网上购物和计算机的飞速发展以及人们生活节奏的不断加快&#xff0c;网购已经逐渐融入了人们的日常生活当中&#xff0c;网上商城作为网购一种平台&#xff0c;已被大众逐渐接受。因此开发一个网上商城系统&#xff0c;适合当今形势&#xff0c;更加方便人们在线购物。…

android 责任链模式

责任链模式&#xff08;Chain of Responsibility Pattern&#xff09;是一种行为设计模式&#xff0c;它允许多个对象都有机会处理请求&#xff0c;从而避免请求的发送者和接收者之间的耦合。这种模式将这些对象连成一条链&#xff0c;并沿着这条链传递请求&#xff0c;直到有一…

实际中常用的网络相关命令

一、ping命令 ping是个使用频率极高的实用程序&#xff0c;主要用于确定网络的连通性。这对确定网络是否正确连接&#xff0c;以及网络连接的状况十分有用。 简单的说&#xff0c;ping就是一个测试程序&#xff0c;如果ping运行正确&#xff0c;大体上就可以排除网络访问层、网…

JSP 标准标签库(JSTL)

JSP 标准标签库(JSTL) 概述 JSP标准标签库(JavaServer Pages Standard Tag Library,简称JSTL)是一套用于简化JSP页面开发的标签库。它提供了一套标准化的标签,用于处理常见的Web开发任务,如XML数据处理、条件判断、迭代遍历集合、国际化等。JSTL的出现,旨在减少JSP页…

【Unity | Editor强化工具】项目备忘录工具

经常会被美术和策划同事反复询问某几个问题&#xff0c;每次都要翻Wiki链接给他们&#xff0c;非常折磨人&#xff0c;所以做了个可以在Unity内部显示备忘录的小工具&#xff0c;能够减少一些查找成本&#xff08;另外我觉得&#xff0c;让他们养成查看Unity内触手可及的信息的…

2024广东省职业技能大赛云计算赛项实战——编排部署ERP管理系统

编排部署ERP管理系统 前言 编写docker-compose.yaml文件&#xff0c;要求使用镜像mysql、redis、nginx和erp完成ERP管理系统的编排部署。 编写docker-compose.yaml完成ERP管理系统的部署&#xff0c;要求定义mysql、redis、nginx和erp共四个Service&#xff0c;分别使用镜像e…

ChatGPT办公与科研应用、论文撰写、数据分析、机器学习、深度学习及AI绘图

ChatGPT4.0在科研工作中的各种使用方法与技巧&#xff0c;以及人工智能领域经典机器学习算法&#xff08;BP神经网络、支持向量机、决策树、随机森林、变量降维与特征选择、群优化算法等&#xff09;和热门深度学习方法&#xff08;卷积神经网络、迁移学习、RNN与LSTM神经网络、…

苹果电脑如何清理磁盘空间 苹果电脑如何清理系统数据

你是否遇到过电脑磁盘空间不足的情况呢&#xff1f;Mac电脑有着流畅的操作系统&#xff0c;但是随着日常使用&#xff0c;可能电脑里的垃圾文件越来越多&#xff0c;导致磁盘空间不足&#xff0c;随之会出现电脑卡顿、软件闪退等情况。及时清理磁盘空间可以有效避免电脑这些问题…

PyTorch -- LSTM 快速实践

上篇介绍了 RNN 快速实践&#xff1b;使用 LSTM 的话&#xff0c;可以解决梯度离散及短期记忆问题&#xff1b;代码部署方面&#xff0c;增加了 c 值 (即 RNN 中的 h 变成了 LSTM 中的 (h,c)), 可对照 RNN 快速实践 来快速掌握。 LSTM Layer torch.nn.LSTM(input_size,hidden_s…

【Linux】使用Linux find 命令根据时间过滤文件并输出文件名

那年夏天我和你躲在 这一大片宁静的海 直到后来我们都还在 对这个世界充满期待 今年冬天你已经不在 我的心空出了一块 很高兴遇见你 让我终究明白 回忆比真实精彩 &#x1f3b5; 王心凌《那年夏天宁静的海》 在Linux系统中&#xff0c;find 命令是一个强大…

【Linux】关于在华为云中开放了端口后仍然无法访问的问题

已在安全组中添加规则: 通过指令: netstat -nltp | head -2 && netstat -nltp | grep 8080 运行结果: 可以看到服务器确实处于监听状态了. 通过指令 telnet 公网ip port 也提示: "正在连接xxx.xx.xx.xxx...无法打开到主机的连接。 在端口 8080: 连接失败"…

【漏洞复现】世邦通信 SPON IP网络对讲广播系统 addscenedata.php 任意文件上传漏洞

免责声明&#xff1a; 本文内容旨在提供有关特定漏洞或安全漏洞的信息&#xff0c;以帮助用户更好地了解可能存在的风险。公布此类信息的目的在于促进网络安全意识和技术进步&#xff0c;并非出于任何恶意目的。阅读者应该明白&#xff0c;在利用本文提到的漏洞信息或进行相关测…

C语言 | Leetcode C语言题解之第171题Excel表列序号

题目&#xff1a; 题解&#xff1a; int titleToNumber(char* columnTitle) {int number 0;long multiple 1;for (int i strlen(columnTitle) - 1; i > 0; i--) {int k columnTitle[i] - A 1;number k * multiple;multiple * 26;}return number; }

Linux系统下的Swift与Ceph分布式存储解决方案

Linux系统下&#xff0c;Swift和Ceph是两种广泛使用的分布式存储解决方案&#xff0c;它们各有特色&#xff0c;适用于不同的存储需求场景。 Swift Swift是OpenStack项目的一部分&#xff0c;专为大规模对象存储设计。它提供了高度可扩展、持久且分布式的数据存储&#xff0c…

华为---静态路由-浮动静态路由及负载均衡(二)

7.2 浮动静态路由及负载均衡 7.2.1 原理概述 浮动静态路由(Floating Static Route)是一种特殊的静态路由&#xff0c;通过配置去往相同的目的网段&#xff0c;但优先级不同的静态路由&#xff0c;以保证在网络中优先级较高的路由&#xff0c;即主路由失效的情况下&#xff0c…

数据结构之“算法的时间复杂度和空间复杂度”

&#x1f339;个人主页&#x1f339;&#xff1a;喜欢草莓熊的bear &#x1f339;专栏&#x1f339;&#xff1a;数据结构 目录 前言 一、算法效率 1.1算法的复杂度概念 1.2复杂度的重要性 二、时间复杂度 2.1时间复杂度的概念 2.2大O的渐进表示法 2.3常见的时间复杂度…

云计算【第一阶段(17)】账号和权限管理

目录 一、用户账号和组账号概述 1.1、用户账号的三种角色 1.2、组账号的两个角色 二、用户账号文件 2.1、/etc/passwd 2.2、/etc/shadow 2.3、chage 命令 三、组账号文件 3.1、/etc/group 3.2、/etc/gshadow 四、添加组账户 4.1、添加删除组成员 4.2、删除组账号 …

go 1.22 增强 http.ServerMux 路由能力

之前 server func main() {http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {fmt.Println("Received request:", r.URL.Path)fmt.Fprintf(w, "Hello, client! You requested: %s\n", r.URL.Path)})log.Println("Serv…

Web3 学习

之前学习 web3&#xff0c;走了不少弯路&#xff0c;最近看到了 hackquest&#xff0c;重新刷了一遍以太坊基础&#xff0c;感觉非常nice&#xff0c;而且完全免费&#xff0c;有需要的可以试试&#xff0c;链接hackquest.io。

2024广东省职业技能大赛云计算赛项实战——Ceph集群部署

Ceph部署 前言 今年的比赛也是考了Ceph&#xff0c;题目是这道&#xff0c;往年国赛里翻到的&#xff1a; 使用提供的 ceph.tar.gz 软件包&#xff0c;安装 ceph 服务并完成初始化操作。使用提供的 ceph-14.2.22.tar.gz 软件包&#xff0c;在 OpenStack 平台上创建三台CentOS…