介绍

本文将介绍如何在Spring项目中连接、处理MySQL数据库。

该项目使用Spring Data JPA和Hibernate来连接、处理MySQL数据库,当然,这仅仅是其中一种方式,你也可以使用Spring JDBC或者MyBatis.

Spring Data JPA是Spring Data的一个子项目,主要用于简化数据访问层的实现,使用Spring Data JPA可以轻松实现增删改查、分页、排序等。Spring Data拥有很多子项目,除了Spring Data JPA外,还有如下子项目:

Spring Data Commons

Spring Data MongoDB

Spring Data Redis

Spring Data Solr

Spring Data Gemfire

Spring Data REST

Spring Data Neo4j

Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的ORM框架,Hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。

本文将介绍如何使用Spring Data JPA和Hibernate来连接、处理MySQL数据库。

准备

首先我们需要对MySQL做一些准备处理。我们将要在MySQL中创建db_example数据库,并创建springuser用户,拥有对db_example数据库的所有操作权限。打开MySQL , 输入以下命令:

mysql> create database db_example; -- 创建新数据库db_example

mysql> create user 'springuser'@'localhost' identified by 'pwd123'; -- 创建新用户springuser,密码为pwd123

mysql> grant all on db_example.* to 'springuser'@'localhost'; -- 给予springuser用户对db_example数据库的所有操作权限

Spring Boot程序

Step1. 创建项目spring_mysql, 以及项目布局:

mkdir spring_mysql

cd ./spring_mysql

touch build.gradle

mkdir -p src/main/java

mkdir -p src/main/resources

mkdir -p src/test/java

mkdir -p src/test/resources

Step2 编写build.gradle

build.gradle代码如下:

buildscript {

repositories {

mavenCentral()

}

dependencies {

classpath("org.springframework.boot:spring-boot-gradle-plugin:2.0.0.RELEASE")

}

}

apply plugin: 'java'

apply plugin: 'eclipse'

apply plugin: 'idea'

apply plugin: 'org.springframework.boot'

apply plugin: 'io.spring.dependency-management'

bootJar {

baseName = 'gs-accessing-data-mysql'

version = '0.1.0'

}

repositories {

mavenCentral()

}

sourceCompatibility = 1.8

targetCompatibility = 1.8

dependencies {

compile("org.springframework.boot:spring-boot-starter-web")

// JPA Data (We are going to use Repositories, Entities, Hibernate, etc...)

compile 'org.springframework.boot:spring-boot-starter-data-jpa'

// Use MySQL Connector-J

compile 'mysql:mysql-connector-java'

testCompile('org.springframework.boot:spring-boot-starter-test')

}

在上述Spring Boot项目中,主要使用spring-boot-starter-web ,spring-boot-starter-data-jpa和mysql:mysql-connector-java来实现在Web端操作MySQL .

Step3 配置属性文件

新建src/main/resources/application.properties文件,配置相关属性,代码如下:

spring.jpa.hibernate.ddl-auto=create

spring.datasource.url=jdbc:mysql://localhost:3306/db_example

spring.datasource.username=springuser

spring.datasource.password=pwd123

在上述代码中,主要的数据库操作为新建(create),因为数据库中实现不存在相应的表格。使用MySQL的localhost服务器的3306端口的db_example数据库,并设置用户名和密码。

Step4 编写Java文件

创建src/main/java/hello文件夹(package),在该文件夹下新建User.java,Hibernate会将该entity类自动转化成数据库中的表格。User.java的完整代码如下:

package hello;

import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import javax.persistence.GenerationType;

import javax.persistence.Id;

@Entity // This tells Hibernate to make a table out of this class

