03-JavaWeb-Maven&SpringBoot&MySQL

Maven初级

在这里插入图片描述
在这里插入图片描述

Maven安装

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Maven配置

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
全局配置
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

导入Maven项目

在这里插入图片描述
在这里插入图片描述

依赖配置

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Maven高级

后端开发01

springbootweb快速入门

在这里插入图片描述
在这里插入图片描述

自动创建springboot项目

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

pom.xml文件说明

<parent> </parent>标签是指定了一个坐标,是SpringBoot的父工程,我们所创建的所有的SpringBoot工程,都需要继承这个父工程。
在这里插入图片描述
<dependencies></dependencies> 添加依赖坐标标签
在这里插入图片描述
<build></build>插件标签
在这里插入图片描述

启动类

用来启动SpringBoot工程
在这里插入图片描述

手动创建springboot项目

1)在idea中创建一个maven项目,正常填写项目的坐标信息

HTTP

在这里插入图片描述

请求(request)

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

响应(response)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Servlet

Servlet=Server+applet

Server:服务器

applet:小程序

Servlet含义是服务器端的小程序

在整个Web应用中,Servlet主要负责处理请求、协调调度功能。我们可以把Servlet称为Web应用中的『控制器』
在这里插入图片描述

Tomcat

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

后端开发02

在这里插入图片描述

请求

1)原始方式:

编写代码:
在原始的web程序中,获取请求参数,需要通过HttpServletRequest 对象手动获取。
在这里插入图片描述
测试请求:
在这里插入图片描述

@RestController
public class requestController {
    @RequestMapping("/simpleParam")
    public String simpleParam(HttpServletRequest request) {
        // 获取请求参数
        String name=request.getParameter("name");
        String ageStr=request.getParameter("age");
        int age = Integer.parseInt(ageStr);

        System.out.println(name+":"+age);
        return "ok";
    }
}
2)SpringBoot方式

简单参数:参数名与形参变量名相同,定义形参即可接收参数。

在这里插入图片描述

 @RequestMapping("/simpleParam")
    public String simpleParam(String name,Integer age) {
        // 获取请求参数
        System.out.println(name+":"+age);
        return "ok";
    }

GET请求,请求参数在请求行中(URL)填写。
在这里插入图片描述
运行结果和上面一样。
Post请求:数据在请求体中(Body)
在这里插入图片描述

简单参数传递

在这里插入图片描述

简单实体参数

在这里插入图片描述
在这里插入图片描述

   //实体参数
    @RequestMapping("/simplePojo")
    public String simplePojo(User user){
        System.out.println(user);
        return "ok";
   }

复杂实体参数

在这里插入图片描述
在这里插入图片描述

数组集合参数

数组参数:请求参数名与形参数组名称相同且请求参数为多个,定义数组类型形参即可接收参数。
在这里插入图片描述

    //数组组合参数
    @RequestMapping("/arrayParam")
    public String arrayParam(String[]hobby){
        System.out.println(Arrays.toString(hobby));
        return "ok";
    }

集合参数:请求参数名与形参集合名称相同且请求参数为多个,@RequestParam 绑定参数关系

在这里插入图片描述

    //集合参数
    @RequestMapping("/listParam")
    public String listParam(@RequestParam List<String> hobby){
        System.out.println(hobby);
        return "ok";
    }

日期参数

在这里插入图片描述

    //日期参数
    @RequestMapping("/dateParam")
    public String dateParam(@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime updateTime){
        System.out.println(updateTime);
        return "ok";
    }

Json参数

JSON参数:JSON数据键名与形参对象属性名相同,定义POJO类型形参即可接收参数,需要使用 @RequestBody 标识
在这里插入图片描述

    //Json参数
    @RequestMapping("/jsonParam")
    public String jsonParam(@RequestBody User user){
        System.out.println(user);
        return "ok";
    }

路径参数

路径参数:通过请求URL直接传递参数,使用{…}来标识该路径参数,需要使用 @PathVariable 获取路径参数

在这里插入图片描述

   //路径参数
    @RequestMapping("/path/{id}")
    public String pathParam(@PathVariable Integer id){
        System.out.println(id);
        return "ok";
    }
  //多路径参数
    @RequestMapping("/path/{id}/{name}")
    public String pathParam2(@PathVariable Integer id,@PathVariable String name){
        System.out.println(id);
        System.out.println(name);
        return "ok";
    }

在这里插入图片描述

响应

在这里插入图片描述

在这里插入图片描述

三层构架

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

IOC&DI&Bean

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

分层解耦

在这里插入图片描述
在这里插入图片描述

IOC&DI入门

@Component注解不可以添加在接口上,因为接口是无法创建对象的
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

存在多个Bean注入的情况

在这里插入图片描述

MySQL

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

数据库设计-DDL

在这里插入图片描述在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

数据库操作-DML

DML英文全称是Data Manipulation Language(数据操作语言),用来对数据库中表的数据记录进行增、删、改操作。
在这里插入图片描述
在这里插入图片描述

数据库操作-DQL

DQL英文全称是Data Query Language(数据查询语言),用来查询数据库表中的记录。
关键字:SELECT

在这里插入图片描述

基本查询

在这里插入图片描述

--  =================== 基本查询 ======================
-- 1. 查询指定字段 name,entrydate 并返回
select name,entrydate from emp ;


-- 2. 查询返回所有字段
-- 方式一:  推荐 , 效率高 . 更直观
select id, username, password, name, gender, image, job, entrydate, create_time, update_time from emp;


-- 方式二:
select * from emp;


