在本文中,我将向您展示如何将MySQL数据库与Spring Boot应用程序连接。
本文使用的工具包括:
- Spring Boot 1.5.6版本
- MySQL 5.7.X
- 马文
- Java 8
- Spring Data JPA
1 –项目结构
项目结构是典型的Maven结构。
2 –项目依赖性
请注意,父母需要申报。 如果您使用的是Spring Tool Suite,则可以单击新的“ Spring Starter Project”,它将为您填充。
pom.xml
4.0.0
com.michaelcgood
mysql-jdbc
0.0.1-SNAPSHOT
jar
mysql-jdbc-driver
mysql jdbc driver example
org.springframework.boot
spring-boot-starter-parent
1.5.6.RELEASE
UTF-8
UTF-8
1.8
org.springframework.boot
spring-boot-starter
org.springframework.boot
spring-boot-starter-test
test
mysql
mysql-connector-java
org.springframework.boot
spring-boot-starter-data-jpa
org.springframework.boot
spring-boot-maven-plugin
3 –模型
对于此示例应用程序,我们的应用程序将“跟踪”网络中系统的最新安全审核。 由于此示例应用程序旨在简化,因此模型的字段将最少。
请注意,Java库中有一个内置的System类。 因此,我将避免使用System.java作为实际应用程序的类名。
System.java
package com.michaelcgood.model;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
public class System {
private String name;
private Date lastaudit;
public Date getLastaudit() {
return lastaudit;
}
public void setLastaudit(Date lastaudit) {
this.lastaudit = lastaudit;
}
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name="id")
private long id;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String toString(){
return id+" | " + name+ " | "+ lastaudit;
}
}
4 –储存库
这是一个简单的CrudRepository,它是允许我们执行CRUD(创建,读取,更新,删除)操作的接口。
SystemRepository.java
package com.michaelcgood.dao;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
import com.michaelcgood.model.System;
@Repository
public interface SystemRepository extends CrudRepository {
}
5 –数据库初始化
Spring Boot默认情况下启用dataSource初始化程序,并从类路径的根目录加载SQL脚本(schema.sql和data.sql)。
5.1
在这里,我们创建应用程序将用于表架构的SQL文件。
模式.sql
DROP TABLE IF EXISTS system;
CREATE TABLE system (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
lastaudit DATE NOT NULL,
PRIMARY KEY (id));
5.2
我们将示例值插入数据库。
资料库
INSERT INTO system(name,lastaudit)VALUES('Windows Server 2012 R2 ','2017-08-11');
INSERT INTO system(name,lastaudit)VALUES('RHEL 7','2017-07-21');
INSERT INTO system(name,lastaudit)VALUES('Solaris 11','2017-08-13');
5.3
此XML文件用于配置我们的日志记录。
logback.xml
%d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg%n
6 –配置
我们配置数据源和JPA设置。
application.properties
#==== connect to mysql ======#
spring.jpa.hibernate.ddl-auto=update
spring.datasource.url=jdbc:mysql://localhost:3306/mysqltutorial?useSSL=false
spring.datasource.username=root
spring.datasource.password=
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
7 – @SpringBootApplication
实现CommandLineRunner是为了执行此示例的命令行参数。
package com.michaelcgood.app;
import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.domain.EntityScan;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import com.michaelcgood.dao.SystemRepository;
@SpringBootApplication
@EnableJpaRepositories("com.michaelcgood.dao")
@EntityScan("com.michaelcgood.model")
public class MysqlJdbcDriverApplication implements CommandLineRunner {
@Autowired
DataSource dataSource;
@Autowired
SystemRepository systemRepository;
public static void main(String[] args) {
SpringApplication.run(MysqlJdbcDriverApplication.class, args);
}
@Override
public void run(String... args) throws Exception {
System.out.println("Our DataSource is = " + dataSource);
Iterable systemlist = systemRepository.findAll();
for(com.michaelcgood.model.System systemmodel:systemlist){
System.out.println("Here is a system: " + systemmodel.toString());
}
}
}
8 –演示
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
[32m :: Spring Boot :: [39m [2m (v1.5.6.RELEASE)[0;39m
Our DataSource is = org.apache.tomcat.jdbc.pool.DataSource@40f70521{ConnectionPool[defaultAutoCommit=null; defaultReadOnly=null; defaultTransactionIsolation=-1; defaultCatalog=null; driverClassName=com.mysql.jdbc.Driver; maxActive=100; maxIdle=100; minIdle=10; initialSize=10; maxWait=30000; testOnBorrow=true; testOnReturn=false; timeBetweenEvictionRunsMillis=5000; numTestsPerEvictionRun=0; minEvictableIdleTimeMillis=60000; testWhileIdle=false; testOnConnect=false; password=********; url=jdbc:mysql://localhost:3306/mysqltutorial?useSSL=false; username=root; validationQuery=SELECT 1; validationQueryTimeout=-1; validatorClassName=null; validationInterval=3000; accessToUnderlyingConnectionAllowed=true; removeAbandoned=false; removeAbandonedTimeout=60; logAbandoned=false; connectionProperties=null; initSQL=null; jdbcInterceptors=null; jmxEnabled=true; fairQueue=true; useEquals=true; abandonWhenPercentageFull=0; maxAge=0; useLock=false; dataSource=null; dataSourceJNDI=null; suspectTimeout=0; alternateUsernameAllowed=false; commitOnReturn=false; rollbackOnReturn=false; useDisposableConnectionFacade=true; logValidationErrors=false; propagateInterruptState=false; ignoreExceptionOnPreLoad=false; useStatementFacade=true; }
Here is a system: 1 | Windows Server 2012 R2 | 2017-08-11 00:00:00.0
Here is a system: 2 | RHEL 7 | 2017-07-21 00:00:00.0
Here is a system: 3 | Solaris 11 | 2017-08-13 00:00:00.0
完整的代码在 Github上
翻译自: https://www.javacodegeeks.com/2017/10/using-mysql-jdbc-driver-spring-boot.html