首页 > 其他分享 >创建实体类Employee

创建实体类Employee

时间:2024-09-01 09:36:47浏览次数:4  
标签:实体类 String 创建 image public employee Employee id

8.1.1、创建实体类Employee
image

package org.rain.pojo;

import java.io.Serializable;

/**

  • @author liaojy

  • @date 2023/10/19 - 21:31
    */
    public class Employee implements Serializable {

    private Integer id;

    private String lastName;

    private String email;

    //1 male, 0 female
    private Integer gender;

    public Employee() {
    }

    public Employee(Integer id, String lastName, String email, Integer gender) {
    this.id = id;
    this.lastName = lastName;
    this.email = email;
    this.gender = gender;
    }

    public Integer getId() {
    return id;
    }

    public void setId(Integer id) {
    this.id = id;
    }

    public String getLastName() {
    return lastName;
    }

    public void setLastName(String lastName) {
    this.lastName = lastName;
    }

    public String getEmail() {
    return email;
    }

    public void setEmail(String email) {
    this.email = email;
    }

    public Integer getGender() {
    return gender;
    }

    public void setGender(Integer gender) {
    this.gender = gender;
    }

    @Override
    public String toString() {
    return "Employee{" +
    "id=" + id +
    ", lastName='" + lastName + ''' +
    ", email='" + email + ''' +
    ", gender=" + gender +
    '}';
    }
    }
    8.1.2、创建EmployeeDao模拟操作数据
    image

package org.rain.dao;

import org.rain.pojo.Employee;
import org.springframework.stereotype.Repository;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;

/**

  • @author liaojy

  • @date 2023/10/19 - 21:36
    */
    @Repository
    public class EmployeeDao {

    // 通过map集合模拟数据库
    private static Map<Integer, Employee> employees = null;

    // 静态代码块在类加载时执行,并且只执行一次
    static{
    employees = new HashMap<Integer, Employee>();
    employees.put(1001, new Employee(1001, "E-AA", "[email protected]", 1));
    employees.put(1002, new Employee(1002, "E-BB", "[email protected]", 1));
    employees.put(1003, new Employee(1003, "E-CC", "[email protected]", 0));
    employees.put(1004, new Employee(1004, "E-DD", "[email protected]", 0));
    employees.put(1005, new Employee(1005, "E-EE", "[email protected]", 1));
    }

    // 新数据的id
    private static Integer initId = 1006;

    // 新增或修改
    public void save(Employee employee) {
    // 参数没有id表示要执行新增操作
    if (employee.getId() == null) {
    // 设置新增数据的id,并自增id值为下一次新增数据做准备
    employee.setId(initId++);
    }
    // 更新模拟数据库的数据
    employees.put(employee.getId(), employee);
    }

    // 查询所有
    public Collection getAll(){
    return employees.values();
    }

    // 根据id查询
    public Employee get(Integer id){
    return employees.get(id);
    }

    // 根据id删除
    public void delete(Integer id){
    employees.remove(id);
    }

}
8.1.3、调整bean组件扫描
image

在原来的环境中,只扫描控制层组件,现在多了持久层组件,所以要调整扫描包的范围

<!--在指定的包中,扫描bean组件-->
<context:component-scan base-package="org.rain"></context:component-scan>

8.1.4、功能清单
功能 URL 地址 请求方式
访问首页 / GET
查询全部数据 /employee GET
跳转到添加数据页面 /to/add GET
执行保存 /employee POST
跳转到修改数据页面 /to/update/2 GET
执行修改 /employee PUT
删除 /employee/2 DELETE
8.2、查询列表功能
8.2.1、页面请求示例
image

查询所有员工的信息
8.2.2、控制器方法示例
image

@GetMapping("/employee")
public String getAllEmployee(Model model){
    // 获取所有员工的信息
    Collection<Employee> allEmployee = employeeDao.getAll();
    // 将所有员工的信息,共享到请求域
    model.addAttribute("allEmployee",allEmployee);
    // 跳转到列表页面
    return "employee_list";
}

8.2.3、列表页面示例
image

注意:在idea中,某些thymeleaf语法可能会提示错误(红色波浪线),这是误报,可以不用管

employee list
id lastName email gender options
update delete
8.2.4、测试效果 image

image

8.3、新增功能
8.3.1、页面请求示例
image

options(add) 8.3.2、视图控制器示例 image

因为只需要实现页面跳转,没有处理业务的过程,所以可以使用视图控制器实现

<mvc:view-controller path="/to/add" view-name="employee_add"></mvc:view-controller>
8.3.3、新增页面示例
image

employee add
lastName
email
gender male female
8.3.4、控制器方法示例 image

注意:直接跳转到列表页面会显示不了数据,因为还没向请求域共享数据,所以需要先跳转到查询列表功能

此外,跳转要用重定向,而不是用请求转发;

如果用请求转发,因为源请求的请求方式是post,所以请求转发后的请求方式还会是post,这样就会一直重复调用insertEmployee方法,直至内存耗尽;

如果用重定向,因为重定向的请求方式肯定是get,所以会调用getAllEmployee方法,从而实现查询列表功能

@PostMapping("/employee")
public String insertEmployee(Employee employee){
    // 新增员工
    employeeDao.save(employee);
    // 重定向到查询列表功能
    return "redirect:/employee";
}

8.3.5、测试效果
image

image

image

image

8.4、修改功能
8.4.1、页面请求示例
image

