首页 > 其他分享 >MyTlias-员工信息管理系统(一)-整体框架的搭建

MyTlias-员工信息管理系统(一)-整体框架的搭建

时间:2024-03-24 10:01:53浏览次数:27  
标签:comment 123456 MyTlias jpg ---- 信息管理系统 now id 搭建

文章目录


本小节主要完成项目文件准备, 以及第一个功能实现: 部门信息展示. 并使用PostMan/Apifox测试接口数据是否正常返回, 复习三层架构的实现以及当初引入三层架构的缘起.

1. 工作准备

1.1. 新建项目

在IDEA新建一个Springboot项目, 选择 Mybatis3 + JDK17, 勾选 lombok/Spring Web/Mybatis/MySQL Server等4个依赖.

1.2. 准备数据库表

IDEA连接上MySQL Server, 新建一个 db_tlias 数据库(schema): 执行建表语句和数据插入语句

-- 部门管理
create table dept(
    id int unsigned primary key auto_increment comment '主键ID',
    name varchar(10) not null unique comment '部门名称',
    create_time datetime not null comment '创建时间',
    update_time datetime not null comment '修改时间'
) comment '部门表';

insert into dept (id, name, create_time, update_time) values
(1,'学工部',now(),now()),
(2,'教研部',now(),now()),
(3,'咨询部',now(),now()),
(4,'就业部',now(),now()),
(5,'人事部',now(),now());

-- 员工管理(带约束)
create table emp (
    id int unsigned primary key auto_increment comment 'ID',
    username varchar(20) not null unique comment '用户名',
    password varchar(32) default '123456' comment '密码',
    name varchar(10) not null comment '姓名',
    gender tinyint unsigned not null comment '性别, 说明: 1 男, 2 女',
    image varchar(300) comment '图像',
    job tinyint unsigned comment '职位, 说明: 1 班主任,2 讲师, 3 学工主管, 4 教研主管, 5 咨询师',
    entrydate date comment '入职时间',
    dept_id int unsigned comment '部门ID',
    create_time datetime not null comment '创建时间',
    update_time datetime not null comment '修改时间'
) comment '员工表';

INSERT INTO emp
(id, username, password, name, gender, image, job, entrydate,dept_id, create_time, update_time) VALUES
(1,'jinyong','123456','金庸',1,'1.jpg',4,'2000-01-01',2,now(),now()),
(2,'zhangwuji','123456','张无忌',1,'2.jpg',2,'2015-01-01',2,now(),now()),
(3,'yangxiao','123456','杨逍',1,'3.jpg',2,'2008-05-01',2,now(),now()),
(4,'weiyixiao','123456','韦一笑',1,'4.jpg',2,'2007-01-01',2,now(),now()),
(5,'changyuchun','123456','常遇春',1,'5.jpg',2,'2012-12-05',2,now(),now()),
(6,'xiaozhao','123456','小昭',2,'6.jpg',3,'2013-09-05',1,now(),now()),
(7,'jixiaofu','123456','纪晓芙',2,'7.jpg',1,'2005-08-01',1,now(),now()),
(8,'zhouzhiruo','123456','周芷若',2,'8.jpg',1,'2014-11-09',1,now(),now()),
(9,'dingminjun','123456','丁敏君',2,'9.jpg',1,'2011-03-11',1,now(),now()),
(10,'zhaomin','123456','赵敏',2,'10.jpg',1,'2013-09-05',1,now(),now()),
(11,'luzhangke','123456','鹿杖客',1,'11.jpg',5,'2007-02-01',3,now(),now()),
(12,'hebiweng','123456','鹤笔翁',1,'12.jpg',5,'2008-08-18',3,now(),now()),
(13,'fangdongbai','123456','方东白',1,'13.jpg',5,'2012-11-01',3,now(),now()),
(14,'zhangsanfeng','123456','张三丰',1,'14.jpg',2,'2002-08-01',2,now(),now()),
(15,'yulianzhou','123456','俞莲舟',1,'15.jpg',2,'2011-05-01',2,now(),now()),
(16,'songyuanqiao','123456','宋远桥',1,'16.jpg',2,'2007-01-01',2,now(),now()),
(17,'chenyouliang','123456','陈友谅',1,'17.jpg',NULL,'2015-03-21',NULL,now(),now());

1.3. 准备数据实体

员工实体: Employee
部门实体: Department
响应数据: Result
它们均位于package com.example.mytlias.pojo

