前言

Spring boot中的JPA 使用的同学都会感觉到他的强大,简直就是神器一般,通俗的说,根本不需要你写sql,这就帮你节省了很多时间,那么下面我们来一起来体验下这款神器吧。

一、在pom中添加依赖

       <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>6.0.6</version>
</dependency>

二、项目配置

在application.yml中填写数据库及JPA相关配置信息(这样在dev和prod两个环境是可以共用的),示例如下:

# 多环境配置
spring:
profiles:
active: prod # 通用数据源配置
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/student_info?serverTimezone=GMT%2B8
username: root
password: root
hikari:
maximum-pool-size:
minimum-idle:
# JPA相关配置
jpa:
hibernate:
ddl-auto: create
show-sql: true

说明:接口调试时,jpa中的ddl-auto:要改为update,否则每次运行都会清空数据哦!

编写好项目配置后,这里我们可以启动项目,会报错如下:

这是因为我没创建这个库引起的,那么我们先把这个库创建起来,接着我们重新启动项目就不会报错了,还帮我们显示出了创建sql语句,是不是很赞呢,哈哈

三、 数据库的操作

前面的项目基本搭建完成,下面我们通过增删改查的一系列操作,来完成数据库的操作。

1、创建一个实体

创建一个名为Student的类,示例如下:

package com.rongrong.springboot.demo.student;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id; /**
* @author rongrong
* @version 1.0
* @description:
* @date 2019/12/30 21:24
*/
@Entity
public class Student { //主键ID
@Id
//自增型
@GeneratedValue
private Integer id;
private String name;
private Integer age;
private String sex;
private String email;
}

2、数据库操作逻辑编写

创建一个名为StudentResponstory的接口,继承JPAResponstory,示例如下:

package com.rongrong.springboot.demo.student;

import org.springframework.data.jpa.repository.JpaRepository;

/**
* @author rongrong
* @version 1.0
* @description:
* @date 2019/12/30 22:20
*/
public interface StudentResponstory extends JpaRepository<Student,Integer> {
}

创建一个名为StudentController的类,通过增删改查操作,来实现库的操作逻辑,具体示例代码如下:

package com.rongrong.springboot.demo.student;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import java.util.List; /**
* @author rongrong
* @version 1.0
* @description:
* @date 2019/12/30 20:40
*/
@RestController
public class StudentController { @Autowired
StudentResponstory studentResponstory; /**
* 查询所有学生列表
*
* @return
*/
@GetMapping("/students")
public List<Student> sudentFindAll() {
return studentResponstory.findAll();
} /**
* 新增一个学生
*
* @param name
* @param age
* @param sex
* @param email
* @return
*/
@PostMapping("/studentAdd")
public Student sudentAdd(@RequestParam("name") String name, @RequestParam("age") Integer age,
@RequestParam("sex") String sex, @RequestParam("email") String email) {
Student student = new Student();
student.setName(name);
student.setAge(age);
student.setSex(sex);
student.setEmail(email);
//保存和更新都用该方法
return studentResponstory.save(student);
} /**
* 通过iD查找一个学生
*
* @param id
* @return
*/
@GetMapping("/sudentFindOne/{id}")
public Student sudentFindOne(@PathVariable("id") Integer id) {
return studentResponstory.findOne(id);
} /**
* 通过ID更新一个学生信息
*
* @param id
* @param name
* @param age
* @param sex
* @param email
* @return
*/
@PutMapping("/sudentUpdate/{id}")
public Student sudentUpdate(@PathVariable("id") Integer id, @RequestParam("name") String name, @RequestParam("age") Integer age,
@RequestParam("sex") String sex, @RequestParam("email") String email) {
Student student = new Student();
student.setId(id);
student.setName(name);
student.setAge(age);
student.setSex(sex);
student.setEmail(email);
//保存和更新都用该方法
return studentResponstory.save(student);
} /**
* 通过ID删除一个学生
*
* @param id
*/
@DeleteMapping("/sudentDelete/{id}")
public void sudentDelete(@PathVariable("id") Integer id) {
studentResponstory.delete(id);
} /**
* 通过年龄查询学生
*
* @param age
* @return
*/
@GetMapping("/sudentFindByAge/{age}")
public List<Student> sudentFindByAge(@PathVariable("age") Integer age) {
return studentResponstory.findByAge(age);
} }

通过年龄查询学生查询时,需要在接口中添加如下方法:

package com.rongrong.springboot.demo.student;

import org.springframework.data.jpa.repository.JpaRepository;

import java.util.List;

/**
* @author rongrong
* @version 1.0
* @description:
* @date 2019/12/30 22:20
*/
public interface StudentResponstory extends JpaRepository<Student,Integer> {
List<Student> findByAge(Integer age);
}

再次启动项目,通过postman进行逐一测试,即可。

项目启动效果图

postman效果图

