java后端笔记

56 阅读7分钟

 创建springboot项目

​编辑

​编辑

​编辑

启动后浏览器访问:localhost:8080/hello

postman

在my workspace 添加

​编辑

填写url后发送请求

请求响应

简单参数和实体参数

在ide中

​编辑

创建类的包与controller同级,导包:

​编辑

在Java类中写getset函数,重写tostring函数

​编辑

在RequestController写:

//springboot方式
    @RequestMapping("/simpleParam")
    public String simpleParam(String name, Integer age) {

        System.out.println(name + " " + age);
        return "OK";
    }
    //实体参数
    @RequestMapping("/simplePojo")
    public String simpleParam2(User user) {
        System.out.println(user);
        return "OK";
    }

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

数组集合参数

传递不定个数数据的时候:

​编辑

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

日期参数

​编辑


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

josn参数

​编辑

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

路径参数

​编辑

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

返回json格式及统一响应结果封装

package com.zizisuo.pojo;


public class Result {

    // 操作代码
    private Integer code;

    // 提示信息
    private String meg;

    // 结果数据
    private Object data;

    public Result() {

    }

    public Result(Integer code, String msg, Object data) {
        this.code =code;
        this.meg = msg;
        this.data = data;
    }

    public Integer getCode() {
        return code;
    }

    public void setCode(Integer code) {
        this.code = code;
    }

    public String getMeg() {
        return meg;
    }

    public void setMeg(String meg) {
        this.meg = meg;
    }

    public Object getData() {
        return data;
    }

    public void setData(Object data) {
        this.data = data;
    }

    //成功返回封装-无数据
    public static Result success(Object data) {
        return new Result(1,"success",data);
    }
    //成功返回封装-带数据
    public static Result success() {
        return new Result(1,"success",null);
    }
    //失败返回封装-使用默认提示信息
    public static Result error(String msg) {
        return new Result(0,msg,null);
    }

    @Override
    public String toString() {
        return "Result{" +
                "code=" + code +
                ", meg='" + meg + ''' +
                ", data=" + data +
                '}';
    }
}

​编辑

​编辑

​编辑

分层解耦

MySQL

准备工作

MySQL :: Download MySQL Community Server

选择版本安装

添加环境变量:​编辑

​编辑

管理员身份运行cmd打mysql,出现error就是成功了:

​编辑

初始化mysql:

cmd打mysqld --initialize-insecure然后发现多了一个data文件夹

​编辑

注册mysql服务:

cmd打mysqld -install即可

​编辑

然后就能在“服务”中找到:

​编辑

启动/关闭mysql:

​编辑

修改默认账密:

​编辑

​编辑

登录/退出mysql

​编辑

​编辑

退出:

​编辑

数据库设计--DDL语句

数据库

创建数据库 create database name01;

展示所有数据库 show  databases;

使用指定数据库 use name01;

查看当前使用的是哪个数据库:select database();

​编辑

删除指定数据库: drop database name03;

表结构

创建表结构:
create table 表名(
    字段1  字段类型 [约束] [comment 字段1注释],
    字段2  字段类型 [约束] [comment 字段2注释],
    字段3  字段类型 [约束] [comment 字段3注释]
    )[comment 表注释];


create table table01 (
    id int comment 'ID,唯一标识',
    username varchar(20) comment '用户名',
    name varchar(10) comment '姓名',
    age int comment '年龄',
    gender char(1) comment '性别'
    ) comment  '用户表';

约束:

​编辑

SQL数据结构:

​编辑

​编辑

​编辑

查询表结构:

查看当前库下的表:show tables;

查看指定表结构:desc table01;

查看数据库的建表语句:show create table table01;ctrl+b

修改表结构:

​编辑

删除表结构

drop table table01;

添加修改删除数据

添加:

​编辑


insert into table01(username, name, age) values ('zizisuo','ZPS',1);

insert into table01(username, name, age,table01.newtime) values ('zizisuo3','ZPS2',12,now());

insert into table01(id, username, name, age, gender,newtime) VALUES (null,'ppp11','ddd11',88,1,now()) ,(null,'ppp2','ddd2',88,1,now());

修改:

​编辑

update table01 set name='zizisuo4',newtime=now() where id=5;

update table01 set newtime=now();

删除:

​编辑

delete from table01 where id =1;

delete from table01;

数据库操作--DQL

​编辑

基本查询

​编辑

select name,entrydate from tb_emp;

select id, username, password, name, gender, image, job, entrydate, create_time, update_time from tb_emp;
select * from tb_emp; -- 不推荐,性能低

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

-- 查询已有的员工关联了哪几种职位
select distinct job from tb_emp;

条件查询

​编辑

select * from tb_emp where name= '杨逍';

select * from tb_emp where id <=5;

select * from tb_emp where job is null; -- 不能用 = 用is 和is not

select * from tb_emp where password !='123456';

select * from tb_emp where entrydate>='2000-1-1' and entrydate<='2010-1-1';
select * from tb_emp where entrydate between '2000-1-1' and '2010-1-1';

select * from tb_emp where entrydate between '2000-1-1' and '2010-1-1' and gender=2;

select * from tb_emp where job=2 or job=3 or job=4;
select * from tb_emp where job in (2,3,4);

select * from tb_emp where name like '__'; -- 名字两个字的

select * from tb_emp where name like '张%';

分组查询

​编辑

​编辑

-- 不对null进行计算
-- 数据总量
select count(*) from tb_emp;

select min(entrydate) from tb_emp;
select max(entrydate) from tb_emp;

select avg(id) from tb_emp;

select sum(id) from tb_emp;



select gender, count(*) from tb_emp group by gender;

select job,count(*) from tb_emp group by job ;

排列查询

​编辑

select * from tb_emp order by entrydate asc; -- asc升序(默认)

select * from tb_emp order by entrydate desc; -- desc降序

select * from tb_emp order by entrydate ,update_time desc;   -- 按照入职时间升序,相同时按照更新时间降序

分页查询

​编辑

select  * from tb_emp limit 5,5;

select  * from tb_emp limit (页码--1)*展示数,展示数;

多表设计

多表查询

select * from tb_emp,tb_dept where tb_emp.dept_id=tb_dept.id;

内连接

​编辑

select tb_emp.name,tb_dept.name from tb_dept,tb_emp  where tb_dept.id=tb_emp.dept_id;

select tb_emp.name,tb_dept.name from tb_dept inner join tb_emp on tb_dept.id = tb_dept.id;

外连接

​编辑

select tb_emp.name,tb_dept.name from tb_emp left join tb_dept on tb_dept.id = tb_emp.dept_id;

select tb_emp.name,tb_dept.name from tb_emp right join tb_dept on tb_dept.id = tb_emp.dept_id;

子查询

列子查询



select * from tb_emp where dept_id=(select id from tb_dept where name='教研部');

select * from tb_emp where tb_emp.entrydate>(select entrydate from tb_emp where name='方东白');

select * from tb_emp where dept_id in (select id from tb_dept where tb_dept.name='教研部' or tb_dept.name='咨询部');


行子查询

select * from tb_emp where (entrydate,job)=(select entrydate,job from tb_emp where name='韦一笑');




表子查询

select * from (select * from tb_emp where entrydate > '2006-01-01') e,tb_dept d where e.dept_id=d.id;

事务

​编辑

四大特性:原子性 一致性 隔离性 持久性

索引

​编辑

数据库管理工具 DataGrip(idea内置)

在idea添加扩展-----file --settings--plugins--下载Database Navigator(魔法)----view--tool windows--database-----新建--data source新建MySQL

图形化界面添加数据并保存

 ​编辑