javaWeb 增删改查基本操作

通过之前的文章可以快速的了解SpringBoot 项目,这是一个关于增删改查的案例,可以巩固之前学习到的知识。

        案例开始


准备工作

需求

  • 开发员工管理系统,提供增删改查功能。

环境搭建

  • 数据库(mysql)
    • emp、dept表导入

    • # create database testpeople;-- 导入员工表
      CREATE TABLE if not exists `emp` (`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',`username` varchar(20) NOT NULL COMMENT '用户名',`password` varchar(32) DEFAULT '123456' COMMENT '密码',`name` varchar(10) NOT NULL COMMENT '姓名',`gender` tinyint unsigned NOT NULL COMMENT '性别, 说明: 1 男, 2 女',`image` varchar(300) DEFAULT NULL COMMENT '图像',`job` tinyint unsigned DEFAULT NULL COMMENT '职位, 说明: 1 班主任,2 讲师, 3 学工主管, 4 教研主管, 5 咨询师',`entrydate` date DEFAULT NULL COMMENT '入职时间',`dept_id` int unsigned DEFAULT NULL COMMENT '部门ID',`create_time` datetime NOT NULL COMMENT '创建时间',`update_time` datetime NOT NULL COMMENT '修改时间',PRIMARY KEY (`id`),UNIQUE KEY `username` (`username`)
      ) ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='员工表';INSERT INTO `emp` VALUES (1,'jinyong','123456','金庸',1,'1.jpg',4,'2000-01-01',2,'2023-12-28 20:23:44','2023-12-28 20:23:44');
      INSERT INTO `emp` VALUES (2,'zhangwuji','123456','张无忌',1,'2.jpg',2,'2015-01-01',2,'2023-12-28 20:23:44','2023-12-28 20:23:44');
      INSERT INTO `emp` VALUES (3,'yangxiao','123456','杨逍',1,'3.jpg',2,'2008-05-01',2,'2023-12-28 20:23:44','2023-12-28 20:23:44');
      INSERT INTO `emp` VALUES (4,'weiyixiao','123456','韦一笑',1,'4.jpg',2,'2007-01-01',2,'2023-12-28 20:23:44','2023-12-28 20:23:44');
      INSERT INTO `emp` VALUES (5,'changyuchun','123456','常遇春',1,'5.jpg',2,'2012-12-05',2,'2023-12-28 20:23:44','2023-12-28 20:23:44');
      INSERT INTO `emp` VALUES (6,'xiaozhao','123456','小昭',2,'6.jpg',3,'2013-09-05',1,'2023-12-28 20:23:44','2023-12-28 20:23:44');
      INSERT INTO `emp` VALUES (7,'jixiaofu','123456','纪晓芙',2,'7.jpg',1,'2005-08-01',1,'2023-12-28 20:23:44','2023-12-28 20:23:44');
      INSERT INTO `emp` VALUES (8,'zhouzhiruo','123456','周芷若',2,'8.jpg',1,'2014-11-09',1,'2023-12-28 20:23:44','2023-12-28 20:23:44');
      INSERT INTO `emp` VALUES (9,'dingminjun','123456','丁敏君',2,'9.jpg',1,'2011-03-11',1,'2023-12-28 20:23:44','2023-12-28 20:23:44');
      INSERT INTO `emp` VALUES (10,'zhaomin','123456','赵敏',2,'10.jpg',1,'2013-09-05',1,'2023-12-28 20:23:44','2023-12-28 20:23:44');
      INSERT INTO `emp` VALUES (11,'luzhangke','123456','鹿杖客',1,'11.jpg',5,'2007-02-01',3,'2023-12-28 20:23:44','2023-12-28 20:23:44');
      INSERT INTO `emp` VALUES (12,'hebiweng','123456','鹤笔翁',1,'12.jpg',5,'2008-08-18',3,'2023-12-28 20:23:44','2023-12-28 20:23:44');
      INSERT INTO `emp` VALUES (13,'fangdongbai','123456','方东白',1,'13.jpg',5,'2012-11-01',3,'2023-12-28 20:23:44','2023-12-28 20:23:44');
      INSERT INTO `emp` VALUES (14,'zhangsanfeng','123456','张三丰',1,'14.jpg',2,'2002-08-01',2,'2023-12-28 20:23:44','2023-12-28 20:23:44');
      INSERT INTO `emp` VALUES (15,'yulianzhou','123456','俞莲舟',1,'15.jpg',2,'2011-05-01',2,'2023-12-28 20:23:44','2023-12-28 20:23:44');
      INSERT INTO `emp` VALUES (18,'Tom1','123456','汤姆1',1,'1.jpg',1,'2000-01-01',1,'2023-12-29 08:31:43','2023-12-29 09:03:51');
      INSERT INTO `emp` VALUES (19,'Tom2','123456','汤姆2',1,'1.jpg',1,'2000-01-01',1,'2023-12-29 08:35:50','2023-12-29 08:35:50');
      INSERT INTO `emp` VALUES (20,'Tom3','123456','汤姆3',1,'1.jpg',1,'2000-01-01',1,'2023-12-29 08:37:47','2023-12-29 08:37:47');-- 导入部门表
      CREATE TABLE if not exists `dept` (`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',`name` varchar(10) NOT NULL COMMENT '部门名称',`create_time` datetime NOT NULL COMMENT '创建时间',`update_time` datetime NOT NULL COMMENT '修改时间',PRIMARY KEY (`id`),UNIQUE KEY `name` (`name`)
      ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='部门表';INSERT INTO `dept` VALUES (1,'学工部','2023-12-28 20:23:44','2023-12-28 20:23:44');
      INSERT INTO `dept` VALUES (2,'教研部','2023-12-28 20:23:44','2023-12-28 20:23:44');
      INSERT INTO `dept` VALUES (3,'咨询部','2023-12-28 20:23:44','2023-12-28 20:23:44');
      INSERT INTO `dept` VALUES (4,'就业部','2023-12-28 20:23:44','2023-12-28 20:23:44');
      INSERT INTO `dept` VALUES (5,'人事部','2023-12-28 20:23:44','2023-12-28 20:23:44');
  • 后端 (springboot)

    •   依赖
      • web

      • mybatis

        • application.properties配置信息

        • 实现实体类

      • mysql驱动

      • lombok

    •   三层架构(准备接口)
      • controller

      • service

      • mapper(dao)

        效果

开发规范

  • 前后端分离开发

  • Restful

    • 表述性状态转换

    • 软件架构风格

流程

部门管理

  • Tips

    • Cotruller层优化

    • 请求页面相同得可以将方法注解公共部分注解到类上

页面展示

思路

开发方法
  • Cotroller层

  • //调用Service层@Autowired//依赖注入private DeptService deptService;//记录日志
    //    private static Logger log = LoggerFactory.getLogger(DeptController.class);//查询全部部门数据
    //    @RequestMapping(value = "/depts",method = RequestMethod.GET)//请求页面,指定为GET请求@GetMapping("/depts")//同上注解public Result list(){//记录日志log.info("查询全部数据");List<Dept> deptList = deptService.list();return Result.success(deptList);}
  • Service层

  • //Mapper接口注入
    @Autowired
    private DeptMapper deptMapper;/*** 实现查询所有数据*/
    @Override
    public List<Dept> list() {//返回全部信息return deptMapper.list();
    }
  • Mapper层

  • /*** 查询所有部门数据* @return*/
    @Select("select * from dept")
    List<Dept> list();
测试
  • postman

  • 前后端联调

  • Tips

    • 日志小技巧

  •     //记录日志
    //    private static Logger log = LoggerFactory.getLogger(DeptController.class);//可以使用
    @Slf4j //注解到类上

    删除功能

    思路

开发方法
  • Cotroller层

  • //调用Service层
    @Autowired//依赖注入
    private DeptService deptService;
    /*** 删除部门数据*/
    @DeleteMapping("/depts/{id}")
    public Result delete(@PathVariable Integer id){//日志log.info("根据ID删除数据\n");log.info("删除部门id为{}",id);deptService.delete(id);return Result.success();
    }
  • Service层

  • //Mapper接口注入
    @Autowired
    private DeptMapper deptMapper;/*** 实现删除部门方法*/
    @Override
    public void delete(Integer id) {deptMapper.deldete(id);
    }
  • Mapper层

  • /*** 根据ID 删除数据* @param id*/
    @Delete("delete from dept where id = #{id}")
    void deldete(Integer id);
测试
  • postman

  • 前后端联调

修改功能

思路
  • 通过ID查找部门

  • 修改

开发方法
  • Cotroller层

  • //调用Service层
    @Autowired//依赖注入
    private DeptService deptService;//通过ID查找部门数据
    @GetMapping("/{id}")
    public Result findById(@PathVariable Integer id){//日志log.info("根据ID查询部门数据");Dept dept = deptService.findById(id);return Result.success(dept);
    }/*** 修改部门数据*/
    @PutMapping
    public Result update(@RequestBody Dept dept){//日志log.info("修改部门数据");deptService.update(dept);return Result.success();
    }
    
  • Service层

  • //Mapper接口注入
    @Autowired
    private DeptMapper deptMapper;/*** 实现通过ID查询部门方法*/
    @Override
    public Dept findById(Integer id) {Dept dept = deptMapper.findById(id);return dept;
    }/*** 实现更新部门方法*/
    @Override
    public void update(Dept dept) {dept.setUpdateTime(LocalDateTime.now());deptMapper.update(dept);
    }
    }
  • Mapper层

  • /*** 通过id查询部门* @param id* @return*/
    @Select("select * from dept where id = #{id}")
    Dept findById(Integer id);/*** 修改部门* @param dept*/
    @Update("update dept set name = #{name},update_time = #{updateTime} where id = #{id}")
    void update(Dept dept);