注意:因为员工id是变量,所以(在thymeleaf语法中)路径要使用单引号后再使用加号拼接变量

update
8.4.2、控制器方法示例(回显数据)
image

@GetMapping("/to/update/{id}")
public String toUpdate(@PathVariable("id") Integer id, Model model){
    // 根据id查询员工信息
    Employee employee = employeeDao.get(id);
    // 将员工信息共享到请求域
    model.addAttribute("employee",employee);
    // 跳转到更新页面
    return "employee_update";
}

8.4.3、更新页面示例
image

注意:请求方式和id用了隐藏域;
单选框的回显,用了th:field的属性,如果其值和value属性的值相等,则选中当前单选框

employee update
lastName
email
gender male female
8.4.4、控制器方法示例(执行修改) image
@PutMapping("/employee")
public String updateEmployee(Employee employee){
    // 修改员工
    employeeDao.save(employee);
    // 重定向到查询列表功能

//代码效果参考:http://www.intpipe.com/sitemap/post.html
return "redirect:/employee";
}
8.4.5、测试效果
image

image

image

image

8.5、删除功能
8.5.1、页面请求示例
image

delete

8.5.2、控制器方法示例 image
@DeleteMapping("/employee/{id}")
public String deleteEmployee(@PathVariable("id") Integer id){
    // 删除员工
    employeeDao.delete(id);
    // 重定向到查询列表功能
    return "redirect:/employee";
}

8.5.3、测试效果
image

image

标签:实体类,String,创建,image,public,employee,Employee,id
From: https://www.cnblogs.com/longshao2024/p/18391026

相关文章

  • 20240904_080346 mysql 存储过程 创建与使用存储过程
    存储过程的使用修改结束符号将默认的句子结束符号由;改为$号的写法创建存储过程调用存储过程......
  • uniapp创建组件与vue官方文档的差异
    uniapp创建组件形式相对于官方文档的形式话要简单一点uniapp创建组件:另外,有一个注意点,如果你项目特别多的情况下,要先展开,选中这个文件夹,然后找到里面具体要运行的页面来运行,不然的话它是有可能启动不了的,因为它不知道你到底要启动那一个具体页面选中整体项目名,......
  • 手把手教你创建Shopify开发合作者账号
    如果你现在不了解Shopify开发,建议可以先了解一下,或者在评论区留言,我看看是否有必要写篇博文给大家介绍一下,好了,进入今天的主题,手把手来教大家创建一个shopify开发合作者账号。如何创建shopify开发合作者账号:第1步:打开shopify开发者网站,点击如下图的位置:第2步:点击下面这个卡......
  • 【保姆级VSCode 插件开发之创建第一个插件项目】
    保姆级VSCode插件开发第一章VSCode插件开发入门之创建第一个插件项目文章目录保姆级VSCode插件开发前言一、创建HelloWorld插件项目1.创建项目2.VSCode打开项目2.1项目目录结构:总结前言本篇文章主要介绍如何创建你的第一个VSCode插件项目"HelloWorld",来......
  • C++创建GUI按钮\文本框(Windows)不用QT!!!
    一定要的:#include<windows.h>剩下的: 过程:LRESULTCALLBACKWndProc(HWNDhwnd,UINTMessage,WPARAMwParam,LPARAMlParam){switch(Message){ caseWM_CREATE:{ /*略*///HWND名称=CreateWindow(类型,显示的字,WS_CHILD|WS_VISIBLE,x,y,宽,......
  • 如何在D盘创建虚拟环境?包括安装PyTorch和配置PyCharm
    摘要:本文首先在D盘创建了虚拟环境,然后在虚拟环境中安装了PyTorch,最后配置了pycharm的解释器。1.在D盘创建虚拟环境打开AnacondaPrompt输入condainfo--envs查看当前已有环境创建自己的虚拟环境,打算命名为py310,输入condacreate--prefix=D:\ProgramData\py310python=3......
  • 在新项目中创建 Python 虚拟环境
    在新项目中创建Python虚拟环境可以帮助您管理项目的依赖项,避免与其他项目的冲突。以下是创建Python虚拟环境的步骤:1.安装Python确保您已经安装了Python。您可以在终端或命令提示符中运行以下命令来检查是否已安装:python--version或者python3--version如果......
  • python办公自动化:使用`Python-PPTX`创建和操作表格
    表格是演示文稿中用于组织和显示数据的重要工具。使用Python-PPTX库,您可以在幻灯片中创建和自定义表格,包括设置表格的大小、格式和内容。本节将介绍如何使用Python-PPTX库创建表格并进行各种操作。1创建基本表格在Python-PPTX中,表格是通过add_table()方法创建的。您需要......
  • 我的第一个QT程序_创建项目_全程图解
    创建项目1.打开QT开发工具2.点【创建项目】在弹出的窗口的项目列表中选择【Application(Qt)】中间列选择第一项如上图。3.输入项目名称和项目保存的路径4.Buildsystem下拉列表中有三个选项,虽然Qt6主推CMake,所以可以默认,直接下一步5.类相关信息设置。这里也可以......
  • 用PowerDesigner创建Oracle模型转为mysql模型
    一.首先打开PowerDesigner1.File(位置:左上角)–>NewModel–>PhysicalDateModel(物理数据模型)(1)DBMS选择MySQL5.0(版本可能不对,但毕竟是mysql语句的)(2)之后点确定就行(3).可能会出现一个问题就是DBMS的下拉框什么也没有退出也不好用(其实挺简单的)1.点击DBMS最右边......