public class User {

@Id

@GeneratedValue(strategy=GenerationType.AUTO)

private Integer id;

private String name;

private String email;

public Integer getId() {

return id;

}

public void setId(Integer id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getEmail() {

return email;

}

public void setEmail(String email) {

this.email = email;

}

}

在上述文件夹中新建UserRepository.java,其代码如下:

package hello;

import org.springframework.data.repository.CrudRepository;

import hello.User;

// This will be AUTO IMPLEMENTED by Spring into a Bean called userRepository

// CRUD refers Create, Read, Update, Delete

public interface UserRepository extends CrudRepository {

}

这是repository接口, 它将会被Spring中的bean中自动执行。

在上述文件夹中新建MainController.java,代码如下:

package hello;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.GetMapping;

import org.springframework.web.bind.annotation.RequestParam;

import org.springframework.web.bind.annotation.ResponseBody;

import hello.User;

import hello.UserRepository;

@Controller // This means that this class is a Controller

@RequestMapping(path="/demo") // This means URL's start with /demo (after Application path)

public class MainController {

@Autowired // This means to get the bean called userRepository

// Which is auto-generated by Spring, we will use it to handle the data

private UserRepository userRepository;

@GetMapping(path="/add") // Map ONLY GET Requests

public @ResponseBody String addNewUser (@RequestParam String name

, @RequestParam String email) {

// @ResponseBody means the returned String is the response, not a view name

// @RequestParam means it is a parameter from the GET or POST request

User n = new User();

n.setName(name);

n.setEmail(email);

userRepository.save(n);

return "Saved";

}

@GetMapping(path="/all")

public @ResponseBody Iterable getAllUsers() {

// This returns a JSON or XML with the users

return userRepository.findAll();

}

}

这是Spring应用的新控制器(Controller)。

在上述文件夹中新建Application.java,代码如下:

package hello;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication

public class Application {

public static void main(String[] args) {

SpringApplication.run(Application.class, args);

}

}

这是该Spring Boot项目的主要程序入口。

Step5 创建可执行jar包

cd spring_mysql

gradle build

执行完毕后,会在build/libs文件夹下生成gs-accessing-data-mysql-0.1.0.jar .

运行及测试

使用以下命令启动该Spring Boot项目

java -jar build/libs/gs-accessing-data-mysql-0.1.0.jar

在浏览器端测试,输入以下网址:

localhost:8080/demo/add?name=Alex&email=alex@baidu.com

localhost:8080/demo/add?name=Jclian&email=github@sina.com

localhost:8080/demo/add?name=Bob&email=bob@google.com

localhost:8080/demo/add?name=Cook&email=cook@apple.com

localhost:8080/demo/add?name=Mark&email=mark@west.com

上述程序将会name和email参数的值解析成数据库中user表中的记录并储存,浏览器界面如下图:

在浏览器中输入网址localhost:8080/demo/all,即可刚看我们我们插入到MySQL中的记录(JSON格式):

最后我们去MySQL中查看数据是否插入成功,结果如下图所示:

结束语

本文将介绍如何使用Spring Data JPA和Hibernate来连接、处理MySQL数据库。

本次分享到此结束,接下来还会继续更新Spring Boot方面的内容,欢迎大家交流~~

springbooot mysql_Spring Boot入门(2)使用MySQL数据库相关推荐

  1. jpa mysql_Spring boot通过JPA访问MySQL数据库

    本文展示如何通过JPA访问MySQL数据库. JPA全称Java Persistence API,即Java持久化API,它为Java开发人员提供了一种对象/关系映射工具来管理Java应用中的关系数据 ...

  2. Golang 入门系列(十) mysql数据库的使用

    之前,已经讲过一些Golang的基础的东西,感兴趣的可以看看以前的文章,https://www.cnblogs.com/zhangweizhong/category/1275863.html, 今天简 ...

  3. python接口自动化测试书籍_skPython接口自动化测试 自动化测试教程书籍 用Python实现UI自动化测试 轻松入门Python语法 MySQL数据库 Python基础教程书籍...

