SpringBoot学习笔记(四)——Spring Data JPA的使用

Spring boot学习笔记之四:SpringBoot操作之Spring-Data-Jpa Spring-Data-Jpa JPA(Java Persistence API)定义了一系列对象持久化的标准,目前实现这一规范的产品有Hibernate、TopLink等。Spring Data JPA 框架,主要针对的就是 Spring 唯一没有简化到的业务逻辑代码,至此,开发者连仅剩的实现持久层业务逻辑的工作都省了,唯一要做的,就只是声明持久层的接口,其他都交给 Spring Data JP... 阅读详情

JPA即Java Persistence API,它的查询语言是面向对象而非面向数据库,可以看作是Hibernate hql的等价物。这一节记录Springboot整合JPA反向创建数据库表并实现增删改查功能。

1、创建springboot项目,如下:

添加web、JPA、mysql数据库驱动依赖

2、完成JPA和数据源配置

# 开发环境
server.port=8082
# 自动生成数据库表
spring.jpa.hibernate.ddl-auto=update
# 数据源
spring.datasource.url=jdbc:mysql://localhost:3306/login?useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.username=root
spring.datasource.password=root123
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# jpa配置
# 在控制台显示SQL
spring.jpa.show-sql=true
spring.thymeleaf.cache=false

3、创建层级结构

3.1、创建层级结构目录

 3.2 创建Book实体类,用于映射生成book数据库表

package com.galago.demo_jpa.entity;

import org.springframework.format.annotation.DateTimeFormat;

import javax.persistence.*;
import java.util.Date;

@Entity
public class Book {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    @Column(unique = true)
    private String bookName;

    @Column(nullable = true)
    private String author;

    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date publishTime;

    public Integer getId() {
        return id;
    }

    public String getBookName() {
        return bookName;
    }

    public String getAuthor() {
        return author;
    }

    public Date getPublishTime() {
        return publishTime;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public void setBookName(String bookName) {
        this.bookName = bookName;
    }

    public void setAuthor(String author) {
        this.author = author;
    }

    public void setPublishTime(Date publishTime) {
        this.publishTime = publishTime;
    }

    public Book(Integer id, String bookName, String author, Date publishTime) {
        this.id = id;
        this.bookName = bookName;
        this.author = author;
        this.publishTime = publishTime;
    }

    public Book(String bookName, String author, Date publishTime) {
        this.bookName = bookName;
        this.author = author;
        this.publishTime = publishTime;
    }

    public Book() {
    }
}

启动项目生成book数据库表,运行结果如下:

3.3 编写BookRepo接口类,并extends JpaRepository接口

package com.galago.demo_jpa.repo;

import com.galago.demo_jpa.entity.Book;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface BookRepo extends JpaRepository<Book, Integer> {
   // 该接口类包含增删改查等功能接口,减少了很多编写代码
}

查看JpaRepository接口源码,其内置了增删改查等功能,如下

3.4 编写BookController类 

package com.galago.demo_jpa.controller;

import com.galago.demo_jpa.entity.Book;
import com.galago.demo_jpa.repo.BookRepo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.List;

@RequestMapping("/book")
@Controller
public class UserController {

    @Autowired
    private BookRepo bookRepo;

    @RequestMapping("/getbook")
    @ResponseBody
    public List<Book> getbook() {
        return bookRepo.findAll();
    }

    @PostMapping("/add")
    @ResponseBody
    public Book addBook(Book book) {
        return bookRepo.save(book);
    }

