Spring Boot+MySQL+Spring Data JPA一个Web的Demo
2020.06.23 更新
1 概述
一个简单的web项目配合MySQL+Hibernate+Tomcat的简单示例demo,很容易在此基础上扩展成自己的项目.
2 创建工程
笔者IDE为IntelliJ IDEA,新建一个工程,选择Spring Initalizer:

下一步的话由于需要部署到服务器上面,选择了war.不需要的话可以选择jar.

选择Spring Web+Spring Data JPA+MySQL Driver.



然后完成即可,首次运行的话配置依赖需要一点时间,请耐心等待.
3 配置数据源
配置数据源分为两部分,一部分是建表与建用户,另一部分是在application.properties中配置的.
3.1 创建库与用户
create database test;
注意这里不用创建表了,因为Hibernate从实体类自动创建一个同名的表.
接着创建用户:
create user 'db'@'%' identified by 'xxxxx';
3.2 用户授权
grant all on test.* to 'db'@'%';
这里建议授权all,因为后面Hibernate会用到建表权限,不能仅仅授权增删查改.
3.3 配置application.properties
配置四个属性:
spring.jpa.hibernate.ddl-auto=
spring.datasource.url=
spring.datasource.username=
spring.datasource.password=
第一个属性是可以取值
- none:none是对MySQL的默认值,不会改变数据库结构.
- update:Hibernate会根据给出的实体类去改变数据库.
- create:创建数据库但是不会在关闭的时候删除.
- create-drop:创建数据库,当SessionFactory关闭时删除数据库.这个是H2与其他嵌入式数据库的默认选项.
第一次运行时必须设置为update或create,因为还不知道确切的实体类,第一次运行后,可以设置为update或none.
url的话对于MySQL来说是
jdbc:mysql://ip:3306/database
剩下的两个为用户名与密码.
以下是笔者的配置,供参考:

4 实体类
这里创建一个简单的User实体类,需要用到javax中的@Entity,@Id,@GeneratedValue与@GenerationType注解.
@Entity用于标识实体类,@Id用于标识主键,@GeneratedValue与@GenerationType用于配置主键.
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
private String name;
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;
}
}
除了主键之外,可以加上自己想要的属性与setter和getter,Hibernate会自动将实体类制作成一个数据表.
5 持久层
创建Repository保存用户记录.需要继承CrudRepository<T,ID>,第一个类型为实体类,第二个类型为主键类型.
public interface UserRepository extends CrudRepository<User,Integer> {}
6 控制层
控制层用于控制HTTP请求,在控制器中可以配置不同的路径实现不同的操作.
@Controller
@RequestMapping(path = "/demo")
public class MainController {
@Autowired
private UserRepository userRepository;
@PostMapping(path = "/add")
public @ResponseBody String addNewUser(@RequestParam String name)
{
User user = new User();
user.setName(name);
userRepository.save(user);
return "Saved.";
}
@GetMapping(path = "/all")
public @ResponseBody Iterable<User> getAllUsers()
{
return userRepository.findAll();
}
}
@RequestMapping中的值表示URL以此值开头@PostMapping是仅处理POST请求的路径@ResponseBody表示返回的类型@RequestParam表示一个从GET或POST中获取的参数getAllUsers()会返回一个JSON或者xml
7 IDE上测试
首先输入:
localhost:8080/demo/all
由于先前已经有一行数据所以有显示.

否则的话应该显示为[].
接下来可以添加数据:
curl localhost:8080/demo/add -d name=123
回应:

接下来可以选择再次查看:

再看看数据库:

8 打包发布
Build->Build Artifacts.


Build即可.
然后会在项目目录的target下有一个WAR文件,就是这个了.

改名字放到Tomcat的webapps下,比如笔者改成了demo.war:

接着可以去访问了,注意路径,这里的路径是WAR的路径加上@RequestMapping的路径再加上@PostMapping或@GetMapping路径:

9 完整代码
如果觉得文章好看,欢迎点赞。
同时欢迎关注微信公众号:氷泠之路。