    1 本书整体设计思想 . 1 1.1 为什么要做懂技术的测试人员 . 2 1.2 为什么选择这本书. 4 1.3 为什么选择Python 5 1.4 本书能给你带来什么 . 6 1.5 自动化代码的设 ...

  4. mysql数据应用从入门_《MySQL数据库应用从入门到精通》

    第1章 数据库概述 1.1基本概念 1.1.1数据库技术发展阶段 人工管理阶段-->文件系统阶段-->数据库系统阶段 1.1.2涉及的概念 数据库(DB).数据库管理系统(DBMS).数据 ...

  5. 1. 请简述mysql数据库的锁机制_【MySQL入门】之MySQL数据库的锁机制(二)

    上篇文章主要聊了全局锁和表锁,并详细分析MDL锁的作用以及可能带来的问题.今天我们主要来聊一聊Innodb存储引擎的行锁.MySQL的行锁是在引擎层由引擎自己实现的,并不是所有的引擎都支持行锁,MyI ...

  6. boot连接不上mysql数据库_【springboot连接 MYSQL数据库出问题_springboot】 | IT修真院·坑乎...

    Spring: datebase: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://localhost:3306/spring-c ...

  7. linux同步两台mysql数据,Mysql入门MySQL 数据库两台主机同步实战(linux)

    <Mysql入门MySQL 数据库两台主机同步实战(linux)>要点: 本文介绍了Mysql入门MySQL 数据库两台主机同步实战(linux),希望对您有用.如果有疑问,可以联系我们. ...

  8. 使用php从网络访问mysql数据库,使用PHP从web访问mysql数据库

    一. web数据库构架的工作原理 1. 用户由浏览器发出HTTP请求,请求特定的web页面. 2. web服务器接受接收到对特定页面的请求,检索相应文件,并将其传递给php引擎处理. 3. php引擎 ...

  9. 使用python连接mysql数据库

    系列文章目录 第一章 Python 机器学习入门之连接mysql数据库 文章目录 系列文章目录 前言 一.使用步骤 1.安装 2.上代码 总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随 ...

最新文章

  1. C++对象赋值的四种方式
  2. zabbix监控windows主机
  3. Win7硬盘安装方法
  4. Android项目中Bluetooth类如何写
  5. [linux命令技巧] mkdir -p
  6. Sql Server函数全解二数学函数
  7. 输出质数(java)
  8. snipaste安装和使用_snipaste替代品 amp; linux截图解决方案-截图、贴图工具Flameshot...
  9. 带有书签的Android WebView
  10. ft2232驱动安装方法_win7系统无法安装打印机驱动程序的解决方法
  11. Linux系统(三)vi、vim编辑器和shell编程
  12. Android Studio 红米3 一直运行或者debug不成功,提示 Failed to establish session 解决方案
  13. Visio有用的画图技巧
  14. 【报告分享】休闲游戏商业化发行指南-穿山甲(附下载)
  15. 【我的OpenGL学习进阶之旅】学习OpenGL ES 3.0 的实战 Awsome Demo (中)
  16. android系统性能优化工具,十条Android系统优化技巧, 让手机更流畅
  17. 我收藏的一些RSS订阅频道
  18. 计算机主机地址填什么,什么是IP地址 何设置IP地址
  19. 工单系统(源代码)PHP语言开发 开发者版
  20. flex 随机数产生方法

热门文章

  1. Unix 和 Linux
  2. c语言中的常用函数的使用,C语言的常用库函数使用方法分析及用途
  3. tensorflow 张量维度变化
  4. flask uwsgi nginx 部署在 ubuntu 上
  5. ubuntu18.04上安装ffmpeg
  6. javascript 死循环
  7. 【建站系列教程】3、建站基本技术介绍
  8. openGL 入门 2--顶点数组对象 VAO 和 缓存对象 VBO
  9. 《你要么出众,要么出局》读书笔记
  10. 查询出某个表依赖于某个表的外键,进行遍历删除操作