文章目录

  • 一、什么是JPA
  • 二、SpringBoot整合JPA
    • 2.1、引入依赖
    • 2.2、配置数据库连接信息
    • 2.3、创建实体和数据表的映射
    • 2.4、CRUD
    • 2.4.1、添加
    • 2.4.2、删除
    • 2.4.3、查找
    • 2.4.3、更改
    • 2.4.4、自定义语句

一、什么是JPA

JPA是一个持久层的ORM框架。对jdbc 的封装。使用jpa可以实现操作实体对象就能够实现对数据库表的CRUD 。

Orm关系映射:

关系型数据库 java
数据表 java当中的实体类
记录数 对应Java当中的对象
Field 对应java类当中属性

Java程序员面向对象的角度操作对象,由于我们的表以及表当中的属性已经和关系型数据库当中表和字段进行了一个一一映射。我们操作了对象就能够操作表当中的记录。

二、SpringBoot整合JPA

2.1、引入依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

2.2、配置数据库连接信息

jpa:#逆向工程:存在数据库的表,然后数据库表可以生成实体类#正向工程:先存在实体类,然后根据实体类,生成底层的表#开发阶段可以设置为true,开启了逆向工程generate-ddl: true hibernate:#create :设置为create,每次运行程序都会将原来的数据表删除,然后重新创建一个表#create-drop :每次将创建一个数据表,数据表使用完毕之后,将数据表再次删除。##none将功能不生效#update 如果你设定的实体类发生了改变,数据表会更新:#如果数据库当中有数据表,就使用原来的表。没有数据表,就会创建一个数据表。#validate实体类和数据表进行校验,如果属性或者个数不一致,就会抛出异常。ddl-auto: update#操作实体对象的时候,会跟我们生成sql语句show-sql: true#指定了数据库的类型:database-platform: org.hibernate.dialect.MySQL8Dialect

2.3、创建实体和数据表的映射

import javax.persistence.Table;//Users 实体类,对应底层数据库表。mysqL数据库当中没有Users表,可以使用jpa的提供的正向工程@Data
@Entity()
public class Users {@Id //id唯一值@GeneratedValue(strategy = GenerationType.IDENTITY)//指定了当前主键生层策略private Integer id;@Column //标识username就是一个普通的列:注解当中可以指定很多属性,private  String username;private  String password;}

2.4、CRUD

import com.example.demo07.bean.Users;
import org.springframework.data.jpa.repository.JpaRepository;//JpaRepository <T, ID> jpa提供的一个接口:接口的当中定义了实体的基本操作;
//T 指定具体操作的实现类:pet实体类
//ID指定主键字段的类型(实体类当中带有id注解的属性)Integerpublic interface UsersDao extends JpaRepository<Users,Integer> {}

2.4.1、添加

 @Autowiredpublic UsersDao dao;public String add(){Users user=new Users ();user.name("123");user.passworf("666");dao.save(user);return "添加成功";}

2.4.2、删除

void deletepet {Users user=new Users ();user.setId(1);dao.delete(pet);
}

2.4.3、查找

