spring boot 连接Mysql介绍
Spring Boot 集成教程
- Spring Boot 介绍
- Spring Boot 开发环境搭建(Eclipse)
- Spring Boot Hello World (restful接口)例子
- spring boot 连接Mysql
- spring boot配置druid连接池连接mysql
- spring boot集成mybatis(1)
- spring boot集成mybatis(2) – 使用pagehelper实现分页
- spring boot集成mybatis(3) – mybatis generator 配置
- spring boot 接口返回值封装
- spring boot输入数据校验(validation)
- spring boot rest 接口集成 spring security(1) – 最简配置
- spring boot rest 接口集成 spring security(2) – JWT配置
- spring boot 异常(exception)处理
- spring boot 环境配置(profile)切换
- spring boot redis 缓存(cache)集成
概述
java应用的数据库接口的层次图如下
JDBC
Java应用通过JDBC接口访问数据库,JDBC(Java DataBase Connectivity/Java数据库连接)为各种数据库,如mysql、oracle等,提供一个统一的接口,应用程序通过JDBC执行各种SQL操作,如select、insert等等。在本文中,我们会通过JDBC访问数据库,验证数据库是否正常连接。
JPA
JPA(Java Persistence API/Java持久层接口),是ORM(Object Relational Mapping/对象关系映射)的一个标准,ORM的作用是在数据库表与Java对象之间建立映射,理论上来说有ORM就无需直接通过SQL操作数据库了,通过Java对象即可,这样会方便很多,Hibernate是实现JPA标准的一个有名例子。JPA建立在JDBC之上,也是通过JDBC访问数据库。
Mybatis
ORM有一些缺点,如过于笨重,比如在多表联合查询时相当繁琐,但直接使用原始的JDBC操作数据库过于低效,mybatis是现在互联网项目使用比较多的一个Java持久层库。虽然mybatis经常被和Hibernate比较,但mybatis不是JPA的一个实现,mybatis可以理解为加强版的SQL,实现了诸如动态SQL、结果集映射等,高效又不失灵活,个人倾向使用mybatis。同样的,mybatis建立在JDBC之上,通过JDBC访问数据库。后面的教程将对mybatis做详细介绍。
准备数据
在这之前,确保已经正确安装Mysql,推荐目前主流版本5.7,同时安装官方图形客户端workbench。
sql语句
可以在mysql命令行客户端直接执行sql语句,创建数据库和插入数据
创建数据库
CREATE DATABASE qikegu_demo CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
创建表的sql语句:
CREATE TABLE `qikegu_demo`.`user` (
`id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
`nickname` VARCHAR(50) NULL COMMENT '昵称',
`mobile` VARCHAR(20) NULL COMMENT '手机号',
`password` CHAR(60) NULL COMMENT '密码hash值',
`role` VARCHAR(100) NULL DEFAULT 'user' COMMENT '角色,角色名以逗号分隔',
PRIMARY KEY (`id`),
UNIQUE INDEX `mobile_UNIQUE` (`mobile` ASC))
COMMENT = '用户表';
插入数据的sql语句:
INSERT INTO `qikegu_demo`.`user` (`nickname`, `mobile`, `password`) VALUES ('abc1', '13512345678', '123');
INSERT INTO `qikegu_demo`.`user` (`nickname`, `mobile`, `password`) VALUES ('abc2', '13512345677', '123');
使用workbench创建数据库和插入数据
打开workbench,连接进入mysql服务器:
创建数据库,在工具栏上点击创建数据库按钮
输入数据库名:qikegu_demo,选择字符排序规则,推荐utf8mb4_unicode_ci
或utf8_general_ci
,点击apply下面的apply按钮创建。
创建成功后,左侧出现qikegu_demo数据库
接下来创建数据表,展开qikegu_demo数据库,右键点击Tables,弹出菜单,选择:Create Tables...
,设置数据表名称和属性,添加字段,注意红圈圈出的地方不要输错,点击apply创建数据表
添加数据,左侧展开qikegu_demo -> Tables
,鼠标点击user表的编辑按钮
插入用户数据,输入nickname, mobile, password,不要输入id,id由数据库产生,点击apply插入数据
创建spring boot项目
打开Eclipse,创建spring boot的spring starter project项目,在设置依赖配置时,勾选web, jdbc, mysql,如不清楚怎样创建spring boot项目,参照教程: spring boot hello world (restful接口)例子
创建成功后,项目目录如下:
pom.xml由spring boot自动生成,注意已经包含了web, jdbc, mysql的依赖配置
<?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>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.1.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.qikegu</groupId>
<artifactId>mysql-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>mysql-demo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
配置数据源
打开文件:application.properties,该文件在 src -> main -> resources
目录,配置数据库连接:
# 服务器端口,如果不配置默认是8080端口
server.port=8096
# 数据库设置
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/qikegu_demo?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=你的数据库密码
解释一下spring.datasource.url的配置, 主要下面几个部分:
- localhost - 主机地址
- 3306 - 数据库端口
- qikegu_demo - 数据库名称
问号之后是一些其他的参数设置,如编码、时区设置这些...
spring boot现在的默认连接池是Hikari,是号称性能最好的连接池,如后续要调优连接池参数,可参考官网文档,现在都使用默认值即可。
访问数据库
添加代码验证数据库是否正常连接,添加文件:HelloController.java
HelloController.java的代码
package com.qikegu.demo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@Autowired
JdbcTemplate jdbcTemplate;
@RequestMapping(value="/hello", method=RequestMethod.GET)
public String index() {
String sql = "SELECT mobile FROM user WHERE id = ?";
// 通过jdbcTemplate查询数据库
String mobile = (String)jdbcTemplate.queryForObject(
sql, new Object[] { 1 }, String.class);
return "Hello " + mobile;
}
}
我们使用spring的JdbcTemplate(这正是我们在前面引入spring jdbc依赖的原因),比使用原始的jdbc接口方便。
运行
运行程序(如何运行参照: spring boot hello world (restful接口)例子),使用浏览器访问,输出从数据库中读取的用户手机号
总结
本文介绍了spring boot连接mysql的过程,使用JdbcTemplate访问数据库,验证数据库连接成功。
spring boot 连接Mysql介绍的更多相关文章
- Spring Boot 连接MySql数据库
Spring Boot 以后也许会成为入门Spring的首选! 记一下Spring Boot 成功连接Mysql数据库的方法步骤! 一.新建Maven工程,不全Maven所需文件夹,在pom.xml引 ...
- Spring Boot连接MySQL数据库
上篇 只需两步!Eclipse+Maven快速构建第一个Spring Boot项目 已经构建了一个Spring Boot项目,本文在此基础上进行连接MySQL数据库的操作. 1. pom.xml添加依 ...
- spring boot 连接mysql 错误The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one
1.spring boot 整合mybatis 连接mysql时错误 The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or repr ...
- Spring Boot连接MySQL长时间不连接后报错`com.mysql.cj.core.exceptions.ConnectionIsClosedException: No operations allowed after connection closed.`的解决办法
报错:com.mysql.cj.core.exceptions.ConnectionIsClosedException: No operations allowed after connection ...
- Spring Boot连接Mysql数据库问题解决
在spring Boot项目中使用mysql数据库进行数据库的增删查改,出现以下错误: Error starting ApplicationContext. To display the auto-c ...
- Spring Boot连接MySQL报错“Internal Server Error”的解决办法
报错信息如下: {timestamp: "2018-06-14T03:48:23.436+0000", status: 500, error: "Internal Ser ...
- spring boot 连接mysql mongodb with jpa
https://github.com/bigben0123/gs-accessing-data-mysql-mongo-jpa
- Spring Boot 2.0(五):Docker Compose + Spring Boot + Nginx + Mysql 实践
我知道大家这段时间看了我写关于 docker 相关的几篇文章,不疼不痒的,仍然没有感受 docker 的便利,是的,我也是这样认为的,I know your felling . 前期了解概念什么的确实 ...
- (转)Spring Boot 2 (五):Docker Compose + Spring Boot + Nginx + Mysql 实践
http://www.ityouknow.com/springboot/2018/03/28/dockercompose-springboot-mysql-nginx.html 我知道大家这段时间看了 ...
随机推荐
- Python作业篇 day02
作业 知识点回顾: 1.变量名的规范 2.简述 ascii unicode utf-8 的关系 3.简述 位与字节的关系 4.‘我是帅哥’ 在utf-8编码用几个字节 ,在gbk用几个字节 逻辑运 ...
- javaScript中this的指向?
javaScript中this对象是在运行时基于函数的执行环境绑定的,在全局函数中,this等于window,而当函数被作为某个对象的方法调用时,this等于那个对象. 但在实际中,代码环境复杂,th ...
- Python学习第四课——基本数据类型一之int and str
1.数字(int) - int() 方法 # 定义 a1=123 a2=456 #功能1:将字符串转换为数字 #例子1: a = " print(type(a)) # type()为查看类型 ...
- Java-Study
java中static用法: static :静态的,用于修饰成员(成员变量,成员方法): 1. 被static所修饰的变量或者方法会储存在数据共享区: 2. 被static所修饰的成员变量只有一份: ...
- tcpdump 获取SQL
tcpdump [-aAdDefhIJKlLnNOpqRStuUvxX] [ -B size ] [ -c count ] [ -C file_size ] [ -E algo:secret ] [ ...
- php 实现店铺装修7
type_id=0的情况 type_id=1的情况 type_id=2的情况 /** * @title 店铺装修--商品分类 * @param type ...
- 易升地址,windows 10, 1511 升级 1607 仍然有效
https://www.microsoft.com/zh-cn/software-download/windows10 易升地址, windows 10 ,1511 升级 1607 仍然有效
- 网站Webshell大马密码极速暴力爆破工具-cheetah
Cheetah是一个基于字典的暴力密码webshell工具,运行速度与猎豹猎物一样快. Cheetah的工作原理是能根据自动探测出的web服务设置相关参数一次性提交大量的探测密码进行爆破,爆破效率 ...
- P1080 MOOC期终成绩
1080 MOOC期终成绩 (25分) 对于在中国大学MOOC(http://www.icourse163.org/ )学习“数据结构”课程的学生,想要获得一张合格证书,必须首先获得不少于200分 ...
- springboot2.1以javabean整合rabbitmq及自动注入rabbitmqTemplate为空问题
springboot集成rabbitmq之前也写过,这次再来个总结,总体来讲比较简单 主要就是配置属性文件,将属性以javabean的形式注入,配置工厂,对象等原来以xml<bean>形式 ...