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的更多相关文章

  1. Spring Boot 使用IntelliJ IDEA创建一个web开发实例(一)

    .新建项目File-->New-->Project-->Spring Initializr 点击Finish,一个Spring Boot web应用就创建好了.

  2. Spring Boot 使用IntelliJ IDEA创建一个web开发实例(五)

    使用application.ym进行多环境配置 1.配置激活选项 spring: profiles: active: dev 2.在配置文件添加若干个英文状态下的短横线即可区分 spring: pro ...

  3. Spring Boot 使用IntelliJ IDEA创建一个web开发实例(四)

    多环境配置 1. 在springBoot多环境配置文件名需要满足application-{profile}.properties的格式,其中{profile}对应你的环境标识,例如: (1)appli ...

  4. Spring Boot 使用IntelliJ IDEA创建一个web开发实例(二)

    1. 创建一个Controller类 package com.example.demo; import org.springframework.web.bind.annotation.RequestM ...

  5. Spring Boot 使用IntelliJ IDEA创建一个web开发实例(三)

    属性配置 1.配置application.properties文件 配置web访问端口和context path server.port = 8081 server.servlet.context-p ...

  6. Spring Boot使用Spring Data Jpa对MySQL数据库进行CRUD操作

    只需两步!Eclipse+Maven快速构建第一个Spring Boot项目 构建了第一个Spring Boot项目. Spring Boot连接MySQL数据库 连接了MySQL数据库. 本文在之前 ...

  7. spring boot系列(五)spring boot 配置spring data jpa (查询方法)

    接着上面spring boot系列(四)spring boot 配置spring data jpa 保存修改方法继续做查询的测试: 1 创建UserInfo实体类,代码和https://www.cnb ...

  8. Spring Boot 整合Spring Data JPA

    Spring Boot整合Spring Data JPA 1)加入依赖 <dependency> <groupId>org.springframework.boot</g ...

  9. Spring Boot 之Spring data JPA简介

    文章目录 添加依赖 添加entity bean 创建 Dao Spring Data Configuration 测试 Spring Boot 之Spring data JPA简介 JPA的全称是Ja ...

随机推荐

  1. bluestein算法

    我们熟知的FFT算法实际上是将一个多项式在2n个单位根处展开,将其点值对应相乘,并进行逆变换.然而,由于单位根具有"旋转"的特征(即$w_{m}^{j}=w_{m}^{j+m}$) ...

  2. oracle 19c 导入 12c ORA-39002 ORA-39358

    直接用19c导出的dmp文件导入到12c,报错: ORA-39002: invalid operation ORA-39358: Export dump file version 19.0.0.0.0 ...

  3. Django登录使用的技术和组件

    登录 ''' 获取用户所有的数据 每条数据请求的验证 成功之后获取所有正确的信息 失败则显示错误信息 ''' #登陆页面管理 def login(request): if request.method ...

  4. h5返回上一页ios页面不刷新

    var isPage=false; window.addEventListener('pageshow', function () {         if (isPage) { window.loc ...

  5. 剑指 Offer 53 - II. 0~n-1中缺失的数字 + 二分法

    剑指 Offer 53 - II. 0-n-1中缺失的数字 Offer_53 题目详情 java代码 package com.walegarrett.offer; /** * @Author Wale ...

  6. LAB1 启动操作系统

    从机器上电到运行OS发生了什么? 在电脑主板上有一个Flash块,存放了BIOS的可执行代码.它是ROM,断电不会丢掉数据.在机器上电的时候,CPU要求内存控制器从0地址读取数据(程序第一条指令)的时 ...

  7. PriorityQueue 是线性结构吗?90%的人都搞错了!

    文章首发于「陈树义」公众号及个人博客 shuyi.tech 其实这个问题的完整描述是:Java 中的 PriorityQueue 实现,其数据的逻辑结构是线性结构吗?其数据的物理结构又是什么? 估计很 ...

  8. BIMFACE二次开发SDK 开源C#版

    [ BIMFace.SDK.CSharp ] 是基于微软.NET 技术封装的用于 BIMFACE 二次开发的通用类库.其中封装了BIMFace服务端API,包含基础API.文件上传API.文件转换AP ...

  9. gtk---实现一个登录界面

    输入框 如果在GTK+中需要输入一个字符串,可以使用输入框,这是一个单行的输入构件,可以用于输入和显示正文内容. 输入框的基本操作函数 1.gtk_entry_new(void); 这是新建一个输入框 ...

  10. Radar Scanner Gym - 102220G

    题目链接:https://vjudge.net/problem/Gym-102220G 题意:在水平直角坐标系中有n个矩形,你可以将矩形沿着平行于X轴和Y轴水平移动,问至少经过几次移动可以使得所有的矩 ...