测试
  • postman

    • 通过ID查找

  • 修改

  • 前端联调

    • 通过ID查找

  • 修改

添加功能

思路

开发方法
  • Cotroller层

  • //调用Service层@Autowired//依赖注入private DeptService deptService;/*** 添加部门数据*/
    @PostMapping("/depts")
    public Result add(@RequestBody Dept dept){//日志log.info("添加部门名称为{}",dept);deptService.add(dept);return Result.success();
    }
  • Service层

  • //Mapper接口注入
    @Autowired
    private DeptMapper deptMapper;/*** 实现添加部门方法*/
    @Override
    public void add(Dept dept) {//补充数据dept.setCreateTime(LocalDateTime.now());dept.setUpdateTime(LocalDateTime.now());log.info(dept.toString());deptMapper.add(dept);}
  • Mapper层

  • /*** 添加部门* @param dept*/
    @Insert("insert into dept(name,create_time,update_time) values (#{name},#{createTime},#{updateTime});")
    void add(Dept dept);
测试
  • postman

  • 前后端联调


以上为部门管理,小编很快会更新员工管理和登录功能的,敬请期待。

项目地址

admin_web_project: 黑马程序员项目javaWebjavaWeb开发学习仓库,前后端分离项目前端Vue后端springboot数据库Mysql


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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Oracle线上执行SQL特别慢的原因分析

一、背景&#xff1a; 线上反馈一张表select * from table where idxxx语句执行特别慢&#xff0c;超过60s超时不能处理&#xff0c;第一直觉是索引失效了&#xff0c;开始执行创建索引语句create index index_name on table() online。但是执行了超过20分钟索引还没有创建成功…

自动驾驶车道线检测系列—3D-LaneNet: End-to-End 3D Multiple Lane Detection

文章目录 1. 摘要概述2. 背景介绍3. 方法3.1 俯视图投影3.2 网络结构3.2.1 投影变换层3.2.2 投影变换层3.2.3 道路投影预测分支 3.3 车道预测头3.4 训练和真实值关联 4. 实验4.1 合成 3D 车道数据集4.2 真实世界 3D 车道数据集4.3 评估结果4.4 评估图像仅车道检测 5. 总结和讨论…

第59期|GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区&#xff0c;集成了生成预训练Transformer&#xff08;GPT&#xff09;、人工智能生成内容&#xff08;AIGC&#xff09;以及大语言模型&#xff08;LLM&#xff09;等安全领域应用的知识。在这里&#xff0c;您可以找…

【Python与GUI开发】事件处理与打包分发

文章目录 前言 一、高级事件处理 1.自定义事件 2.拖放操作 3.复杂控件的事件处理 二、打包和分发 Tkinter 应用 1.PyInstaller 2.cx_Freeze 3.spec 文件 4.分发注意事项 三、实战示例&#xff1a;文件浏览器 总结 前言 在前面的讨论中&#xff0c;我们深入理解了 T…

Dev—c++小熊猫6.7.5免费下载攻略

点击蓝字 关注我们 今天我来给大家分享一个Dev—c小熊猫6.7.5免费下载攻略&#xff0c;内容如下 1. https://gitee.com/royqh1979/Dev-CPP/releases/tag/v6.7.5 点进这一个官网&#xff0c;一直往下滑&#xff0c;找到第三个选项&#xff0c;把它下载下来。 2. 安装时一些选择…

自制OJ在线判题网站

项目效果啊演示&#xff1a; 项目链接&#xff1a; Gitee:Oj: 自定义实现的OJ在线做题网站&#xff0c;自主实现代码沙箱 (gitee.com) GitHub:GitHub - SakanaYdy/Oj 仓库中含有完整的项目流程PDF文档&#xff0c;可以参考自定义OJ网站。 目前只支持Java语言&#xff0c;可以…

CSA笔记3-文件管理命令(补充)+vim+打包解包压缩解压缩命令

grep(-i -n -v -w) [rootxxx ~]# grep root anaconda-ks.cfg #匹配关键字所在的行 [rootxxx ~]# grep -i root anaconda-ks.cfg #-i 忽略大小写 [rootxxx ~]# grep -n root anaconda-ks.cfg #显示匹配到的行号 [rootxxx ~]# grep -v root anaconda-ks.cfg #-v 不匹配有…

大模型算法专家的逻辑推演

大家好&#xff0c;我是卢麒。 如今&#xff0c;各大电商平台对于大模型算法的研发已经历经了无数次的迭代。 本文基于大模型算法的一些实际应用&#xff0c;做一些分析。 一&#xff0c;大模型算法专家的技术应用 作为大模型算法专家&#xff0c;在技术应用时&#xff0c;…

使用windows批量解压和布局ImageNet ISLVRC2012数据集

使用的系统是windows&#xff0c;找到的解压命令很多都linux系统中的&#xff0c;为了能在windows系统下使用&#xff0c;因此下载Git这个软件&#xff0c;在其中的Git Bash中使用以下命令&#xff0c;因为Git Bash集成了很多linux的命令&#xff0c;方便我们的使用。 ImageNe…

set类和map类介绍和简单使用

目录 set类介绍与简单使用 set类 multiset类 map类介绍与简单使用 map类 multimap类 set类介绍与简单使用 set类是一种关联式容器&#xff0c;在数据检索时比序列式容器效率更高。本质是一个常规的二叉搜索树&#xff0c;但是为了防止出现单支树导致效率下降进行了相关优…

Linux 命令 —— top命令(查看进程资源占用)

文章目录 top 命令显示信息介绍top 命令使用 top 命令显示信息介绍 top 命令是 Linux/Unix 系统中常用的进程监控工具&#xff0c;可以实时动态显示系统中各个进程的资源占用情况&#xff0c;包括CPU、内存等。 进入 linux 系统&#xff0c;直接输入 top&#xff0c;回车&…

2014-2024年腾势D9N7N8EVDMI维修手册和电路图资料线路图接线图

经过整理&#xff0c;2014-2024年腾势汽车全系列已经更新至汽修帮手资料库内&#xff0c;覆盖市面上99%车型&#xff0c;包括维修手册、电路图、新车特征、车身钣金维修数据、全车拆装、扭力、发动机大修、发动机正时、保养、电路图、针脚定义、模块传感器、保险丝盒图解对照表…

中国星坤X0800HI系列线对板连接器:创新技术连接,引领智能家居未来!

近日&#xff0c;中国星坤推出的X0800HI系列线对板连接器&#xff0c;凭借其独特的设计和卓越的性能&#xff0c;引起了业界的广泛关注。 X0800HI系列线对板连接器在极小空间内实现了线对板的W-B连接&#xff0c;这不仅解决了传统连接方式中剥线和焊接的繁琐步骤&#xff0c;还…

Seata源码分析 全局事务开启提交回滚流程

文章目录 Seata全局事务源码Seata AT模式的设计思路源码入口TransactionalTemplate开启全局事务TM开启全局事务TC处理TM的请求 全局事务提交微服务端TM发送请求TC处理TM的请求RM处理TC的请求 全局事务回滚TM发送请求TC处理TM的请求RM处理TC的请求 补充知识微服务怎么找TC服务 S…

配置三层链路聚合增加链路带宽并提高可靠性的示例

规格 适用于所有版本的AR路由器。 AR161、AR161W、AR169、AR161G-L不支持该示例。 组网需求 在某小型企业网环境中部署了两台AR路由器Router_1和Router_2&#xff0c;Router_1作为用户接入设备&#xff0c;Router_2作为网络接入设备。为了保证用户的带宽&#xff0c;当用户量…

【Kaggle】练习赛《保险交叉销售的二分类预测》

前言 本篇文章介绍的是Kaggle月赛《Binary Classification of Insurance Cross Selling》&#xff0c;即《保险交叉销售的二元分类预测》。这场比赛非常适合作为机器学习入门者的实践练习。在之前的几期练习赛中&#xff0c;我们从多个角度详细讲解了探索性数据分析&#xff0…

爆火出圈的Robotaxi,会是自动驾驶的最优解吗?

八年前&#xff0c;百度决定投资无人驾驶时&#xff0c;李彦宏说&#xff1a;“它是人工智能最顶级的工程&#xff0c;将彻底改变人类的出行和生活。” 八年后&#xff0c;萝卜快跑从理想变成现实&#xff0c;奔跑在全国各地的街头&#xff0c;诠释了什么叫“科技不该高高在上…

2.javaWeb_请求和响应的处理(Request,Response)

2.请求和响应的处理 文章目录 2.请求和响应的处理一、动态资源和静态资源javax.servlet(包) 二、Servlet体系1.简介2.HttpServlet3.Servlet生命周期 三、Request对象1.ServletRequest1)ServletRequest主要功能有&#xff1a;2)ServletRequest类的常用方法: 2.HttpServletReques…

72B大模型分片部署

一、定义 目的官方教程案例小模型修改device_map 方式二 二、实现 目的&#xff1a; 将72B大模型 部署到2张gpu 显卡中。官方教程 帖子&#xff1a;https://huggingface.co/blog/accelerate-large-models实现 1. 自动部署 model AutoModelForCausalLM.from_pretrained(mod…

JUC 包中的 Atomic 原子类总结

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌…