前言

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

一、在pom中添加依赖

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-data-jpa</artifactId>
  4. </dependency>
  5. <dependency>
  6. <groupId>mysql</groupId>
  7. <artifactId>mysql-connector-java</artifactId>
  8. <version>6.0.6</version>
  9. </dependency>

二、项目配置

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

  1. # 多环境配置
  2. spring:
  3. profiles:
  4. active: prod
  5.  
  6. # 通用数据源配置
  7. datasource:
  8. driver-class-name: com.mysql.cj.jdbc.Driver
  9. url: jdbc:mysql://localhost:3306/student_info?serverTimezone=GMT%2B8
  10. username: root
  11. password: root
  12. hikari:
  13. maximum-pool-size:
  14. minimum-idle:
  15. # JPA相关配置
  16. jpa:
  17. hibernate:
  18. ddl-auto: create
  19. show-sql: true

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

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

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

三、 数据库的操作

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

1、创建一个实体

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

  1. package com.rongrong.springboot.demo.student;
  2.  
  3. import javax.persistence.Entity;
  4. import javax.persistence.GeneratedValue;
  5. import javax.persistence.Id;
  6.  
  7. /**
  8. * @author rongrong
  9. * @version 1.0
  10. * @description:
  11. * @date 2019/12/30 21:24
  12. */
  13. @Entity
  14. public class Student {
  15.  
  16. //主键ID
  17. @Id
  18. //自增型
  19. @GeneratedValue
  20. private Integer id;
  21. private String name;
  22. private Integer age;
  23. private String sex;
  24. private String email;
  25. }

2、数据库操作逻辑编写

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

  1. package com.rongrong.springboot.demo.student;
  2.  
  3. import org.springframework.data.jpa.repository.JpaRepository;
  4.  
  5. /**
  6. * @author rongrong
  7. * @version 1.0
  8. * @description:
  9. * @date 2019/12/30 22:20
  10. */
  11. public interface StudentResponstory extends JpaRepository<Student,Integer> {
  12. }

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

  1. package com.rongrong.springboot.demo.student;
  2.  
  3. import org.springframework.beans.factory.annotation.Autowired;
  4. import org.springframework.web.bind.annotation.*;
  5.  
  6. import java.util.List;
  7.  
  8. /**
  9. * @author rongrong
  10. * @version 1.0
  11. * @description:
  12. * @date 2019/12/30 20:40
  13. */
  14. @RestController
  15. public class StudentController {
  16.  
  17. @Autowired
  18. StudentResponstory studentResponstory;
  19.  
  20. /**
  21. * 查询所有学生列表
  22. *
  23. * @return
  24. */
  25. @GetMapping("/students")
  26. public List<Student> sudentFindAll() {
  27. return studentResponstory.findAll();
  28. }
  29.  
  30. /**
  31. * 新增一个学生
  32. *
  33. * @param name
  34. * @param age
  35. * @param sex
  36. * @param email
  37. * @return
  38. */
  39. @PostMapping("/studentAdd")
  40. public Student sudentAdd(@RequestParam("name") String name, @RequestParam("age") Integer age,
  41. @RequestParam("sex") String sex, @RequestParam("email") String email) {
  42. Student student = new Student();
  43. student.setName(name);
  44. student.setAge(age);
  45. student.setSex(sex);
  46. student.setEmail(email);
  47. //保存和更新都用该方法
  48. return studentResponstory.save(student);
  49. }
  50.  
  51. /**
  52. * 通过iD查找一个学生
  53. *
  54. * @param id
  55. * @return
  56. */
  57. @GetMapping("/sudentFindOne/{id}")
  58. public Student sudentFindOne(@PathVariable("id") Integer id) {
  59. return studentResponstory.findOne(id);
  60. }
  61.  
  62. /**
  63. * 通过ID更新一个学生信息
  64. *
  65. * @param id
  66. * @param name
  67. * @param age
  68. * @param sex
  69. * @param email
  70. * @return
  71. */
  72. @PutMapping("/sudentUpdate/{id}")
  73. public Student sudentUpdate(@PathVariable("id") Integer id, @RequestParam("name") String name, @RequestParam("age") Integer age,
  74. @RequestParam("sex") String sex, @RequestParam("email") String email) {
  75. Student student = new Student();
  76. student.setId(id);
  77. student.setName(name);
  78. student.setAge(age);
  79. student.setSex(sex);
  80. student.setEmail(email);
  81. //保存和更新都用该方法
  82. return studentResponstory.save(student);
  83. }
  84.  
  85. /**
  86. * 通过ID删除一个学生
  87. *
  88. * @param id
  89. */
  90. @DeleteMapping("/sudentDelete/{id}")
  91. public void sudentDelete(@PathVariable("id") Integer id) {
  92. studentResponstory.delete(id);
  93. }
  94.  
  95. /**
  96. * 通过年龄查询学生
  97. *
  98. * @param age
  99. * @return
  100. */
  101. @GetMapping("/sudentFindByAge/{age}")
  102. public List<Student> sudentFindByAge(@PathVariable("age") Integer age) {
  103. return studentResponstory.findByAge(age);
  104. }
  105.  
  106. }

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

  1. package com.rongrong.springboot.demo.student;
  2.  
  3. import org.springframework.data.jpa.repository.JpaRepository;
  4.  
  5. import java.util.List;
  6.  
  7. /**
  8. * @author rongrong
  9. * @version 1.0
  10. * @description:
  11. * @date 2019/12/30 22:20
  12. */
  13. public interface StudentResponstory extends JpaRepository<Student,Integer> {
  14. List<Student> findByAge(Integer age);
  15. }

再次启动项目,通过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. @bzoj - 4377@ [POI2015] Kurs szybkiego czytania

    目录 @description@ @solution@ @accepted code@ @details@ @description@ 给定 n, a, b, p,其中 n, a 互质.定义一个长度为 ...

  2. Android Joda-time工具类

    Joda-Time提供了一组Java类包用于处理包括ISO8601标准在内的date和time.可以利用它把JDK Date和Calendar类完全替换掉,而且仍然能够提供很好的集成.   Joda- ...

  3. VS Code导入已存在的Vue.js工程

    打开vscode------->文件--------->打开文件夹--------->选择工程文件夹-------->确定 查看---->终端或者使用"Ctrl ...

  4. es6新增语法之`${}`

    这是es6中新增的字符串方法 可以配合反单引号完成拼接字符串的功能 1.反单引号怎么打出来?将输入法调整为英文输入法,单击键盘上数字键1左边的按键. 2.用法step1: 定义需要拼接进去的字符串变量 ...

  5. oracle强制索引失效

    如果两个或以上索引具有相同的等级,你可以强制命令ORACLE优化器使用其中的一个(通过它,检索出的记录数量少) . 举例: SELECT ENAME FROM EMP WHERE EMPNO = 79 ...

  6. H3C 会话层、表示层和应用层

  7. JavaScript 全国级省市县联动

    <div class="right_content clearfix"> <h3 class="common_title2">收货地址& ...

  8. Example-09-01

    #define _CRT_SECURE_NO_WARNINGS #include <cstdio> #include <cstring> int min(int a, int ...

  9. PHP两个变量值互换(不用第三变量)

    <?php /**  * 双方变量为数字或者字符串时  * 使用list()和array()方法可以达到交换变量值得目的  */ $a = "This is A"; // a ...

  10. Json介绍与Ajax技术

    AJAX   AJAX准备知识:JSON 什么是 JSON ? JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) JSON 是轻量级的文本数据 ...