朱皮特的博客 自由的飞翔

springboot极简教程010-数据库准备

2018-10-28
朱皮特
阅读量:

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配置的数据库不对,要改为自己创建的数据库名;或者是数据库不存在,需要手动创建一下。


Comments

Content