    @RequestMapping("/del")
    @ResponseBody
    public void deleteById(Integer id) {
        System.out.println(id);
        bookRepo.deleteById(id);
    }

}

4、测试

 

参考:

Spring Data JPA

JPA常用注解详细讲解_W_Think的博客-优快云博客_jpa注解

Spring Boot学习笔记(五)Spring Data Jpa 快速上手(四)多对一@ManyToOne、一对多@OneToMany,以及级联操作 建立表、实体类 @Entity @Table(name = "cst_customer") @Data public class Customer { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "cust_id") private Integer custId; @Column(name = "cust_address") private String cus 阅读详情

相关推荐

Spring Data JPA用法详解

Spring Data JPA: JPA(Java Persistence API)即java持久化API,它的出现主要是为了简化持久层开发以及整合ORM技术,结束Hibernate、TopLink、JDO等ORM框架各自为营的局面。JPA是在吸收现有ORM框架的基础上发展而来,易于使用,伸缩性强。总的来说,JPA包括以下三方面的技术: ORM映射元数据:支持XML和注解两种元数据的形式,元数据描述对象和表之间的映射关系 API:操作实体对象来执行CRUD操作 查询语言:通过面向对象而非面向数据库的

li_w_ch的博客 7495

【原创】纯干货,Spring-data-jpa详解,全方位介绍。

本篇进行Spring-data-jpa的介绍,几乎涵盖该框架的所有方面,在日常的开发当中,基本上能满足所有需求。这里不讲解JPA和Spring-data-jpa单独使用,所有的内容都是在和Spring整合的环境中实现。如果需要了解该框架的入门,百度一下,很多入门的介绍。在这篇文章的接下来一篇,会有一个系列来讲解mybatis,这个系列从mybatis的入门开始,到基本使用,和spring整合,和第...

weixin_33955681的博客 8516

【Spring Boot】SpringBoot和数据库交互: 使用Spring Data JPA

在本博客中,我们详细探索了Spring Data JPA在Spring Boot中的应用。从传统数据库交互到现代化的JPA方式,再到实体的创建、数据访问和事务管理,每一步都进行了深入解析。通过实际案例,明确展示了从建模到数据访问的全流程。同时,也针对常见问题,如N+1查询,给出了解决建议。此文旨在帮助开发者更有效地利用Spring Data JPA,简化数据库操作,提高开发效率。

Ricky的博客 4920

SpringDataJpa入门(太阿)

Spring Data Jpa 简介 JPA JPA(Java Persistence API)意即Java持久化API,是Sun官方在JDK5.0后提出的Java持久化规范(JSR 338,这些接口所在包为javax.persistence,详细内容可参考https://github.com/javaee/jpa-spec) JPA的出现主要是为了简化持久层开发以及整合ORM技术,结束Hib...

LuckFairyLuckBaby的博客 2049

SpringBoot中Mybatis跟Spring Data JPA区别在哪?

我觉得为啥这么多人都说Mybatis好,原因最主要是Mybatis容易上手,现在学编程学数据库基本都学过SQL,Mybatis面向DB基于SQL的模式相对来说就显得特别直观友好。 而JPA是基于ORM的,把代码和DB分离,相当于在代码和DB之间增加了一个新的层面,一套新的标准,去间接操作DB,相对SQL的模式来说就显得不够直接和易于控制,增加了学习成本,碰到这样那样问题的时候,很容易让人放弃。 特别是在团队开发的时候,你很难掌控每个人对JPA的深层机制的理解程度,为了避免木桶效应,还不如干脆都用Myba.

大仙 3868

SpringBoot系列之Spring Data Jpa集成教程

SpringBoot系列之Spring Data Jpa集成教程 Spring Data Jpa是属于Spring Data的一个子项目,Spring data项目是一款集成了很多数据操作的项目,其下的子项目有如下图所示: 官方也有提供了英文版的文档,具体可以参考Spring data官方文档 JPA是一个规范,并非具体的实现框架,而Spring Data JPA就是依赖于Hibernate J...

Nicky's blog 4942

Java:113-Spring Data JPA详解

但是呢,JPA最终也是操作映射的,所以可以称JPA也是一种ORM的规范有jpa规范的框架,自身jpa还不够,我需要增强的jpa(Spring Data JPA)//可以引⼊jpql(jpa查询语⾔)语句进⾏查询,jpql 语句类似于sql,只不过sql操作的是数据表和字段,jpql操作的是对象和属性//⽐如 from Resume where id=xx(在hibernate中称为hql语句)1") //指定?,代表对应的给入的值,后面的1代表接口参数中的第一个//即?1代表使用Long id。

qq_59609098的博客 4331

EXI编解码避坑指南:ISO15118-2协议中3条异常命令的差异分析

本文深度剖析了ISO15118-2协议测试中EXI编解码的典型问题,聚焦于ChargeParameterDiscoveryRes、CertificateInstallationReq和MeteringReceiptReq三条命令在不同工具间产生109字节差异的现象。通过对比EXICodec.jar、OpenEXI和Efficient XML的输出,揭示了差异根源于EXI报头处理机制与模式文件完整性,并提供了从现象确认、根因分析到解决方案的标准化排查流程,助力协议测试工程师确保编解码一致性与通信可靠性。

algae的博客 411

Spring Data JPA详解

Spring Data是持久层通用解决方案,支持关系型数据库 Oracle、MySQL、非关系型数据库NoSQL、Map-Reduce 框架、云基础数据服务 、搜索服务等。

JAVA_KX的博客 3289

Xarray实战:从气象数据到可视化分析的完整流程(附Python代码)

本文详细介绍了使用Xarray库处理气象数据的完整实战流程。针对气象领域常见的NetCDF和GRIB格式,文章从数据读取、坐标操作、智能索引、统计计算到高级可视化,提供了完整的Python代码示例。重点阐述了Xarray如何高效处理高维标记数据,帮助地球科学领域的研究人员将繁琐的数据处理工作转化为高效的分析流水线。

d6e7f8g9h的博客 289

国产操作系统替换方案:3个避坑指南

坑核心误区避坑核心原则关键动作坑一:选型只看信创信创目录=唯一标准兼容性优先,信创是约束三维评估(兼容性+信创+生态),分场景选型坑二:迁移只管能跑功能能跑=迁移成功性能确认+运维回归适配-压测-回归三阶段,基线对比坑三:不防二次迁移解决停服=完成任务一步到位,两级兼容信创路线优先,双轨制发布,终态规划。

weixin_43524706的博客 294

SpringDataJpa使用详解

概述 这里就不引用冠冕堂皇的介绍了。用我概括的话说。他就是一个类似hibernate,mybatis数据访问层的框架。官网有详细的介绍, 戳这里 Jpa是什么?他是一套规范,类似restful风格一样,都是一套规范。使用Jpa必须按照它的规范来操作数据访问。 SpringDataJpa==Jpa规范+Hibernate底层 为什么要用jpa 笔者其实很喜欢用mybatis写sql...

安迪爸爸 6741

SAP ABAP实战:用GN_DELIVERY_CREATE批量创建内部交货单的完整代码与避坑指南

本文详细介绍了在SAP ABAP开发中使用GN_DELIVERY_CREATE函数批量创建内部交货单的完整实现方案。通过数据结构设计、多源数据整合、批量处理逻辑和错误处理机制等核心环节的深入解析,帮助开发者高效完成物流单据自动化处理,特别针对VL31N/VL32N等常见场景提供避坑指南。

weixin_42116058的博客 343

SpringBoot集成jpa 一篇就够了 超详细

SpringBoot集成jpa 网上有很对jpa的介绍,但是都不是很全,这边根据公司的实际使用情况进行的总结。 JPA、Hibernate、Spring data jpa之间的关系 主要参考https://my.oschina.net/u/3080373/blog/1828589 大家可以读一下这篇文章 什么是JPA? 全称Java Persistence API,可以通过注解或者XML描述【对象-关系表】之间的映射关系,并将实体对象持久化到数据库中。 为我们提供了: 1)ORM映射元数据:JPA支持XML

cmx1060220219的博客 8万+

YOLOv8【第十一章:视频追踪与流处理篇·第6节】BoT-SORT 改进:结合相机运动补偿(CMC)提升追踪稳定性!

🏆 本文收录于 《YOLOv8实战:从入门到深度优化》 专栏。该专栏系统复现并梳理全网各类 YOLOv8 改进与实战案例(当前已覆盖分类 / 检测 / 分割 / 追踪 / 关键点 / OBB 检测等方向),坚持持续更新 + 深度解析,质量分长期稳定在 97 分以上,可视为当前市面上 覆盖较全、更新较快、实战导向极强 的 YOLO 改进系列内容之一。

**My Coding Family** 717

基于Simulink的占空比调制DTC降低转矩脉动

修改传统SVPWM模块,输入占空比d和有效矢量索引,计算Ton​=d∗Tc​、Toff​=(1−d)∗Tc​,生成对称PWM波形(替代开关表直接输出)。:低速时(n<500rpm)减小dmax​=0.6(避免磁链畸变),高速时(n>2000rpm)增大dmax​=0.8(提升动态响应);kT​/kψ​:转矩/磁链误差增益(需整定,如kT​=0.02/(N⋅m),kψ​=0.1/Wb);(θ为电压矢量与磁链夹角)。② SVM-DTC(占空比计算模块启用,d0​=0.5,kT​=0.02,kψ​=0.1)。

amy_mhd的博客 87

Java Web开发进阶——Spring Boot与Spring Data JPA

Spring Data JPA 是 Spring Data 项目中的子项目,旨在简化与 JPA(Java Persistence API)的集成。它在标准 JPA 的基础上提供了更高层次的抽象,开发者可以使用极少的代码实现复杂的数据操作。Spring Data JPA 是 Spring 提供的一种面向数据访问的持久化框架,它简化了 JPA 的实现,为开发者提供了一种快速操作数据库的方式。Spring Data JPA 的强大之处在于其灵活的查询方式,支持方法派生、JPQL 和原生 SQL。

好看资源网的博客 2243

包成功安装tiny-cuda-nn,记录安装过程中的问题解决,附带pytorch3d安装【踩坑指南】

该包可以显著提高NeRF训练速度,是和NeRFstudio等框架中,必须使用的。本文提供tiny-cuda-nn可以安装的完整包的下载链接,可以直接上传到项目中安装。附带笔者遇到的问题的解决方案。

zik的博客 7029

Spring Data JPA 之 JpaRepository

JpaRepository是Spring提供的非常强大的基本接口。 1 JpaRepository 1.1 JpaRepository接口定义 JpaRepository接口的官方定义如下: public interface JpaRepository&lt;T, ID&gt; extends PagingAndSortingRepository&lt;T, ID&gt;, Q...

西瓜游侠的博客 6万+

YOLOv12改进策略【模型轻量化】| 替换骨干网络为EfficientNet v1 高效的移动倒置瓶颈结构

本文记录的是基于。采用了创新性的方法,通过精心平衡网络和来提升性能。本文将的设计优势融入YOLOv12中,提升YOLOv12的性能与效率,使其在目标检测任务中表现更为出色。本文配置了原模型中的共种不同大小的模型结构,以满足不同的需求。

Limiiiing的博客 963

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

【SpringBoot框架篇】11.Spring Data Jpa实战

文章目录简介JPASpring Data JpaHibernateJpa、Spring Data Jpa、Hibernate三者之间的关系应用实战引入依赖配置文件实体类常用注解@Entity和@Table@Id和@GeneratedValue@Column@Transient继承超类的通用字段属性@MappedSuperclass@Inheritance审计功能启用审计功能在启动类里添加注解在需要使用的类上面添加审计监听器审计功能注解添加审计人 简介 首先了解一下 JPA,Spring Data Jpa,之

皓亮君的博客 4337

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

springboot中使用Spring Data Jpa

ORM即Object-Relationl Mapping,它的作用是在关系型数据库和对象之间作一个映射,这样,我们在具体的操作数据库的时候,就不需要再去和复杂的SQL语句打交道,只要像平时操作对象一样操作它就可以了 。在ORM出现之前,我们是用jdbc来操作数据库,但jdbc没有封装,对于大项目来说,使用复杂,也难以实现MVC的概念,所以人们就开发了ORM框架来解决这些问题。比如Hibernate,Mybatis,不过Hibernate是完全的ORM框架,mybatis是半ORM框架,因为它需要手动建表和自

daimenglaoshi的博客 1071

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

重学SpringBoot3-Spring Data JPA简介

在现代 Java 应用开发中,数据持久化层是非常重要的组成部分。Spring Boot 3 和 Spring Data JPA 的结合为我们提供了一个简洁、高效的解决方案,可以快速实现数据访问层逻辑,减少冗余代码。本文将详细介绍如何在 Spring Boot 3 中集成 Spring Data JPA,并展示一些常见的用法和最佳实践。

CoderJia的学习之路 2233

SpringBoot使用Spring Data JPA 操作 postgreSQL数据库

什么是JPA JPA(Java Persistence API) 和 Spring Data 是两个范畴的概念。 想必大家都有听过Hibernate框架。Hibernate是一个ORM框架,而JPA则是一种ORM规范,JPA和Hibernate的关系就像JDBC与JDBC驱动的关系,即JPA制定了ORM规范,而Hibernate是这些规范的实现。 Spring Data 是Spring的一个...

sunshine_gy的博客 5267

​ Spring Data JPA

​ 创建一个普通的Maven项目。

埃泽漫笔 1341

SpringBoot开发使用Mybatis,还是Spring Data JPA?

最近有球友问了我一个问题:SpringBoot项目到底该用Mybatis还是Spring Data JPA?这个问题,我几乎在每个项目启动时都会被团队问到。有些小伙伴在工作中,一看到数据库操作就头疼,选框架时犹豫不决,生怕选错了影响项目后期维护。其实,这俩框架各有千秋,关键看你的项目需求和团队习惯。今天这篇文章就跟大家一起聊聊,希望对你会有所帮助。如果你的项目以简单CRUD为主,团队熟悉面向对象编程,追求开发效率,那么是更好的选择。它能让你快速原型开发,减少代码量。

jike007gt的博客 872
上一篇: SpringBoot学习笔记(三)——参数校验器Validator
下一篇: SpringBoot学习笔记(五)——整合redis
^^_candice
博客等级 码龄10年 3粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值