在springboot极简教程001-开始也提到了,比较推荐使用MySQL的分支版本MariaDB来进行学习,很多线上的生产环境都在使用,所以学习阶段就可以开始熟悉它。直接网上搜索MariaDB下载安装即可。
需要注意的地方
- 安装好MariaDB后,可以把安装目录下的bin目录路径(也即mysql.exe所在目录)添加到PATH环境变量中,以后可以直接使用mysql命令。
- 创建数据库表的时候尽量使用utf8格式(有的推荐utf8mb4),可以参考如下SQL:
- MySQL5.5版本的默认数据库存储引擎为InnoDB,InnoDB具有提交、回滚和崩溃恢复能力的事务安全。但是比起MyISAM存储引擎,InnoDB写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引。MyISAM是MySQL5.5之前版本默认的数据库存储引擎。MYISAM提供高速存储和检索,以及全文搜索能力,适合数据仓库等查询频繁的应用。但不支持事务、也不支持外键。MyISAM格式的一个重要缺陷就是不能在表损坏后恢复数据。
-- 创建utf8mb4字符集的数据库test
create database test default character set utf8mb4;
-- 修改表score的字符集为utf8
alter table score default character set utf8;
常用命令
连接数据库命令
mysql -uroot -proot
重启MySQL
service mysqld restart
导入SQL文件
mysql>source d:/student.sql
查看MySQL当前默认的存储引擎
mysql> show variables like '%storage_engine%';
创建数据库
DROP DATABASE IF EXISTS student;
CREATE DATABASE student DEFAULT CHARACTER SET utf8;
创建表
参考后面的【测试用数据库表及SQL】
查看数据库
show databases;
查看表的创建信息
show create table user;
修改表的存储引擎
ALTER TABLE user ENGINE=INNODB;
如果要更改整个数据库表的存储引擎,一般要一个表一个表的修改,比较繁琐,可以采用先把数据库导出,得到SQL,把MyISAM全部替换为INNODB,再导入数据库的方式。 转换完毕后重启mysql。
查询
插入记录
删除记录
修改记录
测试用数据库表及SQL
student.sql:
DROP DATABASE IF EXISTS student;
CREATE DATABASE student DEFAULT CHARACTER SET utf8;
use student;
CREATE TABLE student(
id int(11) NOT NULL AUTO_INCREMENT,
student_id int(11) NOT NULL UNIQUE,
name varchar(255) NOT NULL,
age int(11) NOT NULL,
sex varchar(255) NOT NULL,
birthday date DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
insert into student(student_id, name, age, sex, birthday) value(2018001, "Alice", 28, "女", "1990-10-18");
insert into student(student_id, name, age, sex, birthday) value(2018002, "Bob", 27, "男", "1991-10-18");
insert into student(student_id, name, age, sex, birthday) value(2018003, "David", 26, "男", "1992-10-18");
insert into student(student_id, name, age, sex, birthday) value(2018004, "Jim", 38, "男", "1980-10-18");
insert into student(student_id, name, age, sex, birthday) value(2018005, "Mark", 18, "男", "2000-10-18");
springboot中使用MySQL
添加依赖
在springboot中如果要使用MySQL,需要添加依赖:
<!-- mysql -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.21</version>
</dependency>
配置数据源
然后需要配置数据源,在application.yml中添加配置:
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/student?characterEncoding=UTF-8
password: "root"
username: "root"
测试数据源
测试数据源是否正确,可以在单元测试中添加测试:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = MyspringbootApplication.class)
public class TestDataSource {
@Autowired
private ApplicationContext applicationContext;
@Test
public void test(){
DataSource dataSource = applicationContext.getBean(DataSource.class);
System.out.println(dataSource);
}
}
可能的问题
一般数据源连接出问题大多是application.yml配置有误,需要仔细检查下,例如我就遇到过这样的错误:
Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.
原因是spring.datasource.url配置的数据库不对,要改为自己创建的数据库名;或者是数据库不存在,需要手动创建一下。