-- 3. 查询所有员工的 name,entrydate, 并起别名(姓名、入职日期)  --- as 关键字可以省略
select name as '姓名' ,entrydate as '入职日期' from emp ;

select name '姓名' ,entrydate '入职日期' from emp ;


-- 4. 查询员工有哪几种职位(不要重复) -- distinct
select distinct job from emp;
条件查询

在这里插入图片描述

--  =================== 条件查询 ======================
-- 1. 查询 姓名 为 杨逍 的员工
select * from emp where name = '杨逍';

-- 2. 查询在 id小于等于5 的员工信息
select * from emp where id <= 5;

-- 3. 查询 没有分配职位 的员工信息  -- 判断 null , 用 is null
select * from emp where job is null;

-- 4. 查询 有职位 的员工信息  -- 判断 不是null , 用 is not null
select * from emp where job is not null ;

-- 5. 查询 密码不等于 '123456' 的员工信息
select * from emp where password <> '123456';
select * from emp where password != '123456';

-- 6. 查询入职日期 在 '2000-01-01' (包含) 到 '2010-01-01'(包含) 之间的员工信息
select * from emp where entrydate between '2000-01-01' and '2010-01-01' ;

-- 7. 查询 入职时间 在 '2000-01-01' (包含) 到 '2010-01-01'(包含) 之间 且 性别为女 的员工信息
select * from emp where (entrydate between '2000-01-01' and '2010-01-01') and  gender = 2;

-- 8. 查询 职位是 2 (讲师), 3 (学工主管), 4 (教研主管) 的员工信息
select * from emp where job = 2 or job = 3 or job = 4;

select * from emp where job in (2,3,4);

-- 9. 查询姓名为两个字的员工信息
select * from emp where name like '__';

-- 10. 查询姓 '张' 的员工信息  ---------> 张%
select * from emp where name like '张%';

-- 11. 查询姓名中包含 '三' 的员工信息
select * from emp where name like '%三%';




-- 练习 : 员工管理列表查询
-- 条件 : name , gender , entrydate

select * from emp where name like '%张%' and gender = 1 and entrydate between '2000-01-01' and '2010-01-01';
分组查询

在这里插入图片描述

--  =================== 分组查询 ======================
-- 聚合函数

-- 1. 统计该企业员工数量 -- count
-- A. count(字段)
select count(id) from emp;
select count(job) from emp; -- null值不参与聚合函数运算

-- B. count(*) --推荐
select count(*) from emp;

-- C. count(值)
select count(1) from emp;

-- 2. 统计该企业员工 ID 的平均值
select avg(id) from emp;

-- 3. 统计该企业最早入职的员工的入职日期
select min(entrydate) from emp;

-- 4. 统计该企业最近入职的员工的入职日期
select max(entrydate) from emp;

-- 5. 统计该企业员工的 ID 之和
select sum(id) from emp;

在这里插入图片描述

-- 分组
-- 1. 根据性别分组 , 统计男性和女性员工的数量  -- count
select gender , count(*) from emp group by gender;

-- 2. 先查询入职时间在 '2015-01-01' (包含) 以前的员工 , 并对结果根据职位分组 , 获取员工数量大于等于2的职位 -- count
select job ,count(*)  from emp where entrydate <= '2015-01-01'  group by job having count(*) >= 2;

排序查询

在这里插入图片描述

--  =================== 排序查询 ======================
-- 1. 根据入职时间, 对员工进行升序排序  -- 排序条件
select * from emp order by entrydate asc ; -- 默认升序, asc可以省略的

select * from emp order by entrydate ;

-- 2. 根据入职时间, 对员工进行降序排序
select * from emp order by entrydate desc;


-- 3. 根据 入职时间 对公司的员工进行 升序排序 , 入职时间相同 , 再按照 ID 进行降序排序
select * from emp order by entrydate asc , id desc ;


-- 练习 : 员工管理列表查询 , 根据最后操作时间, 进行倒序排序
-- 条件 : name , gender , entrydate

select * from emp where name like '%张%' and gender = 1 and entrydate between '2000-01-01' and '2010-01-01' order by update_time desc;
分页查询

在这里插入图片描述

案例练习

案例1:
在这里插入图片描述


select *from tb_emp where name like '张%' and gender=1 and entrydate between'2000-01-01'and '2015-12-31'  order by update_time desc limit 0,10;


//格式化后
select *
from tb_emp
where name like '张%'
  and gender = 1
  and entrydate between '2000-01-01' and '2015-12-31'
order by update_time desc
limit 0,10;

案例2:

-- 男性与女性员工的人数统计 (1 : 男性员工 , 2 : 女性员工)
-- 函数: if(条件表达式 , t , f)

--select gender,count(*) from tb_emp group by gender;//根据性别统计数量

select
        if(gender = 1, '男性员工' , '女性员工') '性别',
        count(*) '人数'
from emp group by gender;


-- 员工职位信息统计-- count
-- 函数: case when ... then ... when ... then ... else ... end
-- 函数: case ... when ... then ... when ... then ... else ... end

-- select * from emp group by job;//根据职位分组

-- select job from emp group by job;//根据职位分组

select
       (case when job = 1 then '班主任' when job = 2 then '讲师' when job = 3 then '教研主管' when job = 4 then '学工主管' else '无职位' end ) '职位',
       count(*)
from emp group by job;



select
    (case job when 1 then '班主任' when 2 then '讲师' when 3 then '教研主管' when 4 then '学工主管' else '无职位' end ) '职位',
    count(*)
from emp group by job;

多表设计

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

多表查询

在这里插入图片描述
在这里插入图片描述

内连接

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

事务

在这里插入图片描述
在这里插入图片描述

索引

加粗样式
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

  • 23
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值