到此,spring boot中jpa的使用介绍完,有兴趣的同学可以自行尝试。

使用spring boot中的JPA操作数据库的更多相关文章

  1. 初识在Spring Boot中使用JPA

    前面关于Spring Boot的文章已经介绍了很多了,但是一直都没有涉及到数据库的操作问题,数据库操作当然也是我们在开发中无法回避的问题,那么今天我们就来看看Spring Boot给我们提供了哪些疯狂 ...

  2. Spring Boot 中使用 jpa

    本文原文版权归 CSDN Hgihness 所有,此处为转载+技术收藏,如有再转请自觉于篇头处标明原文作者及出处,这是大家对作者劳动成果的自觉尊重!! 作者:Hgihness 原文:http://bl ...

  3. Spring Boot中使用JdbcTemplate访问数据库

    本文介绍在Spring Boot基础下配置数据源和通过JdbcTemplate编写数据访问的示例. 数据源配置 在我们访问数据库的时候,需要先配置一个数据源,下面分别介绍一下几种不同的数据库配置方式. ...

  4. Spring Boot中使用Jpa的findOne方法不能传入id

    最近通过慕课网学习spring boot,视频中通过jpa的findOne方法以id为参数查询出对应的信息, 而当我自己做测试的时候却发现我的findOne方法的参数没有Integer类型的id,而是 ...

  5. Spring Boot(二):Spring-Data-JPA操作数据库( Hibernate)增删改查

    一.Maven使用3.3.9版本或以上,选择Binary 版本 二.添加spring-data-jpa和数据库依赖,以oracle为例 三.添加连接数据库配置 四.新建model自动生成数据库表(不用 ...

  6. 基于Spring Boot,使用JPA操作Sql Server数据库完成CRUD

    完成一个RESTful服务,提供几个访问接口,用来操作较简单的联系人信息,数据保存在Sql Server数据库中. 1.使用STS创建工程. 使用STS创建RESTful工程,可以参考: <用S ...

  7. spring boot 中使用 jpa以及jpa介绍

    1.什么是jpa呢?JPA顾名思义就是Java Persistence API的意思,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中.12.jpa具有什么 ...

  8. spring boot中注入jpa时报could not autowire.No beans of 'PersonRepository' type found

    解决方法,在repository加一个注解.如下图所示: @Component

  9. Spring boot中应用jpa jpa用法

    https://blog.csdn.net/u012582402/article/details/78717705

随机推荐

  1. element清空图片显示

    使用element-ui,使用el-upload上传图片,上传图片后再次打开还是会有原来的图片,想要清空原来上传的图片,只需要在组件上绑定ref,在提交成功后的方法里调用this.$refs.uplo ...

  2. MyBatis动态批量插入、更新Mysql数据库的通用实现方案

    一.业务背景 由于需要从A数据库提取大量数据同步到B系统,采用了tomikos+jta进行分布式事务管理,先将系统数据源切换到数据提供方,将需要同步的数据查询出来,然后再将系统数据源切换到数据接收方, ...

  3. 2018-2-13-WPF-获得触笔悬停元素上

    title author date CreateTime categories WPF 获得触笔悬停元素上 lindexi 2018-2-13 17:23:3 +0800 2018-2-13 17:2 ...

  4. Hadoop应用程序示例

  5. django 中models表的多对一,多对多的理解

    django 表的理解 好处:设计的好,会清晰,易于理解和维护,后期开发事半功倍,一目了然. 1. 一对一的表,两表的属性实际上完全可以合并成一个表,共用一个主键即可: 2. 一对多的表,可以设中间关 ...

  6. 对装饰器@wraps的解释(一看就懂)-- 并对装饰器详解

    1. 先看一段代码 def is_login(func): def foo(*args,**kwargs): return func(*args,**kwargs) return foo def te ...

  7. poj 1066 Treasure Hunt (Geometry + BFS)

    1066 -- Treasure Hunt 题意是,在一个金字塔中有一个宝藏,金字塔里面有很多的墙,要穿过墙壁才能进入到宝藏所在的地方.可是因为某些原因,只能在两个墙壁的交点连线的中点穿过墙壁.问最少 ...

  8. oracle 用IN来替换OR

    下面的查询可以被更有效率的语句替换: 低效: SELECT…. FROM LOCATION WHERE LOC_ID = 10 OR     LOC_ID = 20 OR     LOC_ID = 3 ...

  9. oracle避免在索引列上使用计算

    WHERE子句中,如果索引列是函数的一部分.优化器将不使用索引而使用全表扫描. 举例: 低效: SELECT … FROM DEPT WHERE SAL * 12 > 25000; 高效: SE ...

  10. 装机必备 Windows 操作系统ISO镜像资源

    小编今天使用VMware虚拟机软件搭建Win7系统时,开始一直不成功总是出现:Start booting from CD...Directory "EZBOOT" not foun ...