Spring Boot+MySQL+Spring Data JPA一个Web的Demo的更多相关文章
- Spring Boot 使用IntelliJ IDEA创建一个web开发实例(一)
.新建项目File-->New-->Project-->Spring Initializr 点击Finish,一个Spring Boot web应用就创建好了.
- Spring Boot 使用IntelliJ IDEA创建一个web开发实例(五)
使用application.ym进行多环境配置 1.配置激活选项 spring: profiles: active: dev 2.在配置文件添加若干个英文状态下的短横线即可区分 spring: pro ...
- Spring Boot 使用IntelliJ IDEA创建一个web开发实例(四)
多环境配置 1. 在springBoot多环境配置文件名需要满足application-{profile}.properties的格式,其中{profile}对应你的环境标识,例如: (1)appli ...
- Spring Boot 使用IntelliJ IDEA创建一个web开发实例(二)
1. 创建一个Controller类 package com.example.demo; import org.springframework.web.bind.annotation.RequestM ...
- Spring Boot 使用IntelliJ IDEA创建一个web开发实例(三)
属性配置 1.配置application.properties文件 配置web访问端口和context path server.port = 8081 server.servlet.context-p ...
- Spring Boot使用Spring Data Jpa对MySQL数据库进行CRUD操作
只需两步!Eclipse+Maven快速构建第一个Spring Boot项目 构建了第一个Spring Boot项目. Spring Boot连接MySQL数据库 连接了MySQL数据库. 本文在之前 ...
- spring boot系列(五)spring boot 配置spring data jpa (查询方法)
接着上面spring boot系列(四)spring boot 配置spring data jpa 保存修改方法继续做查询的测试: 1 创建UserInfo实体类,代码和https://www.cnb ...
- Spring Boot 整合Spring Data JPA
Spring Boot整合Spring Data JPA 1)加入依赖 <dependency> <groupId>org.springframework.boot</g ...
- Spring Boot 之Spring data JPA简介
文章目录 添加依赖 添加entity bean 创建 Dao Spring Data Configuration 测试 Spring Boot 之Spring data JPA简介 JPA的全称是Ja ...
随机推荐
- Mybatis-05 注解开发
Mybatis-05 注解开发 注解开发 注解的核心是反射机制 面向接口编程的根本原因:解耦,可拓展,提高复用,分层开发中.上层不用管具体的实现,大家都遵守共同的标准,使得开发变得容易,规范性好. 1 ...
- [计算机图形学]视图变换:MVP变换、视口变换
目录 一.MVP变换 1. 模型变换 1.1 缩放矩阵 1.2 旋转矩阵 1.3 平移矩阵 2. 视角变换 3. 投影变换 二.Viewport变换 一.MVP变换 MVP变换是模型变换(M).视角变 ...
- window下象MAC一样工作的工具
前面是MAC 后面是windows对应工具,只是做一个列表说明,具体使用自行百度 1.item2 vs Cmder 命令行 2.Homebrew vs Chocolatey 包管理器 3.Spotli ...
- Reactive Spring实战 -- 理解Reactor的设计与实现
Reactor是Spring提供的非阻塞式响应式编程框架,实现了Reactive Streams规范. 它提供了可组合的异步序列API,例如Flux(用于[N]个元素)和Mono(用于[0 | 1]个 ...
- 后端程序员之路 54、go 日志库
一个朋友写的日志库 https://github.com/vizee/echo go get -u -v github.com/vizee/echo package main import ( ...
- 《C++ Primer》笔记 第11章 关联容器
关联容器类型 解释 按关键字有序保存元素 -- map 关联数组:保存关键字-值对 set 关键字即值,即只保存关键字的容器 multimap 关键字可重复出现的map multiset 关键字可重复 ...
- 太上老君的炼丹炉之分布式 Quorum NWR
分布式系列文章: 1.用三国杀讲分布式算法,舒适了吧? 2.用太极拳讲分布式理论,真舒服! 3.诸葛亮 VS 庞统,拿下 Paxos 共识算法 4.用动图讲解分布式 Raft 5.韩信大招:一致性哈希 ...
- React函数式组件和类组件[Dan]
一篇对Dan的 How Are Function Components Different from Classes? 一文的个人阅读总结,内容来自于此.强烈推荐阅读 Dan Abramov.的博客. ...
- spring-cloud-alibaba之Nacos
在微服务构架中,集群服务间的需要调用时就需要知道各个服务的IP和提供服务的端口等信息,如果每个部署一个服务就配置一次,那么必然时非常麻烦的,因此我们需要一个能够统一管理的东西来解决这个问题,由此诞生了 ...
- JAVA-常用集合类型转换例子
package com.net.xinfang.reflect; import java.util.ArrayList; import java.util.Arrays; import java.ut ...