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>
相关推荐
PandaCave16 分钟前
vue工程运行、构建、引用环境参数学习记录
javascript·vue.js·学习
yuwinter21 分钟前
鸿蒙HarmonyOS学习笔记(2)
笔记·学习·harmonyos
red_redemption43 分钟前
自由学习记录(23)
学习·unity·lua·ab包
幽兰的天空1 小时前
默语博主的推荐:探索技术世界的旅程
学习·程序人生·生活·美食·交友·美女·帅哥
沐泽Mu2 小时前
嵌入式学习-C嘎嘎-Day05
开发语言·c++·学习
你可以叫我仔哥呀2 小时前
ElasticSearch学习笔记三:基础操作(一)
笔记·学习·elasticsearch
脸ル粉嘟嘟2 小时前
GitLab使用操作v1.0
学习·gitlab
路有瑶台2 小时前
MySQL数据库学习(持续更新ing)
数据库·学习·mysql
zmd-zk3 小时前
flink学习(2)——wordcount案例
大数据·开发语言·学习·flink
Chef_Chen3 小时前
从0开始学习机器学习--Day33--机器学习阶段总结
人工智能·学习·机器学习