ResponseBody
-
类型:方法注解、类注解
-
位置:Controller方法上/类上
-
作用:将方法返回值直接响应,如果返回值类型是实体对象/集合,将会转换为JSON格式响应
-
说明:@RestController=@Controller+@ResponseBody;
统一响应结果
三层架构
-
controller:控制层,接收前端发送的请求,对请求进行处理,并响应数据
-
service:业务逻辑层,处理具体的业务逻辑
-
dao(Data Access Object)(持久层):数据访问层,负责数据访问操作,包括数据增删改查
分层解耦
-
内聚:软件中各个功能模块内部的功能联系
-
耦合:衡量软件中各个层/模块之间的依赖、关联的程度
-
软件设计原则:高内聚低耦合
-
控制反转:IOC 对象的创建控制权由程序自身转移到外部(容器)
-
依赖注入:DI 容器为应用程序提供运行时,所依赖的资源
-
Bean对象:IOC容器中创建、管理的对象
Bean的声明
注意事项:
-
声明Bean时,可以通过value属性指定bean的名字,如果没有指定,默认为类名首字母小写
-
使用以上四个注解都可以声明bean,但是在springboot集成web开发中,声明控制器bean只能用@Controller
Bean组件扫描
-
前面声明bean的四大注解,要想生效,还需要被组件扫描注解@ComponeentScan扫描
-
@ComponeentScan注解虽然没有显式配置,但实际上已经包含在了启动类声明注解@SpringBootApplication中,默认扫描范围是启动类所在包及其子包
Bean注入
-
@ Autowired注解,默认是按照类型进行,如果存在多个相同类型的bean,将会报错
-
通过以下方法解决
-
@Primary
-
@Qualifier
-
@Resource
-
数据库
存储和管理数据的仓库
-
数据库管理系统DBMS:操纵和管理数据库的大型软件
-
SQL:操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准
MySQL数据模型
-
关系型数据库:建立在关系模型基础上,由多张互相连接的二维表组成的数据库
SQL通用语法
-
SQL语句可以单行或多行书写,以分号结尾
-
SQL语句可以使用空格/缩进来增强语句的可读性
-
MySQL数据库的SQL语句不区分大小写
-
注释
-
单行注释:--注释内容或#注释内容(MySQL特有)
-
多行注释:/* 注释内容 */
-
DDL(数据库操作)
-
查询
-
查询所有:show databases;
-
查询当前:select database();
-
-
创建
-
创建数据库:create database [if not exist] 数据库名;
-
-
使用
-
使用数据库:use 数据库名;
-
-
删除
-
删除数据库:drop database [if exists] 数据库名;
-
上述语法中的database,可以替换成schema
-
数据类型
DDL(表操作)
-
查询当前数据库所有表:show tables;
-
查询表结构:desc 表名;
-
查询建表语句:show create table 表名;
-
删除表:drop table [if exists] 表名;
DML
-
修改数据:update 表名 set 字段名1=值1...[where 条件];
修改条件可以有,也可以没有,如果没有条件,则会修改整张表所有数据
-
删除数据:delete from 表名 [where 条件];
DELETE语句条件可以没有,如果没有,则会删除整张表数据
DELETE语句不能删除某一字段的值(如果要操作,可以使用UPDATE,将该字段值置为NULL)
DQL
-
条件查询:select 字段列表 from 表名 where 条件列表;
NULL值不参与所有聚合函数运算
统计数量可以使用:count(*)[推荐使用] count(字段) count(常量)
-
分组查询:select 字段列表 from 表名 [where 条件] group by 分组字段名 [having 分组后过滤条件];
-
where 和 having的区别
-
执行时机不同:where是分组之前进行过滤,不满足则不参与分组;having是分组之后对结果进行过滤
-
判断条件不同:where不能对聚合函数进行判断,having可以
-
-
分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义
-
执行顺序:where>聚合函数>having