实际应用birdboot框架
1.BirdBoot导包
1.新建maven BirdBoot------pom替换
2.删掉static 和 Springboot里面写的(controller entity)
rebuild之后把无用的导包都删掉
主启动类里面把main方法改为run方法 传参:类名和参数(复制springboot里的)
因为springboot里面点的run方法,我们框架里面要改名为run方法
导包 右侧maven install
2.MyBirdBootProject应用
新建maven MyBirdBootProject
1.pom 加依赖 此步骤相当于建立spring是web打钩自动加依赖
2.resorse里新建目录 static 粘页面
3.main java新建包 com.myweb新建类 主启动类 MyBirdBOOTApplication
手写框架里面BirdBootApplication点出run方法 传自己的类名和参
因为成功添加依赖 导包后可以使用BirdBootApplication 可以加载页面 但显示空指针异常
因为请求业务时 DispatcherServlet里面找HandlerMapping去要,第一次调用HandlerMapping会执行他的静态块,执行initMapping会扫描controller类,此时没有会显示空指针
4.com.myweb.新建controllerl里新建UserController
加方法 加注解
5.难点:controller的包名com.myweb应该可以随便写 但是birdboot需要扫描到controller
所以springboot约定大于配置 要求controller包要和启动类Application放在同一个包下
启动类可以看见package包名
之前写死的
下面的子目录
数据库
密码:wn****
1.数据库软件
如果是第一次进入此界面并且没有驱动,IDEA会在Driver处提示没有下载对应数据库类型的驱动,直接点击,就会自动下载
下载完成后,填写数据库账户信息,这里我的用户名User为root,由于是本地数据库,所以Host填写为localhost,端口Port为3306,Password填写用户名对应的密码即可,Database可以填写想连接的数据库名,也可以暂时不填,待连接上后再设置。填写以上所有信息后,点击Test Connection按钮,如果显示成功Successful,说明连接成功,点击OK按钮,配置完成
2.
数据库
数据库基本概念
数据库
DataBase(数据库),存储数据的仓库。
之前我们项目中将用户信息写入一个文件,最终用一个目录users保存所有用户信息。这个users目录就可以称为
是一个数据库。利用文件系统进行操作,经常已手动或半自动形式维护数据的操作,缺点:低效。
数据库管理系统
DBMS(数据库管理系统)。可独立运行的软件,用于维护数据的操作。
常见的DBMS有:
- mysql
- oracle
- db2
- sqlserver
数据库与表的概念
以Mysql为例:
我们可以在Mysql中创建若干个数据库,每个数据库用于一个项目。
每个数据库中又可以创建多个表,表是用于保存一组数据的。
示意图:
数据表是由行和列构成
其中列被称为字段,就是一组数据中各部分信息。
其中行被称为记录,就是各部分信息组成的一条数据。
注:用面向对象的角度思考:
表相当于是一个java类。比如User类
字段相当于是类中的属性。比如User类中有username,password,nickname,age四个属性
记录相当于是类的一个实例。比如一个User实例就可以表示一个用户信息
如何操作DBMS
所有的DBMS都支持通过SQL语句进行操作。我们向数据库发送特定的SQL语句来表达要进行某项操作。
SQL有标准:SQL92
所有的DBMS都支持SQL92标准。
注:Structured Query Language(SQL)结构化查询语言
连接数据库的方式
- 命令行形式
- 第一方或第三方提供的图形化界面的客户端
- 在集成开发环境中(IDEA,Eclipse)
- JDBC(java 数据库连接),java程序中若需要使用数据库则这样连接(IDEA,Eclipse都采取这种方式)
SQL语句分类
-
DDL 数据定义语言
CREATE,DROP,ALTER
对数据库对象进行操作的语言。数据库对象有:数据库,表,视图,索引等。
-
DML 数据操作语言
INSERT,UPDATE,DELETE
对表中的数据进行操作的语言。
-
DQL 数据查询语言
SELECT
对表中的数据进行查询的语言。
-
DCL 数据控制语言
DBA用于管理数据库的语言。
-
TCL 事物控制语言
COMMIT,ROLLBACK
对DML数据操作保证具有原子性,一致性。
DDL 数据定义语言
查看DBMS中已有的数据库
SHOW DATABASES
数据库相关操作
新建一个数据库
基本语法:
CREATE DATABASE 数据库名 [CHARSET=字符集名称]
例如:
新建一个名为mydb的数据库
CREATE DATABASE mydb
创建数据库时可以指定字符集
CREATE DATABASE mydb1 CHARSET=UTF8
CREATE DATABASE mydb2 CHARSET=GBK
查看数据库信息
SHOW CREATE DATABASE 数据库名
例:
SHOW CREATE DATABASE mydb1
删除数据库
DROP DATABASE 数据库名
例:
DROP DATABASE mydb1
使用一个数据库(切换一个数据库)
若希望保存数据,则数据必须保存在某张表上。而表必须保存在某个数据库上,因此后期为了对某个数据库的表进行操作,要先切换到该数据库上,才能进行操作。
USE 数据库名
例:切换到mydb数据库
USE mydb
练习:
1. 创建 mydb1和mydb2 数据库 字符集分别为utf8和gbk
CREATE DATABASE mydb1 CHARSET=utf8
CREATE DATABASE mydb2 CHARSET=gbk
2. 查询所有数据库检查是否创建成功
SHOW DATABASES
3. 检查两个数据库的字符集是否正确
SHOW CREATE DATABASE mydb1
SHOW CREATE DATABASE mydb2
4. 先使用mydb2 再使用 mydb1
USE mydb2
USE mydb1
5. 删除两个数据库
DROP DATABASE mydb1
DROP DATABASE mydb2
表相关操作
创建表
语法:
CREATE TABLE 表名(
字段名 类型,
字段名 类型,
...
)
例:
CREATE TABLE user(
id INT, INT在mysql中为整数类型。
username VARCHAR(30), VARCHAR在mysql中为字符串类型,长度为字节,
password VARCHAR(30), VARCHAR(30)则字符转换的字节最多30个,
nickname VARCHAR(30), 若UTF-8编码则中文最多10个字(每个中文3字节)。
age INT(3) INT指定长度为位数。这里INT(3)为最多3位整数。
)
查看已创建的表的表结构
语法:
DESC 表名
例:
查看user表的表结构
DESC user
查看已创建表的详细信息
SHOW CREATE TABLE 表名
例如:
SHOW CREATE TABLE user
删除表
语法:
DROP TABLE 表名
例:
删除user表
DROP TABLE user
查看数据库中所有的表
SHOW TABLES
修改表
-
修改表名
语法:
RENAME TABLE 原表名 TO 新表名
例如:
将表user改名为userinfo RENAME TABLE user TO userinfo
-
修改表结构
准备一张表测试: CREATE TABLE hero( name VARCHAR(30), age INT(3) )
-
添加字段
-
向表末尾追加新的字段
ALTER TABLE 表名 ADD 字段名 类型
例:
ALTER TABLE hero ADD gender VARCHAR(10)
-
将字段添加到表的第一个字段位置上
ALTER TABLE 表名 ADD 字段名 类型 FIRST
例:
在hero表第一个字段上添加id ALTER TABLE hero ADD id INT FIRST
-
将字段插入到表中某个位置
将字段插入到表中某字段的后面 ALTER TABLE 表名 ADD 字段名 类型 AFTER 表中某字段
例:
将密码(pwd)字段插入到name和age之间 ALTER TABLE hero ADD pwd VARCHAR(30) AFTER name
-
-
删除字段
ALTER TABLE 表名 DROP 字段名
例:
将pwd字段从hero表中删除 ALTER TABLE hero DROP pwd
-
-
修改现有字段
ALTER TABLE 表名 CHANGE 原字段名 新字段名 类型
例:
-
将hero表中age字段的长度改为5 ALTER TABLE hero CHANGE age age INT(5)
-
- ```sql
将hero表中age字段的类型改为VARCHAR(10)
ALTER TABLE hero CHANGE age age VHARCHAR(10)
```
![image-20221118172246180](assets/image-20221118172246180.png)
- ```sql
将hero表中gender字段名改为pwd
ALTER TABLE hero CHANGE gender pwd VARCHAR(10)
```
![image-20221118172557510](assets/image-20221118172557510.png)
- 注意事项:
修改表字段应当在表中没有数据时进行。如果表中已经存在数据,则修改字段可能不成功。
比如:
hero表中有10条记录,每条记录gender字段已经有值(每个人的性别)
若此时将表字段gender修改类型为INT。此时字符串转换int("男"怎么转成整数???)
比如:
hero表中pwd记录了每个人的密码。原长度为10。此时若修改字段长度为5,会导致原密码保存不下则修改失败。
练习:
1.创建数据库mydb3 字符集gbk 并使用
CREATE DATABASE mydb3 CHARSET=gbk
USE mydb3
2.创建t_hero英雄表, 有名字和年龄字段
CREATE TABLE t_hero(
name VARCHAR(30),
age INT(3)
)
3.修改表名为hero
RENAME TABLE t_hero TO hero
4.查看表hero的信息
SHOW CREATE TABLE hero
5.查询表hero结构
DESC hero
6.删除表hero
DROP TABLE hero
7.删除数据库mydb3
DROP DATABASE mydb3
作业:
1.创建数据库mydb4 字符集utf8并使用
2.创建teacher表 有名字(name)字段
3.添加表字段: 最后添加age 最前面添加id(int型) , age前面添加salary工资(int型)
4.删除age字段
5.修改表名为t
6.删除表t
7.删除数据库mydb4