// Employee.java
@NoArgsConstructor
@AllArgsConstructor
@Data
public class Employee {
    Integer id;         // id, 主键, 非空, 自增长
    String username;    // 用户名
    String password;    // 密码
    String name;        // 姓名
    Short gender;       // 性别, 1: 男, 2: 女
    String image;       // 照片
    Short job;          // 职位, 1 班主任,2 讲师, 3 学工主管, 4 教研主管, 5 咨询师
    LocalDate entrydate;    // 入职日期
    Integer deptId;         // 部门id
    LocalDateTime createTime;   // 条目创建时间
    LocalDateTime updateTime;   // 最后更新时间
}
// Department.java
@NoArgsConstructor
@AllArgsConstructor
@Data
public class Department {
    Integer id;     // 部门 id
    String name;    // 部门名称
    LocalDateTime createTime;   // 创建时间
    LocalDateTime updateTime;   // 更新时间
}
// Result.java
@AllArgsConstructor
@NoArgsConstructor
@Data
public class Result {
    private Integer code;   // 0: failure, 1: success
    private String msg;
    private Object data;
    // factory
    public static Result success(){
        return new Result(1, "success", null);
    }
    public static Result success(Object data){
        return new Result(1, "success", data);
    }
    public static Result error(Object data){
        return new Result(0, "error", null);
    }
}

2 完成部门信息展示

在部门信息展示页面中只需要查询得到所有部门的信息即可, 不需要分页, 也么有查询条件

2.1 properties

配置数据库连接信息

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/db_tlias
spring.datasource.username=root
spring.datasource.password=root226
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
mybatis.configuration.map-underscore-to-camel-case=true

2.2 DAO 层

也即数据访问层, 该层需要定义数据访问的接口和方法, 新建 mapper 包以存放数据访问代码(这里是通过MyBatis框架访问MySQL数据库的数据表得到的)

@Mapper
public interface DeptMapper {
    @Select("select id, name, create_time, update_time from dept")
    public List<Department> listDepartment();
}

如上所示, 仅包含一个方法, 也即列出所有的 Department 信息, SQL 语句被写在注解里

2.3 Service 层

Service 层调用 DAO 层以获取数据, 在这一层次, 原始数据已经得到了, 它不需要关心数据是具体如何获取, 只关心应该做怎样的处理以使得数据适合 Controller 层的需要:
package com.example.mytlias.service

public interface DeptService {
    List<Department> listDepartment();
}

package com.example.mytlias.service.impl

@Service
public class DeptServiceImpl implements DeptService {
    @Autowired
    private DeptMapper deptMapper;
    @Override
    public List<Department> listDepartment() {
        return deptMapper.listDepartment();
    }
}

如上所示, 首先定义了 Service 接口, 这个接口用于与Controller的通信, 其次新建了 impl 子包, 它存放该接口的实现.

2.4 Controller 层

这一层负责与 web 相关的内容, 它接收web请求, 返回响应数据.

com.example.mytlias.controller

@RestController
public class DeptController {
    @Autowired
    private DeptService deptService;
    @GetMapping("/depts")
    public Result listDepartment(){
        return Result.success(deptService.listDepartment());
    }
}

利用 ApiFox 测试结果
访问 localhost:8080/depts, 使用 GET 方式, 获得数据:

{
    "code": 1,
    "msg": "success",
    "data": [
        {
            "id": 1,
            "name": "学工部",
            "createTime": "2023-07-13T15:10:25",
            "updateTime": "2023-07-13T15:10:25"
        },
        {
            "id": 2,
            "name": "教研部",
            "createTime": "2023-07-13T15:10:25",
            "updateTime": "2023-07-13T15:10:25"
        },
        {
            "id": 3,
            "name": "咨询部",
            "createTime": "2023-07-13T15:10:25",
            "updateTime": "2023-07-13T15:10:25"
        },
        {
            "id": 4,
            "name": "就业部",
            "createTime": "2023-07-13T15:10:25",
            "updateTime": "2023-07-13T15:10:25"
        },
        {
            "id": 5,
            "name": "人事部",
            "createTime": "2023-07-13T15:10:25",
            "updateTime": "2023-07-13T15:10:25"
        }
    ]
}

至此, 一个简单的初步的 SpringBoot 项目就弄好了, 以下为项目结构:
根目录: src/main/java/

com.example.mytlias
---- controller
---- ---- DeptController.java
---- ---- EmpController.java
---- mapper
---- ---- EmpMapper.java
---- ---- DeptMapper.java
---- pojo
---- ---- Employee.java
---- ---- Department.java
---- ---- Result.java
---- service
---- impl
---- ---- DeptServiceImpl.java
---- ---- EmpServiceImpl.java
---- DeptService.java
---- EmpService.java
---- MyTliasApplication.java

