JavaWeb笔记_06

1. 分层解耦
  • 软件设计原则:高内聚低耦合
1.1 耦合问题

首先需要了解软件开发涉及到的两个概念:内聚和耦合。

  • 内聚:软件中各个功能模块内部的功能联系。

  • 耦合:衡量软件中各个层/模块之间的依赖、关联的程度。

在三层架构中,Service层和Controller层都通过new对象来获取数据,这样编写的代码耦合度太高
解耦思路:将对象交给IOC容器

1.2 IOC
  • 控制反转(Inversion Of Control,IOC): 对象的创建控制权由程序自身转移到外部(容器),这种思想称为控制反转
    • 对象的创建权由程序员主动创建转移到容器,对象由OC容器提供,而不是自己创建
    • IOC容器中创建、管理的对象,称之为:bean对象
1.3 DI
  • 依赖注入(Dependency Injection,DI): 容器为应用程序提供运行时,所依赖的资源,称之为依赖注入。
    • 程序运行时需要某个资源,此时容器就为其提供这个资源

  • @Component :万能注解,可用于所有层,标注在类上
    • @Controller:Controller层注解,如果不写参数,其value值(bean名)为该类名且首字母小写
    • @Service:Service层注解,如果不写参数,其value值(bean名)为该类名且首字母小写
    • @Repository:dao层注解,如果不写参数,其value值(bean名)为该类名且首字母小写
注解说明位置
@Controller@Component的衍生注解标注在控制器类上
@Service@Component的衍生注解标注在业务类上
@Repository@Component的衍生注解标注在数据访问类上(由于与mybatis整合,用的少)
@Component声明bean的基础注解不属于以上三类时,用此注解
  • @Autowired:自动装配,默认按类型装配
    • @Qualifier:必须配合@Autowired使用,通过value属性将自动装配的类型修改为按bean名称装配
  • @primary:标记在类上,当有1个以上的相同bean时,被改注解标记的类生效

面试题 : @Autowird 与 @Resource的区别

  • @Autowired 是spring框架提供的注解,而@Resource是JDK提供的注解
  • @Autowired 默认是按照类型注入,而@Resource是按照名称注入

MySQL数据库

1.1 下载和安装
  • 官网下载地址:https://downloads.mysql.com/archives/community/
1.2 数据模型

关系型数据库(RDBMS)

  • 概念:建立在关系模型基础上,由多张相互连接的二维表组成的数据库

二维表的优点:

  • 使用表存储数据,格式统一,便于维护

  • 使用SQL语言操作,标准统一,使用方便,可用于复杂查询

1.3 SQL通用语法
  1. SQL语句可以单行或多行书写,以分号结尾。
  2. SQL语句可以使用空格/缩进来增强语句的可读性。
  3. MySQL数据库的SQL语句不区分大小写。
  4. 注释:
  • 单行注释:-- 注释内容 或 # 注释内容(MySQL特有)
  • 多行注释: /* 注释内容 */
1.3 分类
分类全称说明
DDLData Definition Language数据定义语言,用来定义数据库对象(数据库,表,字段)
DMLData Manipulation Language数据操作语言,用来对数据库表中的数据进行增删改
DQLData Query Language数据查询语言,用来查询数据库中表的记录
DCLData Control Language数据控制语言,用来创建数据库用户、控制数据库的访问权限
  • 数据定义语言(Data Definition Language,DDL),用来定义数据库对象(数据库、表)
  • DDL中数据库的常见操作:查询、创建、使用、删除



#### 2. 数据库操作 + show databases;查询所有数据库 + show database();查看当前数据库
  • 创建数据库
    • create database [ if not exists ] 数据库名;

  • 使用数据库
    • use 数据库名 ;

  • 删除数据库
    • drop database [ if exists ] 数据库名 ;




3. 表操作
  • 创建
create table  表名(
	字段1  字段1类型 [约束]  [comment  字段1注释 ],
	字段2  字段2类型 [约束]  [comment  字段2注释 ],
	......
	字段n  字段n类型 [约束]  [comment  字段n注释 ] 
) [ comment  表注释 ] ;

注意: [ ] 中的内容为可选参数; 最后一个字段后面没有逗号

4. 约束

在MySQL数据库当中,提供了以下5种约束:

约束描述关键字
非空约束限制该字段值不能为nullnot null
唯一约束保证字段的所有数据都是唯一、不重复的unique
主键约束主键是一行数据的唯一标识,要求非空且唯一primary key
默认约束保存数据时,如果未指定该字段值,则采用默认值default
外键约束让两张表的数据建立连接,保证数据的一致性和完整性foreign key

注意:约束是作用于表中字段上的,可以在创建表/修改表的时候添加约束。

5. 数据类型
  • MySQL中的数据类型有很多,主要分为三类:数值类型、字符串类型、日期时间类型。

数值类型

类型大小有符号(SIGNED)范围无符号(UNSIGNED)范围描述
TINYINT1byte(-128,127)(0,255)小整数值
SMALLINT2bytes(-32768,32767)(0,65535)大整数值
MEDIUMINT3bytes(-8388608,8388607)(0,16777215)大整数值
INT/INTEGER4bytes(-2147483648,2147483647)(0,4294967295)大整数值
BIGINT8bytes(-263,263-1)(0,2^64-1)极大整数值
FLOAT4bytes(-3.402823466 E+38,3.402823466351 E+38)0 和 (1.175494351 E-38,3.402823466 E+38)单精度浮点数值
DOUBLE8bytes(-1.7976931348623157 E+308,1.7976931348623157 E+308)0 和 (2.2250738585072014 E-308,1.7976931348623157 E+308)双精度浮点数值
DECIMAL依赖于M(精度)和D(标度)的值依赖于M(精度)和D(标度)的值小数值(精确定点数)
  • 字符串类型
类型大小描述
CHAR0-255 bytes定长字符串(需要指定长度)
VARCHAR0-65535 bytes变长字符串(需要指定长度)
TINYBLOB0-255 bytes不超过255个字符的二进制数据
TINYTEXT0-255 bytes短文本字符串
BLOB0-65 535 bytes二进制形式的长文本数据
TEXT0-65 535 bytes长文本数据
MEDIUMBLOB0-16 777 215 bytes二进制形式的中等长度文本数据
MEDIUMTEXT0-16 777 215 bytes中等长度文本数据
LONGBLOB0-4 294 967 295 bytes二进制形式的极大文本数据
LONGTEXT0-4 294 967 295 bytes极大文本数据
  • 日期时间类型
类型大小范围格式描述
DATE31000-01-01 至 9999-12-31YYYY-MM-DD日期值
TIME3-838:59:59 至 838:59:59HH:MM:SS时间值或持续时间
YEAR11901 至 2155YYYY年份值
DATETIME81000-01-01 00:00:00 至 9999-12-31 23:59:59YYYY-MM-DD HH:MM:SS混合日期和时间值
TIMESTAMP41970-01-01 00:00:01 至 2038-01-19 03:14:07YYYY-MM-DD HH:MM:SS混合日期和时间值,时间戳
6. 查询表
  • show tables;:查询当前数据库所有表
  • desc 表名 ;#可以查看指定表的字段、字段的类型、是否可以为NULL、是否存在默认值等信息 :查看指定表结构
  • show create table 表名 ;:查询指定表的建表语句
7. 修改
7.1 添加字段
alter table 表名 add  字段名  类型(长度)  [comment 注释]  [约束];
7.2 修改数据类型
alter table 表名 modify  字段名  新数据类型(长度);
alter table 表名 change  旧字段名  新字段名  类型(长度)  [comment 注释]  [约束];
7.3 删除字段
alter table 表名 drop 字段名;
7.4 修改表名
rename table 表名 to  新表名;
7.5 删除
drop  table [ if exists ]  表名;
3. 数据库操作-DML
  • 数据操作语言(Data Manipulation Language, DML):来对数据库中表的数据记录进行增、删、改操作。

    • 添加数据(INSERT)
    • 修改数据(UPDATE)
    • 删除数据(DELETE)

3.1 增加(insert)

insert语法:

  • 向指定字段添加数据

    insert into 表名 (字段名1, 字段名2) values (1,2);
    
  • 全部字段添加数据

    insert into 表名 values (1,2, ...);
    
  • 批量添加数据(指定字段)

    insert into 表名 (字段名1, 字段名2) values (1,2), (1,2);
    
  • 批量添加数据(全部字段)

    insert into 表名 values (1,2, ...), (1,2, ...);
    

3.2 修改(update)

update语法:

update 表名 set 字段名1 =1 , 字段名2 =2 , .... [where 条件] ;

3.3 删除(delete)

delete语法:

delete from 表名  [where  条件] ;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值