  public User find(){//通过ID查询optional<Users> optional=dao.findById(1);Users user=optional.get()return user;}//排序查询
List<Pet> pname = petDao.findAll(Sort.by("name"));
//分页查询
Pageable pageable = PageRequest.of(xxx)
petDao.findAll(pageable);

2.4.3、更改

save方法:如果没有指定id字段,直接回进行一个insert操作;如果指定了id字段:根据指定的id先去查询:如果查询至到id对应的记录存在的话,进行一个更新操作。

2.4.4、自定义语句

 @Transient@Modifying@Query(value = "insert into t_comment(content,author,a_id) VALUES(?1,?2,?3)",nativeQuery = true)int add(Comment comment);

【JPA】SpringData JPA相关推荐

  1. 【持久层框架】- SpringData - JPA

    SpringData - JPA

  2. 【JPA】记录JPA批量处理的优化

    在jpa的使用过程中,发现用jpa内置的deleteAll()方法和saveAll()方法,效率都有所不足.看了下它调用的sql语句,发现删除是根据id一条条的删除,批量保存也是逐条先查后存,感觉明显 ...

  3. 006-spring-data-elasticsearch 3.0.0.0使用【四】-spring-data之Elasticsearch Repositories

    续 二.Elasticsearch Repositories 2.1.简介 2.1.1.Spring命名空间 Spring Data Elasticsearch模块包含一个允许定义存储库bean的自定 ...

  4. 【Other】最近在研究的, Java/Springboot/RPC/JPA等

    我的Springboot框架,欢迎关注: https://github.com/junneyang/common-web-starter Dubbo-大波-服务化框架 dubbo_百度搜索Dubbo与 ...

  5. 【笔记】Spring - Spring Data JPA

    相关 官方文档⭐️: https://docs.spring.io/spring-data/jpa/docs/2.6.0/reference/html/#preface 翻译: https://blo ...

  6. 【JPA】字段访问、属性访问及混合访问

    [JPA]字段访问.属性访问及混合访问 转载:https://www.cnblogs.com/yangchongxing/p/10120318.html 1.字段访问 注解字段,通过反射来获得和设置字 ...

  7. 【 Hibernate3-摘要 】 【 第1节 】:JPA常用注解

    [hibernate3-摘要]第一节:JPA注解 @Entity            [类声明]        注解为ORM对象 @Table            [类声明]        指定数 ...

  8. 【Spring Data JPA】基于 JpaRepository 增删改查

    文章目录 创建实体类 定义JPA查询接口 增.删.改.查 增加.修改 删除 删除[根据实体类删除] 删除[根据实体类主键删除] 查询 简单查询 查询单个信息[findBy] 查询多个信息[findAl ...

  9. 基于 SpringBoot + jpa + Erupt 后台框架开发的综合签到打卡系统【100010425】

    基于 SpringBoot + jpa + Erupt 后台框架开发的综合签到打卡系统 一 .项目背景及需求分析 用户在可靠验证下实现简化身份确认 在已有用户数据库基础上 传统校验方式: 直接选择 = ...

最新文章

  1. Python从入门到精通 - 入门篇 (下)
  2. 在 Linux 和 Windows 下源码安装 Perl
  3. 内存管理[6]测试堆的内存占用情况
  4. 界面上下固定_基于ANSYS的胶粘结构界面开裂有限元计算
  5. 神舟战神换cpu教程_神舟将十代i5称为“神U出世”?聊聊到底有哪些优势
  6. c语言 自动化编译环境,《C编程.开始C》3.编译基础
  7. LwIP移植到FreeRTOS(STM32F107+DP83848)
  8. java工程师面试题:如何判断链表有环?
  9. Q85:对比“直接光照”和“间接光照”的反射模型
  10. jfinal 模板引擎
  11. 文件管理器android实现,基于Android的文件管理器的设计与实现
  12. EXCEL数据有效性的多级联动
  13. 浏览器下载文件时文件名中文乱码问题
  14. Git 新建分支和Commit Message 规范和最佳实践
  15. 5-大数据分析之 druid 介绍
  16. java一只母牛 一年生头小牛_Java实现:工厂有一头母牛,一年生一头小母牛,小母牛五年后可以生小牛,问20年工厂有多少头牛?...
  17. 计算机视觉中的数学方法——1平面射影几何——1射影平面+2二次曲线
  18. 【以太坊】ubuntu安装以太坊ethereum的测试网络ropsten-net以及雷电网络raiden-network环境
  19. 嵌入式毕设分享 STM32 wifi照明控制系统 - 智能路灯(毕设分享)
  20. 1.51单片机开发环境配置

热门文章

  1. 新一代的数据库备份解决方案--Oracle数据库
  2. cmd中连接雷电模拟器时报错adb device not found
  3. 制造业案例|数据效率提升近90%,敏实借助瓴羊DAAS体系结构加速数字化转型
  4. 【vue】vue + ECharts 实现中国地图
  5. go解析yaml文件示例
  6. SpringBoot整合Flowable工作流引擎框架
  7. 双曲铝单板是怎么生产的?
  8. c语言中chat的使用方法图解,Mechat
  9. java里dialect_java – Hibernate:没有设置方言.设置属性hibernate.dialect
  10. ScriptManager.RegisterStartupScript()方法