首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Spring学习笔记(十七)——SpringDataJpa动态查询和复杂多表操作

Specifications动态查询 有时我们在查询某个实体时候,给定条件是不固定,这时就需要动态构建相应查询语句,在Spring Data JPA中可以通过JpaSpecificationExecutor...包含关系:可以通过实体类中包含关系描述表关系 继承关系 分析步骤 1.明确表关系 2.确定表关系(描述 |中间表) 3.编写实体类,再实体类中描述表关系...属性: name:指定字段名称 referencedColumnName:指定引用主表主键字段名称 unique:是否唯一。...从表:联系人表 * 再从表上添加 3.编写实体类,再实体类中描述表关系(包含关系) 客户:再客户实体类中包含一个联系人集合...属性: name:指定字段名称 referencedColumnName:指定引用主表主键字段名称 unique:是否唯一

3.2K10

Spring全家桶之SpringData——Spring Data JPA

Spring Data JPA 一、介绍 常用注解 实体类中 测试类中 相关术语 二、实战应用 :搭建Spring Data JPA项目 介绍 步骤 1....导入jar 两个核心jar 加上3个sl4jjar 2. 在配置文件中开启Spring Data JPA命名空间以及它约束 3. 在配置文件中添加Spring Data JPA配置 4....创建用户实体 创建角色实体 测试代码 多对多关联操作 创建菜单实体 创建角色实体 创建接口 测试代码 一、介绍 Spring Data JPASpring Data JPAspring data...在配置文件中添加Spring Data JPA配置 <!...一对多关联操作 需求:从角色到用户一对多关联关系 角色:一方 用户:多方(添加) 创建用户实体 需要在添加那一开启级联操作 ,防止数据插入时出现异常 @ManyToOne(cascade

3.7K10
您找到你想要的搜索结果了吗?
是的
没有找到

Spring Data JPA 就是这么简单

当我们项目中使用 spring data jpa 时候,你会发现有时候没有 sql 语句,其实框架底层已经帮我们实现了,我们只需要遵守规范使用就可以了,下面会详细谈到 spring data jpa...spring data jpa常用 jpa 配置 下面所有演示代码均来自我个人 github spring-data-jpa 仓库,仓库地址:https://github.com/kickcodeman...,运行程序我们会发现在 stu 表中新增了一个 class_room_id 。...当一个实体类使用了 mappedBy 属性,表示该类放弃主键维护,该类生成表中不存放和它关联类。...,把学生也保存到数据库当中,但是因为教室类不进行维护,虽然学生类保存成功,但是是失败,因为它们之间关系并没有建立起来,查看学生表新增数据我们会发现新增学生并没有教室存在。

6.8K50

快速学习-Specifications动态查询

第1章 Specifications动态查询 有时我们在查询某个实体时候,给定条件是不固定,这时就需要动态构建相应查询语句,在Spring Data JPA中可以通过JpaSpecificationExecutor...Specification接口中只定义了如下一个方法: //构造查询条件 /** * root :Root接口,代表查询根对象,可以通过root获取实体属性 * query...Data Jpa 内部page bean * 此重载findAll方法为分页方法需要两个参数 * 第一个参数:查询条件Specification * 第二个参数:...分页参数 */ Page page = customerDao.findAll(spec,pageable); } 对于Spring Data JPA分页查询,...是其内部自动实现封装过程,返回是一个Spring Data JPA提供pageBean对象。

1.4K10

Spring整合Hibernate、Hibernate JPASpring Data JPASpring Data Redis

3、Spring Data JPASpring Data JPAspring data 项目下一个模块,提供了一套基于 JPA 标准操作数据库简化方案,底层默认是依赖 Hibernate...3.1)、Spring Data JPA 技术特点:我们只需要定义接口并集成 Spring Data JPA 中所提供接 口就可以了,不需要编写接口实现类。...; 5 6 /** 7 * 使用Spring Data JPA 8 * 9 * JpaRepository泛型参数一是实体名称,参数二是实体主键类型...相同和主键相同 22 // 表示和主键相同,做在角色表里面角色和那个用户之间描述。...Spring Data JPA中有四种Cascade 类型: 1)、PERSIST:持久保存拥有的实体,也会持久保存该实体属于相关数据。

5.2K30

SpringDataJPA 系列之快速入门

1.1 简介 1.1.1 概述   Spring Data JPASpring 基于 ORM 框架、JPA 规范基础上封装一套 JPA 应用框架,可使开发者用极简代码即可实现对数据库访问和操作...它提供了包括增删改查等在内常用功能,且易于扩展!学习并使用 Spring Data JPA 可以极大提高开发效率!...Spring Data JPA 让我们解脱了 DAO 层操作,基本上所有 CRUD 都可以依赖于它来实现,在实际工作工程中,推荐使用 Spring Data JPA + ORM(如:hibernate...SpringDataJPA是 Spring 提供一套对 JPA 操作更加高级封装,是在 JPA 规范下专门用来进行数据持久化解决方案。 ?...> query, CriteriaBuilder cb); 参数说明:  ♞ root:Root 接口,代表查询根对象,可以通过 root 获取实体属性;  ♞ query:代表一个顶层查询对象

1.6K30

Spring-data-jpaspring数据持久层解决规范)详解

大致整理一个提纲:   1、Spring-data-jpa基本介绍;   2、和Spring整合;   3、基本使用方式;   4、复杂查询,包括多表关联,分页,排序等; 现在开始:   1、Spring-data-jpa...这里介绍Spring-data-jpa,表示与jpa整合。   ...下面我们通过一个完整项目来基本使用spring-data-jpa,然后我们在介绍他高级用法。   a.数据库建表:user,主键自增 ?   b.对应实体:User ?...手动配置锁:   spring-data-jpa支持注解方式sql,比如:@Query(xxx),另外,关于锁问题,在实体某个字段配置@Version是乐观锁,有时候为了使用一个悲观锁,或者手动配置一个乐观锁...一对多、多对多查询(查询条件在关联对象中时):   1、在JPA中,一个实体中如果存在多个关联对象,那么不能同时eager获取,只能有一个是eager获取,其他只能lazy;在Hibernate当中有几种独有的解决方法

2.9K20

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

这里不讲解JPASpring-data-jpa单独使用,所有的内容都是在和Spring整合环境中实现。如果需要了解该框架入门,百度一下,很多入门介绍。...这里介绍Spring-data-jpa,表示与jpa整合。   ...在这个时候,Spring-data-jpa威力就体现出来了,ORM提供能力他都提供,ORM框架没有提供业务逻辑功能Spring-data-jpa也提供,全方位解决用户需求。...手动配置锁:   spring-data-jpa支持注解方式sql,比如:@Query(xxx),另外,关于锁问题,在实体某个字段配置@Version是乐观锁,有时候为了使用一个悲观锁,或者手动配置一个乐观锁...一对多、多对多查询(查询条件在关联对象中时):   1、在JPA中,一个实体中如果存在多个关联对象,那么不能同时eager获取,只能有一个是eager获取,其他只能lazy;在Hibernate当中有几种独有的解决方法

1.8K10

Spring-data-JPA详细介绍,增删改查实现「建议收藏」

这里不讲解JPASpring-data-jpa单独使用,所有的内容都是在和Spring整合环境中实现。如果需要了解该框架入门,百度一下,很多入门介绍。...这里介绍Spring-data-jpa,表示与jpa整合。   ...在这个时候,Spring-data-jpa威力就体现出来了,ORM提供能力他都提供,ORM框架没有提供业务逻辑功能Spring-data-jpa也提供,全方位解决用户需求。...手动配置锁:   spring-data-jpa支持注解方式sql,比如:@Query(xxx),另外,关于锁问题,在实体某个字段配置@Version是乐观锁,有时候为了使用一个悲观锁,或者手动配置一个乐观锁...一对多、多对多查询(查询条件在关联对象中时):   1、在JPA中,一个实体中如果存在多个关联对象,那么不能同时eager获取,只能有一个是eager获取,其他只能lazy;在Hibernate当中有几种独有的解决方法

2.1K30

Spring Boot第八章-Spring Data JPA(续)

目录 1.jpa自定义sql查询 2.jpa更新 3.jpa删除 4.一些常用注解理解 5.自定义查询简单实例: 6.JPA 关联表自定义动态查询 ---- 上一个博客介绍了Spring Data JPA...如果缺省@Table注释,系统默认采用类名作为映射表表名。实体Bean每个实例代表数据表中一行数据,行中一列对应实例中一个属性。...@Id注释指定表主键,它可以有多种生成方式: 1)TABLE:容器指定用底层数据表确保唯一; 2)SEQUENCE:使用数据库德SEQUENCE列莱保证唯一(Oracle数据库通过序列来生成唯一ID...); 3)IDENTITY:使用数据库IDENTITY列莱保证唯一; 4)AUTO:由容器挑选一个合适方式来保证唯一; 5)NONE:容器不负责主键生成,由程序来完成。...; import org.springframework.data.domain.Sort; import org.springframework.data.jpa.domain.Specification

1.4K20

Spring Boot整合Spring Data JPA

1、Spring DataSpring提供帮助操作数据框架,Spring Data一个模块叫做Spring Data JPASpring Data JPA只是Spring Data框架下一个基于...JPA标准操作数据模块,Spring Data JPA底层默认使用是Hibernate来做JPA实现。...和主键相同 21 // 表示和主键相同,做在角色表里面角色和那个用户之间描述。...= "roles") //表示一对多关系,mappedBy表示向Set集合放Users,放是当前roles相同和主键相同 22 // 表示和主键相同,做在角色表里面角色和那个用户之间描述...,表示菜单和角色是多对多关系 27 // joinColumns当前表中主键所关联中间中字段. 28 // inverseJoinColumns那一侧中间名称叫什么

3.6K30

Spring Boot 之 Spring Data JPA 三(Specifications)一、首先建立一个Spring Boot 工程二、编写一个实体类来记录数据三、通过接口实现Specifica

一、首先建立一个Spring Boot 工程 我们使用IDE是InteliJ IDEA,开发语言是Kotlin, ?...项目信息 Spring 工程特性选择了JPA、Rest Repository和一种数据库支持(这里是MySql) ?...项目工程特性 新建项目没有什么可说,接下来我们正式进入编码: 二、编写一个实体类来记录数据 我们使用一个Record实体来保存数据,包含了名称和值,代码如下: package cn.techcave.demo.jpa3...org.springframework.data.jpa.repository.JpaRepository import org.springframework.data.jpa.repository.JpaSpecificationExecutor...import org.springframework.data.jpa.domain.Specifications.where import javax.persistence.criteria.CriteriaQuery

1.4K50

高级框架-springDate-JPA 第二天【悟空教程】

在数据库中建立一对多关系,需要使用数据库约束。 什么是? 指的是从表中有一列,取值参照主表主键,这一列就是。 一对多数据库关系建立,如下图所示 ?...属性: name:指定字段名称 referencedColumnName:指定引用主表主键字段名称 unique:是否唯一。默认值不唯一 nullable:是否允许为空。...:中间表字段关联对方表主键字段 5.4.3 @JoinColumn 作用: 用于定义主键字段和字段对应关系。...属性: name:指定字段名称 referencedColumnName:指定引用主表主键字段名称 unique:是否唯一。默认值不唯一 nullable:是否允许为空。...CriteriaQuery cq = cb.createQuery(Customer.class); //6.获取实体类对象封装对象,有此对象之后,所有实体类都可以看成此类型

2.5K10
领券