标签:comment,123456,MyTlias,jpg,----,信息管理系统,now,id,搭建
From: https://blog.csdn.net/weixin_46866349/article/details/136940094

相关文章

  • 环境搭建
    windows安装sqlserver服务SQLServer下载|Microsoft或者MSDN,我告诉你-做一个安静的工具站(itellyou.cn)安装关闭windows防火墙并重新运行一路下一步直到这样设置可以让安装该服务的用户直接安装管理工具docker2022安装Docker:为Linux上的S......
  • ideaSSM 学员信息管理系统bootstrap开发mysql数据库web结构java编程计算机网页源码mav
    一、源码特点 idea开发SSM学员信息管理系统是一套完善的信息管理系统,结合SSM框架和bootstrap完成本系统,对理解JSPjava编程开发语言有帮助系统采用SSM框架(MVC模式开发),系统具有完整的源代码和数据库,系统主要采用B/S模式开发。前段主要技术bootstrap.cssjquery后端主要......
  • P3344 [ZJOI2015] 幻想乡 Wi-Fi 搭建计划
    非常精妙的一个做法。简化题意:定义合法区域为\(y\in[0,R]\)的区域,给定一些在合法区域内的标记点,与一些圆心在合法区域外的,半径为\(R\)的圆,选择第\(i\)个圆会产生\(c_i\)的代价。第一问是最多能覆盖几个标记点;第二问是在保证覆盖标记点最多的情况下,代价的最小值。首先......
  • python环境搭建及特定操作系统注意事项
    文章目录搭建Python环境通用的流程:**1.下载并安装Python解释器****2.验证安装****3.安装包管理器(pip)****4.安装必要的开发工具****5.创建虚拟环境(推荐)****6.安装项目所需的库****7.配置IDE/编辑器**特定操作系统(如Windows、macOS、Linux)的特定步骤或注意事项**Wi......
  • 10分钟带你搭建企业级项目工程化模版
    一个集成了Vite+Vue3+Ts+Eslint+Perttier+Husky+Lintstaged+commitlint+commitizen的模版使用vite脚手架搭建vue基本架构Vitepnpmcreatevite//✔Projectname:…test//✔Selectaframework:›Vue//✔Selectavariant:›TypeScript每当我们编码完成时,......
  • Java程序设计基础 第一章:Java的历史、环境搭建
        Java是一种计算机编程语言;除了java还有很多编程语言:c语言、c++、c#、python等,不同的计算机编程语言语法不同;应用场景不同;                                                 java是一种后端开发编程语言一、......
  • 我用 Nextjs 十分钟搭建了一个展示955公司网站
    前言打工人终极梦想就是能够955吧!一年之前看到过955公司名单,最近偶然又看到一篇955不加班的公司名单推文,发现名单上的公司大都是外企,而且相比一年之前又少了几个。于是想将目前还在榜955名单上的公司记录在网站上,一是方便随时查看,二是想看有哪些公司会在什么时候下线,也一......
  • phpstudy搭建tp项目
    将tp项目复制进phpstudy的www目录 phpstudy点击创建网站 网站根目录选择项目的public文件域名自取  启动apache和mysql服务接着点击管理打开phpmyadmin连接用户名和密码都是root 进入之后如果sql文件没有创建数据库只有创建数据表的语句需要自己在phpmyadmi......
  • 基于ssm的风景文化管理平台,旅游信息管理系统,附源码+数据库+论文+PPT,包远程安装调试
    1、项目介绍根据木里风景文化管理平台的功能需求,进行系统设计。前台功能:用户进入系统可以实现首页,旅游公告,景区,景区商品,景区美食,旅游交通工具,红黑榜,个人中心,后台管理,购物车等进行操作;后台主要是管理员,管理员功能包括首页,个人中心,用户管理,旅游公告管理,景区管理,景区商品管理,门......
  • 基于ssm的农业信息管理系统,农资信息管理系统,附源码+数据库+论文+PPT,包远程安装调试
    1、项目介绍考虑到实际生活中在农业信息管理方面的需要以及对该系统认真的分析,将系统权限按管理员,种植户和用户这三类涉及用户划分。(1)管理员功能需求管理员登陆后,主要模块包括首页,个人中心,用户管理,种植户管理,农业技术管理,农产品类型管理,农资类型管理,农资产品管理,农产品管理,......