使用spring boot中的JPA操作数据库
前言
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操作数据库的更多相关文章
- 初识在Spring Boot中使用JPA
前面关于Spring Boot的文章已经介绍了很多了,但是一直都没有涉及到数据库的操作问题,数据库操作当然也是我们在开发中无法回避的问题,那么今天我们就来看看Spring Boot给我们提供了哪些疯狂 ...
- Spring Boot 中使用 jpa
本文原文版权归 CSDN Hgihness 所有,此处为转载+技术收藏,如有再转请自觉于篇头处标明原文作者及出处,这是大家对作者劳动成果的自觉尊重!! 作者:Hgihness 原文:http://bl ...
- Spring Boot中使用JdbcTemplate访问数据库
本文介绍在Spring Boot基础下配置数据源和通过JdbcTemplate编写数据访问的示例. 数据源配置 在我们访问数据库的时候,需要先配置一个数据源,下面分别介绍一下几种不同的数据库配置方式. ...
- Spring Boot中使用Jpa的findOne方法不能传入id
最近通过慕课网学习spring boot,视频中通过jpa的findOne方法以id为参数查询出对应的信息, 而当我自己做测试的时候却发现我的findOne方法的参数没有Integer类型的id,而是 ...
- Spring Boot(二):Spring-Data-JPA操作数据库( Hibernate)增删改查
一.Maven使用3.3.9版本或以上,选择Binary 版本 二.添加spring-data-jpa和数据库依赖,以oracle为例 三.添加连接数据库配置 四.新建model自动生成数据库表(不用 ...
- 基于Spring Boot,使用JPA操作Sql Server数据库完成CRUD
完成一个RESTful服务,提供几个访问接口,用来操作较简单的联系人信息,数据保存在Sql Server数据库中. 1.使用STS创建工程. 使用STS创建RESTful工程,可以参考: <用S ...
- spring boot 中使用 jpa以及jpa介绍
1.什么是jpa呢?JPA顾名思义就是Java Persistence API的意思,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中.12.jpa具有什么 ...
- spring boot中注入jpa时报could not autowire.No beans of 'PersonRepository' type found
解决方法,在repository加一个注解.如下图所示: @Component
- Spring boot中应用jpa jpa用法
https://blog.csdn.net/u012582402/article/details/78717705
随机推荐
- @bzoj - 4377@ [POI2015] Kurs szybkiego czytania
目录 @description@ @solution@ @accepted code@ @details@ @description@ 给定 n, a, b, p,其中 n, a 互质.定义一个长度为 ...
- Android Joda-time工具类
Joda-Time提供了一组Java类包用于处理包括ISO8601标准在内的date和time.可以利用它把JDK Date和Calendar类完全替换掉,而且仍然能够提供很好的集成. Joda- ...
- VS Code导入已存在的Vue.js工程
打开vscode------->文件--------->打开文件夹--------->选择工程文件夹-------->确定 查看---->终端或者使用"Ctrl ...
- es6新增语法之`${}`
这是es6中新增的字符串方法 可以配合反单引号完成拼接字符串的功能 1.反单引号怎么打出来?将输入法调整为英文输入法,单击键盘上数字键1左边的按键. 2.用法step1: 定义需要拼接进去的字符串变量 ...
- oracle强制索引失效
如果两个或以上索引具有相同的等级,你可以强制命令ORACLE优化器使用其中的一个(通过它,检索出的记录数量少) . 举例: SELECT ENAME FROM EMP WHERE EMPNO = 79 ...
- H3C 会话层、表示层和应用层
- JavaScript 全国级省市县联动
<div class="right_content clearfix"> <h3 class="common_title2">收货地址& ...
- Example-09-01
#define _CRT_SECURE_NO_WARNINGS #include <cstdio> #include <cstring> int min(int a, int ...
- PHP两个变量值互换(不用第三变量)
<?php /** * 双方变量为数字或者字符串时 * 使用list()和array()方法可以达到交换变量值得目的 */ $a = "This is A"; // a ...
- Json介绍与Ajax技术
AJAX AJAX准备知识:JSON 什么是 JSON ? JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) JSON 是轻量级的文本数据 ...