当前位置:   article > 正文

javaWeb 增删改查基本操作

javaWeb 增删改查基本操作

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

        案例开始


准备工作

需求

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

环境搭建

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

      1. # create database testpeople;
      2. -- 导入员工表
      3. CREATE TABLE if not exists `emp` (
      4. `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',
      5. `username` varchar(20) NOT NULL COMMENT '用户名',
      6. `password` varchar(32) DEFAULT '123456' COMMENT '密码',
      7. `name` varchar(10) NOT NULL COMMENT '姓名',
      8. `gender` tinyint unsigned NOT NULL COMMENT '性别, 说明: 1 男, 2 女',
      9. `image` varchar(300) DEFAULT NULL COMMENT '图像',
      10. `job` tinyint unsigned DEFAULT NULL COMMENT '职位, 说明: 1 班主任,2 讲师, 3 学工主管, 4 教研主管, 5 咨询师',
      11. `entrydate` date DEFAULT NULL COMMENT '入职时间',
      12. `dept_id` int unsigned DEFAULT NULL COMMENT '部门ID',
      13. `create_time` datetime NOT NULL COMMENT '创建时间',
      14. `update_time` datetime NOT NULL COMMENT '修改时间',
      15. PRIMARY KEY (`id`),
      16. UNIQUE KEY `username` (`username`)
      17. ) ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='员工表';
      18. 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');
      19. 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');
      20. 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');
      21. 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');
      22. 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');
      23. 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');
      24. 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');
      25. 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');
      26. 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');
      27. 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');
      28. 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');
      29. 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');
      30. 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');
      31. 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');
      32. 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');
      33. 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');
      34. 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');
      35. 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');
      36. -- 导入部门表
      37. CREATE TABLE if not exists `dept` (
      38. `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
      39. `name` varchar(10) NOT NULL COMMENT '部门名称',
      40. `create_time` datetime NOT NULL COMMENT '创建时间',
      41. `update_time` datetime NOT NULL COMMENT '修改时间',
      42. PRIMARY KEY (`id`),
      43. UNIQUE KEY `name` (`name`)
      44. ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='部门表';
      45. INSERT INTO `dept` VALUES (1,'学工部','2023-12-28 20:23:44','2023-12-28 20:23:44');
      46. INSERT INTO `dept` VALUES (2,'教研部','2023-12-28 20:23:44','2023-12-28 20:23:44');
      47. INSERT INTO `dept` VALUES (3,'咨询部','2023-12-28 20:23:44','2023-12-28 20:23:44');
      48. INSERT INTO `dept` VALUES (4,'就业部','2023-12-28 20:23:44','2023-12-28 20:23:44');
      49. 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层

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

    1. //Mapper接口注入
    2. @Autowired
    3. private DeptMapper deptMapper;
    4. /**
    5. * 实现查询所有数据
    6. */
    7. @Override
    8. public List<Dept> list() {
    9. //返回全部信息
    10. return deptMapper.list();
    11. }
  • Mapper层

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

  • 前后端联调

  • Tips

    • 日志小技巧

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

    删除功能

    思路

开发方法
  • Cotroller层

    1. //调用Service层
    2. @Autowired//依赖注入
    3. private DeptService deptService;
    4. /**
    5. * 删除部门数据
    6. */
    7. @DeleteMapping("/depts/{id}")
    8. public Result delete(@PathVariable Integer id){
    9. //日志
    10. log.info("根据ID删除数据\n");
    11. log.info("删除部门id为{}",id);
    12. deptService.delete(id);
    13. return Result.success();
    14. }
  • Service层

    1. //Mapper接口注入
    2. @Autowired
    3. private DeptMapper deptMapper;
    4. /**
    5. * 实现删除部门方法
    6. */
    7. @Override
    8. public void delete(Integer id) {
    9. deptMapper.deldete(id);
    10. }
  • Mapper层

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

  • 前后端联调

修改功能

思路
  • 通过ID查找部门

  • 修改

开发方法
  • Cotroller层

    1. //调用Service层
    2. @Autowired//依赖注入
    3. private DeptService deptService;
    4. //通过ID查找部门数据
    5. @GetMapping("/{id}")
    6. public Result findById(@PathVariable Integer id){
    7. //日志
    8. log.info("根据ID查询部门数据");
    9. Dept dept = deptService.findById(id);
    10. return Result.success(dept);
    11. }
    12. /**
    13. * 修改部门数据
    14. */
    15. @PutMapping
    16. public Result update(@RequestBody Dept dept){
    17. //日志
    18. log.info("修改部门数据");
    19. deptService.update(dept);
    20. return Result.success();
    21. }
  • Service层

    1. //Mapper接口注入
    2. @Autowired
    3. private DeptMapper deptMapper;
    4. /**
    5. * 实现通过ID查询部门方法
    6. */
    7. @Override
    8. public Dept findById(Integer id) {
    9. Dept dept = deptMapper.findById(id);
    10. return dept;
    11. }
    12. /**
    13. * 实现更新部门方法
    14. */
    15. @Override
    16. public void update(Dept dept) {
    17. dept.setUpdateTime(LocalDateTime.now());
    18. deptMapper.update(dept);
    19. }
    20. }
  • Mapper层

    1. /**
    2. * 通过id查询部门
    3. * @param id
    4. * @return
    5. */
    6. @Select("select * from dept where id = #{id}")
    7. Dept findById(Integer id);
    8. /**
    9. * 修改部门
    10. * @param dept
    11. */
    12. @Update("update dept set name = #{name},update_time = #{updateTime} where id = #{id}")
    13. void update(Dept dept);
测试
  • postman

    • 通过ID查找

  • 修改

  • 前端联调

    • 通过ID查找

  • 修改

添加功能

思路

开发方法
  • Cotroller层

    1. //调用Service层
    2. @Autowired//依赖注入
    3. private DeptService deptService;
    4. /**
    5. * 添加部门数据
    6. */
    7. @PostMapping("/depts")
    8. public Result add(@RequestBody Dept dept){
    9. //日志
    10. log.info("添加部门名称为{}",dept);
    11. deptService.add(dept);
    12. return Result.success();
    13. }
  • Service层

    1. //Mapper接口注入
    2. @Autowired
    3. private DeptMapper deptMapper;
    4. /**
    5. * 实现添加部门方法
    6. */
    7. @Override
    8. public void add(Dept dept) {
    9. //补充数据
    10. dept.setCreateTime(LocalDateTime.now());
    11. dept.setUpdateTime(LocalDateTime.now());
    12. log.info(dept.toString());
    13. deptMapper.add(dept);
    14. }
  • Mapper层

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

  • 前后端联调


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

项目地址

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


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/空白诗007/article/detail/839229
推荐阅读
相关标签
  

闽ICP备14008679号