通过Spring Boot使用MySQL JDBC驱动程序

在本文中,我将向您展示如何将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

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.michaelcgood</groupId><artifactId>mysql-jdbc</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>mysql-jdbc-driver</name><description>mysql jdbc driver example</description><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.6.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

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<System,Long> {}

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

<?xml version="1.0" encoding="UTF-8"?>
<configuration><statusListener class="ch.qos.logback.core.status.NopStatusListener" /><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><layout class="ch.qos.logback.classic.PatternLayout"><Pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg%n</Pattern></layout></appender><logger name="org.springframework.jdbc" level="error" additivity="false"><appender-ref ref="STDOUT"/></logger><logger name="com.michaelcgood" level="error" additivity="false"><appender-ref ref="STDOUT"/></logger><root level="error"><appender-ref ref="STDOUT"/></root></configuration>

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 {@AutowiredDataSource dataSource;@AutowiredSystemRepository systemRepository;public static void main(String[] args) {SpringApplication.run(MysqlJdbcDriverApplication.class, args);}@Overridepublic void run(String... args) throws Exception {System.out.println("Our DataSource is = " + dataSource);Iterable<com.michaelcgood.model.System> 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;39mOur 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/349791.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何开启O2优化

O2环境会使你的程序跑的特别快,然而大多数正式考试都不能开O2 然而平时做有些题强制开O2,会出现在本机运行正确,但是交上去RE的情况,这时你就要开O2了. 例如在本机运行时会有下标为-但可以运行,而O2你就会RE 那么如何开呢 类似这样 #include<bits/stdc.h> using namespac…

数颜色

此数颜色非彼数颜色, 彼者带修莫队,主席树,树套树,分块,权值线段树皆可A之 而此者带修莫队,树套树,分块皆不可A之 此者异常之简单也,而数据异常之傻逼也,卡我分块者也,卡我权值线段树者也 从11.00即开始卡常,然而不让我过 对于分块 使用register inline fread 展开 不写函数 二…

jax-ws cxf_走向REST:将Tomcat嵌入Spring和JAX-RS(Apache CXF)

jax-ws cxf这篇文章是上一篇文章的逻辑延续。 唯一的区别是我们将使用的容器&#xff1a;它将是我们的老兄Apache Tomcat而不是Jetty 。 令人惊讶的是&#xff0c;嵌入最新的Apache Tomcat 7非常容易&#xff0c;因此现在让我展示一下。 我不会重复完整的上一篇文章 &#xff0…

深入理解C指针第一章小结1

1.1 指针和内存&#xff0c;C程序在编译后&#xff0c;会以三种形式使用内存。 (1) 静态/全局内存&#xff1a;在程序开始时分配&#xff0c;程序结束才消失&#xff0c;所有函数都能访问全局变量&#xff0c;static静态变量的作用域局限在定义它们的函数内部 (2)自动内存&…

WSO2注册表安装简介

这篇文章基于有关注册表安装及其工作方式等常见问题。以下是人们提出的主要问题&#xff1a; 1&#xff09;。 安装如何工作&#xff1f; 2&#xff09;。 Config Registry和Governance Registry有什么区别&#xff1f; 3&#xff09;。 可以将H2以外的数据库用于本地注册表…

[Swift]LeetCode1147. 段式回文 | Longest Chunked Palindrome Decomposition

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号&#xff1a;山青咏芝&#xff08;shanqingyongzhi&#xff09;➤博客园地址&#xff1a;山青咏芝&#xff08;https://www.cnblogs.com/strengthen/&#xff09;➤GitHub地址&a…

运用PyTorch动手搭建一个共享单车预测器

本文摘自 《深度学习原理与PyTorch实战》 我们将从预测某地的共享单车数量这个实际问题出发&#xff0c;带领读者走进神经网络的殿堂&#xff0c;运用PyTorch动手搭建一个共享单车预测器&#xff0c;在实战过程中掌握神经元、神经网络、激活函数、机器学习等基本概念&#xff0…

jax-rs jax-ws_通过JAX-WS Provider在Web服务中利用MOXy

jax-rs jax-ws在以前的文章中&#xff0c;我演示了如何将EclipseLink JAXB&#xff08;MOXy&#xff09;直接集成到WebLogic&#xff08;从12.1.1开始&#xff09;和GlassFish&#xff08;从3.1.2开始&#xff09;的JAX-WS实现中 。 在本文中&#xff0c;我将演示如何通过使用J…

3个经常被忽略的APM关键功能

APM核心功能已不再足够。 市场领先的应用超越了以往&#xff0c;设置了其他人必须匹配的新标准。 每当任何针对消费者或企业的Web应用程序达到新的性能峰值时&#xff0c;都会为用户期望值设定基准。 这可能不公平或不合理&#xff0c;但这就是市场运作的方式。 当某人出于个…

NOIP模拟测试13「矩阵游戏·跳房子·优美序列」

矩阵游戏 考试时思路一度和正解一样&#xff0c;考试到最后还是打了80分思路&#xff0c;结果80分打炸了只得了40分暴力分 题解 算出来第一列的总值&#xff0c;每次通过加每两列之间的差值得出下一列的总值 算第一列我们只需要让当前点*行增倍的数量就行了 for(ll i1;i<n;i…

一次测试

$\leq$ $\in[x,y]$ 转载于:https://www.cnblogs.com/znsbc-13/p/11304153.html

java的xml面试题_Java程序员的10个XML面试问答

java的xml面试题XML面试问题在各种编程工作面试中非常受欢迎&#xff0c;包括针对Web开发人员的Java面试 。 XML是一项成熟的技术&#xff0c;通常用作从一个平台传输数据的标准。 XML面试问题包含来自各种XML技术&#xff08;例如XSLT&#xff09;的问题&#xff0c;该技术用于…

【chromium】 Chromium OS的oom机制

前一段时间&#xff0c;运行在Chromium OS上的一个相机应用经常会自己崩溃&#xff0c;进程戛然而止&#xff0c;测试过程中发现使用的内存以肉眼可见的内存增长&#xff0c;当增长到1G左右&#xff0c;应用窗口突然消失&#xff0c;虽然原因不明&#xff0c;但是能猜到个大概&…

了解java.nio.file.Path – 2

在本文的第1部分中&#xff0c;我们研究了java.nio.file.Path类中的大多数API。 在本文中&#xff0c;我们将介绍其余的API。 使用register&#xff08;&#xff09; 该API允许我们注册java.nio.file.WatchService接口的实现&#xff0c;该接口将侦听目录创建&#xff0c;修改…

欧几里德算法求最大公约数

在求两个数的最大公约数方法中&#xff0c; 辗转相除法是比较快的一种方法。 也就是著名的欧几里德方法。 View Code int Gcd(int a, int b){return b0?a:gcd(b, a%b); } View Code #include "iostream"#include "cstdio"#include "cstring"#…

__reduce__

一、__reduce__()介绍 当定义扩展类型时&#xff08;也就是使用Python的C语言API实现的类型&#xff09;&#xff0c;如果你想pickle它们&#xff0c;你必须告诉Python如何pickle它们。 __reduce__ 被定义之后&#xff0c;当对象被Pickle时就会被调用。它要么返回一个代表全局名…

camel.js_Camel 2.11 –具有URL重写功能的HTTP代理路由

camel.js在即将发布的Apache Camel 2.11版本中&#xff0c;我最近添加了对将自定义url重写实现插入基于HTTP的路由&#xff08;http&#xff0c;http4&#xff0c;jetty&#xff09;的支持。 当您使用骆驼代理/桥接HTTP路由时&#xff0c;这使人们可以控制url映射。 例如&…

问题 1044: [编程入门]三个字符串的排序

题目描述输入三个字符串&#xff0c;按由小到大的顺序输出输入3行字符串输出按照从小到大输出成3行样例输入cde afg abc样例输出abc afg cde分析&#xff1a;可以使用java自带方法compareTo()进行两两比较&#xff0c;首先输入三个字符串a,b,c用a和b比较&#xff0c;如果a的值比…

使用JUnit 5进行更清洁的参数化测试

参数化单元测试的总体思路是对不同的数据运行相同的测试方法。 在JUnit 4中创建参数化测试远非完美。 现有体系结构存在许多问题&#xff1a;将参数定义为类字段&#xff0c;并且需要使用构造函数来创建它们&#xff0c;不能将参数化和非参数化测试混合在一个测试类中&#xff…

问题 1045: [编程入门]自定义函数之整数处理

题目描述输入10个整数&#xff0c;将其中最小的数与第一个数对换&#xff0c;把最大的数与最后一个数对换。写三个函数&#xff1b; ①输入10个数&#xff1b;②进行处理&#xff1b;③输出10个数。输入10个整数输出整理后的十个数&#xff0c;每个数后跟一个空格&#xff08;注…