JavaWeb学习——黑马视频练习总结

目录

一、环境搭建/准备

1、前端、后端、数据库关系认识

2、前端、后端规范开发

3、开发流程总结

二、三层架构认识


一、环境搭建/准备

1、前端、后端、数据库关系认识

根据目前的学习经验来看,要开发一个基础的具有增删改查的功能软件,要有前端界面的配置、后端响应处理代码的准备以及数据库的连接,前后端要指定的配备规格,才能实现前后端连接。而就JavaWeb来看,要实现的就是后端代码逻辑的实现以及数据库的操作。

上图是黑马视频中实现员工信息处理的后端代码的前置准备条件,第一、二点就不必多说,使用IDEA进行代码构建环境搭建是必备的,第三点是添加设置,比如经典的数据库连接四要素,第四点就是考虑代码层的设计,分为Mapper、Service、Controller三个部分,能清晰处理代码关系,在以后的开发过程中,都要遵循。

2、前端、后端规范开发

我们通过了解提高的成品原型设计后,就要开始着手开发,前端和后端所使用的技术都是新式的,而要实现前后端关联,在这就要提到接口文档这一事物了,而它的作用是约束前后端的协同开发、规范项目内容。

注:接口文档包含接口参数、返回类型以及服务器连接规则,是我们后端开发时必备的要点。

3、开发流程总结

二、三层架构认识

首先来介绍三层架构的含义

三层架构的含义

1、Controller: 控制层,接收前端发送的请求,对请求进行处理,并响应数据。

2、Service:业务逻辑层,处理具体的业务逻辑。

3、Dao(Data Access Object): 数据访问层(持久层),负责数据访问操作,包括数据的增、删、改、查。

注:这里的dao层就是上面说的Mapper层。

然后我们来看看黑马在介绍项目开发时所考虑的三层架构内容,它们分别是查询、单个删除、添加、分页查询、条件查询、多个删除:

下面是我以完成的部分代码,可以进行参考:

java 复制代码
// Controller层
package com.sunny.controller;

import com.sunny.pojo.Dept;
import com.sunny.pojo.Result;
import com.sunny.service.DeptService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@Slf4j
@RestController
@RequestMapping("/depts")
public class DeptController {
    //显示日志
//    private static Log logger= LogFactory.getLog(DeptController.class);

    //@RequestMapping(value = "/depts",method = RequestMethod.GET)//指定请求方式为GET

    @Autowired
    private DeptService deptService;

    @GetMapping//简化GET指定
    public Result list(){
        //显示接收日志
        log.info("查询全部部门数据");

        //调用Service查询部门数据
        List<Dept> deptList=deptService.list();

        return Result.success(deptList);
    }

    //删除部门
    @DeleteMapping("{id}")
    public Result delete(@PathVariable Integer id){
        log.info("删除部门的id为:{}",id);
        deptService.delete(id);
        return Result.success();
    }

    @PostMapping
    public Result add(@RequestBody Dept dept){
        log.info("新增部门:{}",dept);
        deptService.add(dept);
        return Result.success();
    }
}

package com.sunny.controller;

import com.sunny.pojo.PageBean;
import com.sunny.pojo.Result;
import com.sunny.service.EmpService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.*;

import java.time.LocalDate;
import java.util.List;

@Slf4j
@RestController
@RequestMapping("/emps")
public class EmpController {

    @Autowired
    private EmpService empService;

    @GetMapping
    public Result page(@RequestParam(defaultValue = "1") Integer page,
                       @RequestParam(defaultValue = "10") Integer pageSize,
                       String name, Short gender,
                       @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate begin,
                       @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate end){
        log.info("分页查询,参数:{},{},{},{},{},{}",page,pageSize,name,gender,begin,end);
        PageBean pageBean=empService.page(page,pageSize,name,gender,begin,end);
        return Result.success(pageBean);
    }

    @DeleteMapping("/{ids}")
    public Result delete(@PathVariable List<Integer> ids){
        log.info("批量删除,ids:{}",ids);
        empService.delete(ids);
        return Result.success();
    }
}
java 复制代码
// Mapper层
package com.sunny.mapper;

import com.sunny.pojo.Dept;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * 部门管理
 */
@Mapper
public interface DeptMapper {
    /**
     * 查询全部部门数据
     * @return
     */
    @Select("select * from dept")
    List<Dept> list();

    @Delete("delete from dept where id=#{id}")
    void deleteById(Integer id);

    @Insert("insert into dept (name, create_time, update_time) values (#{name},#{createTime},#{updateTime})")
    void insert(Dept dept);
}


package com.sunny.mapper;

import com.sunny.pojo.Emp;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import java.time.LocalDate;
import java.util.List;

