title: Java之SpringBoot连接数据库
tags:
- Java
- SpringBoot
- Mysql
categories: 计算机编程
abbrlink: 581298918
date: 2023-3-10
top_img: https://asucanyh-cn.github.io/img/post/springboot.png
cover: https://asucanyh-cn.github.io/img/post/springboot.png
description: 自用的学习笔记。
Hibernate
SpringBoot
添加依赖
jpa用于连接增删改数据库的
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
mysql连接驱动
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<scope>runtime</scope>
</dependency>
<!-- 我使用下面这个驱动会报错 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
配置数据库
修改application.properties或同目录新建application.yml
spring:
datasource:
url: jdbc:mysql://192.168.31.5:3306/managerSys
username: root
password: root
driver-class-name: com.mysql.jc.jdbc.Driver
!!! note driver-class-name com.mysql.jdbc.Driver和com.mysql.jc.jdbc.Drive的区别
建议添加的配置
hibernate是一种对象关系映射框架,hibernate可以实现自动建表。
jpa:
show-sql: true
hibernate:
ddl-auto: create
!!! note hibernate的5个模式 见下文。
hibernate的5个模式
DDL(Data Definition Language),即数据定义语言,例如建数据库、建表等,都属于数据定义语言。
create模式
每次运行项目,没有表会新建表,如果表内有数据会被清空
create-drop模式
每次运行项目,没有表会新建表,并且每次程序结束后,删除表。
update模式
没有表格会新建,不会删除数据,只会对表进行更新操作。
validate模式
校验模式,校验字段数据类型是否相同,不同则报错。
none模式
关闭ddl,什么都不做,每次启动项目,不会对数据库进行任何验证和操作。
演示Hibernate自动建表
新建Entity
User.java
定义成员变量
@id,设置变量对应为主键
@GeneratedValue,设置变量为自增
一键生成getter、setter方法,以及一个无参的构造方法
packagecom.mysqlapi;
importjakarta.persistence.Entity;
importjakarta.persistence.GeneratedValue;
importjakarta.persistence.Id;
@Entity
publicclassUser {
@Id
@GeneratedValue
privateIntegerid;
privateStringuserName;
privateStringpassword;
publicUser() { //构造函数
}
publicIntegergetId() {
returnid;
}
publicvoidsetId(Integerid) {
this.id=id;
}
publicStringgetUserName() {
returnuserName;
}
publicvoidsetUserName(StringuserName) {
this.userName=userName;
}
publicStringgetPassword() {
returnpassword;
}
publicvoidsetPassword(Stringpassword) {
this.password=password;
}
}
新建Controller
StudentController.java
暂时啥也不写
packagecom.mysqlapi;
importorg.springframework.web.bind.annotation.RestController;
@RestController
publicclassStudentController {
}
运行项目
run as spring boot app
日志中可以观察到,show-sql: true正常工作。
...
Hibernate: drop table if exists user
Hibernate: drop table if exists user_seq
Hibernate: create table user (id integer not null, password varchar(255), role varchar(255), user_name varchar(255), primary key (id)) engine=InnoDB
Hibernate: create table user_seq (next_val bigint) engine=InnoDB
Hibernate: insert into user_seq values ( 1 )
...
查看数据库,可以发现已经成功创建!
!!! caution ddl-auto使用注意 一般情况下,ddl-auto使用update模式最安全。