/**
 * 员工管理
 */
@Mapper
public interface EmpMapper {

//    @Select("select count(*) from emp")//查询总记录数
//    public Long count();
//
//    //分页查询,获取列表数据
//    @Select("select * from emp limit #{start},#{pageSize}")
//    public List<Emp> page(Integer start,Integer pageSize);

    //使用pagehelper来进行分页查询
    //@Select("select * from emp")

    public List<Emp> list(String name, Short gender, LocalDate begin,LocalDate end);

    void delete(List<Integer> ids);
}
java 复制代码
// Service层
package com.sunny.service.impl;

import com.sunny.mapper.DeptMapper;
import com.sunny.pojo.Dept;
import com.sunny.service.DeptService;
import org.apache.ibatis.annotations.Insert;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.time.LocalDateTime;
import java.util.List;

@Service
public class DeptServiceImpl implements DeptService {

    @Autowired
    private DeptMapper deptMapper;

    @Override
    public List<Dept> list() {
        return deptMapper.list();
    }

    @Override
    public void delete(Integer id) {
        deptMapper.deleteById(id);
    }

    @Override
    public void add(Dept dept) {
        dept.setCreateTime(LocalDateTime.now());
        dept.setUpdateTime(LocalDateTime.now());

        deptMapper.insert(dept);
    }
}



package com.sunny.service.impl;

import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.sunny.mapper.EmpMapper;
import com.sunny.pojo.Emp;
import com.sunny.pojo.PageBean;
import com.sunny.service.EmpService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.time.LocalDate;
import java.util.List;

@Service
public class EmpServiceImpl implements EmpService {

    @Autowired
    private EmpMapper empMapper;

//    @Override
//    public PageBean page(Integer page, Integer pageSize) {
//        Long count=empMapper.count();
//
//        Integer start=(page-1)*pageSize;
//        List<Emp> empList=empMapper.page(start,pageSize);
//
//        PageBean pageBean=new PageBean(count,empList);
//        return pageBean;
//    }

    @Override
    public PageBean page(Integer page, Integer pageSize, String name, Short gender, LocalDate begin, LocalDate end) {

        PageHelper.startPage(page,pageSize);

        List<Emp> empList=empMapper.list(name, gender, begin, end);
        Page<Emp> p=(Page<Emp>) empList;

        PageBean pageBean=new PageBean(p.getTotal(),p.getResult());
        return pageBean;
    }

    @Override
    public void delete(List<Integer> ids) {
        empMapper.delete(ids);
    }
}



package com.sunny.service;

import com.sunny.pojo.Dept;

import java.util.List;

public interface DeptService {
    /**
     * 查询全部部门数据
     * @return
     */
    List<Dept> list();

    void delete(Integer id);

    void add(Dept dept);
}

package com.sunny.service;

import com.sunny.pojo.PageBean;
import org.springframework.format.annotation.DateTimeFormat;

import java.time.LocalDate;
import java.util.List;

public interface EmpService {
    PageBean page(Integer page, Integer pageSize,String name, Short gender, LocalDate begin, LocalDate end);

    void delete(List<Integer> ids);
}
XML 复制代码
// 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.sunny.mapper.EmpMapper">

    <delete id="delete">
        delete
        from emp
        where id in
        <foreach collection="ids" item="id" separator="," open="(" close=")">
            #{id}
        </foreach>
    </delete>

    <!--条件查询-->
    <select id="list" resultType="com.sunny.pojo.Emp">
        select *
        from emp
        <where>
            <if test=" name!=null and name!='' ">
                name like concat('%',#{name},'%')
            </if>
            <if test="gender!=null">
                and gender=#{gender}
            </if>
            <if test="begin!=null and end!=null">
                and entrydate between #{begin} and #{end}
            </if>
        </where>
        order by update_time desc
    </select>

</mapper>
相关推荐
西岸行者6 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
悠哉悠哉愿意6 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
别催小唐敲代码6 天前
嵌入式学习路线
学习
毛小茛6 天前
计算机系统概论——校验码
学习
babe小鑫6 天前
大专经济信息管理专业学习数据分析的必要性
学习·数据挖掘·数据分析
winfreedoms6 天前
ROS2知识大白话
笔记·学习·ros2
在这habit之下6 天前
Linux Virtual Server(LVS)学习总结
linux·学习·lvs
我想我不够好。6 天前
2026.2.25监控学习
学习
im_AMBER6 天前
Leetcode 127 删除有序数组中的重复项 | 删除有序数组中的重复项 II
数据结构·学习·算法·leetcode
CodeJourney_J6 天前
从“Hello World“ 开始 C++
c语言·c++·学习