1:创建一个父表,主键作为子表的外键: 1 create table province( 2 pId int primary key auto_increment, 3 pName varchar...(20) 4 ); 2:创建子表,外键是父表的主键: 1 create table user( 2 userId int primary key auto_increment, 3 userName varchar...(40), 4 pid int, 5 foreign key(pid) references province(pId) 6 ); 给一张表添加外键,即给子表的外键添加主键的规则: 在子表声明一个字段pid...int,用于作为子表的外键,foreign key(子表的外键字段) references 父表的表名(父表的主键的字段名); 3:当创建好数据表时添加外键约束: alter table user add...foreign key(pid) references province(pId); alter table 子表的数据表名 add foreign key(子表的外键名称) references 父表的数据表名称
SET FOREIGN_KEY_CHECKS=0; 删除,更新数据, 恢复外键 SET FOREIGN_KEY_CHECKS=1; 另:查看当前 FOREIGN_KEY_CHECKS的值 SELECT
1、前言 Spring Data JPA 是 Spring 基于 ORM 框架、JPA 规范的基础上封装的一套 JPA 应用框架,底层使用了 Hibernate 的 JPA 技术实现,可使开发者用极简的代码即可实现对数据的访问和操作...Spring Data Common 是 Spring Data 所有模块的公共部分,该项目提供了基于 Spring 的共享基础设施,它提供了基于 repository 接口以 DB 操作的一些封装,以及一个坚持在...Spring Data和JPA的结构关系: ?...Boot Starter Data JPA 依赖 Spring Data JPA;而 Spring Data JPA 依赖 Spring Data Commons。...,用来注解该类是一个实体类用来进行和数据库中的表建立关联关系,首次启动项目的时候,默认会在数据中生成一个同实体类相同名字的表(table),也可以通过注解中的 name 属性来修改表(table)名称,
目录 1 表的约束 约束,是对表中的数据进行限定,保证数据的正确性、有效性和完整性,约束分为以下几类: 主键约束:primary key 非空约束:not null 唯一约束:unique 外键约束:foreign...主键约束:primary key 1)注意: 若某一列添加了该约束,则代表了非空,且唯一; 一张表只能有一个字段为主键; 主键就是表中记录的唯一标识; 2)创建表时添加主键约束 CREATE TABLE...以上仍然存在一个问题,当在员工表中输入不存的部门时,数据依然可以添加,不符合实际,因此,这里就可以通过使用外键约束来解决。 【概念】什么是外键约束?...外键,就是从表中与主表主键对应的那一列,如:员工表中的dep_id,其中,主表是一方,用来约束别人的表,从表可以是多方,被别人约束的表。 注意:外键可以为NULL,但是不能是不存在的外键值。 ?...id,同时希望自动改动员工表中的id,这时就需要进行级联操作,需要在添加外键的时候设置级联: 添加级联操作:ALTER TABLE 表名称 ADD CONSTRAINT 外键名称 FOREIGN KEY
所以,这篇文章将带领你全面了解如何解决这个问题,以及相关的背景知识。 正文 1. 什么是 SQLGrammarException?...= null ) 2.2 数据库约束冲突 违反主键、唯一键、外键等约束可能导致无法插入或更新记录,进而产生 SQLGrammarException 异常。...解决方案: 确保数据库中的表具有正确的主键和外键约束。 插入或更新数据时,确保满足表的约束条件。...A:可以在 application.properties 中添加以下配置来启用 SQL 日志: spring.jpa.show-sql=true spring.jpa.properties.hibernate.format_sql...参考资料 Spring Data JPA 官方文档 Hibernate 官方文档 Stack Overflow 相关问题解答 总结与未来展望 数据库交互总是有挑战的,尤其是当使用 ORM 框架时。
当然本文并不是捧吹 spring data jpa , 另一个数据库层的框架 mybatis 也是十分优秀的框架,该框架是专注 sql 语句的,后续也会努力讲一讲同样优秀的mybatis ,有兴趣的关注一下...类映射到数据库表的常用注解分析 spring data jpa 提供了很多注解,下面我们把日常常用注解总结如下: @Entity 是一个类注解,用来注解该类是一个实体类用来进行和数据库中的表建立关联关系...大致总结继承这块有这样三种情况: 多类一表:多个类之间的属性相同,唯一的区别就是类型上的差异(类名不同),这个时候我们可以为这个共同属性的类建立一个父类,只让父类应射到数据库。...,运行程序我们会发现在 stu 表中新增了一个 class_room_id 的外键。...,把学生也保存到数据库当中,但是因为教室类不进行外键的维护,虽然学生类保存成功,但是是失败的,因为它们之间的关系并没有建立起来,查看学生表的新增数据我们会发现新增的学生并没有教室的外键存在。
同时也给出了SpringData JPA与MyBatis的选择判断依据。 那么,如果你已经决定使用Spring Data JPA来作为项目中DB操作的框架,具体应该如何去做呢?...本篇以SpringBoot项目为基准,一起探讨下集成Spring Data JPA的相关要点,带你快速上手Spring Data JPA,并用实例演示常见的DB操作场景,让你分分钟轻松玩转JPA。...SpringData JPA正是通过各种注解,来完成对各个字段的定义与行为约束,以及完成表间关联关系(比如外键)。 常见的一些注解以及含义功能说明,在本文的末尾表格里面进行了梳理,此处不赘述。...创建出来,并且相关约束条件(比如自增主键、关联外键之类的)也会一并创建并设置上去,如下示意,左侧的代码自动创建出右侧DB中的表结构: 补充说明: 虽然这个功能比较方便,但是强烈建议在生产环境上关闭此功能...跟着本篇内容,可以让你顺利地完成SpringBoot项目与JPA的集成配置,以及对项目中如何使用JPA进行代码开发有了个整体的感知,可以应付大部分场景的基础业务代码开发诉求。
很多朋友一提到spring,首先想到的肯定是IOC(控制反转)和 AOP (面向切面编程),没错,这两个是spring的核心功能。...但是什么技术让spring拥有如此强大的扩展能力, 答案是:BeanFactoryPostProcessor和BeanPostProcessor 。...---- 下面我从如下几方面介绍一下: 什么是BeanFactoryPostProcessor 如何自定义BeanFactoryPostProcessor 什么是BeanPostProcessor 如何自定义...5.BeanFactoryPostProcessor和BeanPostProcessor的区别 BeanFactoryPostProcessor是在spring容器实例化bean之前读取bean的定义...BeanPostProcessor是在spring容器实例化bean之后,在执行bean的初始化方法前后,添加一些自己的处理逻辑。
本文将通过详尽的讲解,带你深入了解如何在 Spring Data JPA 中进行多表操作。1....Spring Data JPA 简介Spring Data JPA 是 Spring 框架中的一个子项目,旨在简化 JPA(Java Persistence API)的使用。...理解这些关系,并掌握如何在 Spring Data JPA 中实现这些关系的操作,是我们进行复杂数据操作的基础。3. 一对一关系的实现一对一关系是最简单的一种关系。...一对多关系的实现一对多关系是指一个表中的一条记录可以对应另一个表中的多条记录。在 Spring Data JPA 中,我们可以通过 @OneToMany 和 @ManyToOne 注解来实现这种关系。...多对多关系的实现多对多关系是指两个表之间存在多对多的关联关系。在 Spring Data JPA 中,我们可以通过 @ManyToMany 注解来实现这种关系。
让dao接口继承 JpaRepository接口 5 进行测试 三、Spring Data JPA 的接口继承结构 四、Spring Data JPA 的运行原理 五、Repository接口 基于方法名称命名规则查询...创建用户实体 创建角色实体 测试代码 多对多的关联操作 创建菜单实体 创建角色实体 创建接口 测试代码 一、介绍 Spring Data JPA:Spring Data JPA 是spring data...: 当前表主键所关联的中间表中的外键字段inverseJoinColumns :建立另一张表在中间表中的外键字段 举例: @JoinTable(name=“t_roles_menus”,joinColumns...ID的对象; 二、实战应用 :搭建Spring Data JPA项目 介绍 Spring Data JPA 实现无需在dao层实现类书写代码即可实现对数据库的操作 使用的查询语言是 HQL语言...:建立当前表在中间表中的外键字段 //inverseJoinColumns :建立另一张表在中间表中的外键字段 @JoinTable(name="t_roles_menus",joinColumns
* 注解配置多对一关系 * 1.配置表关系,@ManyToOne,targetEntity对方实体类的字节码 * 2.配置外键(多对多使用中间表), * 配置外键的过程...--spring 和 spring data jpa的配置--> <!...,查看执行的SQL,相比上一次测试多了一条update外键的sql语句 查看数据库表,外键已更新,关联关系已经建立 在One2ManyTest中在增加testSave1() // 只配置联系人到客户的关系...,查看执行的SQL语句,没有执行update语句,外键在insert的时候就已经建立 查看数据库表,外键存在,关联关系建立成功 在One2ManyTest中增加testSave2(),在linkMan...中set customer也可以建立两者之间的关系,后台执行了4条SQL语句,因此可以看出在一对多关系中一的一边建立外键维护关系可以执行较少的SQL语句而完成外键关系的建立,而多的一方无需拥有外键关系的维护
注解 @SpringBootApplication:申明让spring boot自动给程序进行必要的配置,这个配置等同于:@Configuration ,@EnableAutoConfiguration...其中 @ComponentScan:让spring Boot扫描到Configuration类并把它加入到程序上下文。...@JsonBackReference:解决嵌套外链问题。 @RepositoryRestResourcepublic:配合spring-boot-starter-data-rest使用。...一般用于jpa这两个注解一般一块使用,但是如果表名和实体类名相同的话,@Table可以省略 @MappedSuperClass:用在确定是父类的entity上。父类的属性子类可以继承。...@JoinColumn(name=”loginId”):一对一本表中指向另一个表的外键。一对多:另一个表指向本表的外键。
JPA(Hibernate是jpa的实现) jpa是对实体类操作,从而通过封装好的接口直接设置数据库的表结构。...>spring-boot-starter-data-jpa 设置配置yaml spring: jpa: #开启SQL语句执行日志信息...@JoinColumn(name = "tid") //存储教师ID的字段,和一对一是一样的,也会在当前表中创个外键tid,对应Teacher表的主键 Teacher teacher; //执行的代码...//注意此操作,最后只会在该表多一个字段,和一个中间表,不会在另一个表中多一个字段。...,并在当前表中创建tid字段作为外键连接关联表的tid ) List teacher; 接着,JPA会自动创建一张中间表,并自动设置外键,我们就可以将多对多关联信息编写在其中了。
theme: smartblue Hello,大家好,这里是翊君@周一通勤电台频道。 0.阅读完本文你将会学会 如何在Spring项目中引入Spring Data JPA 1....概述 这篇文章将重点介绍如何在Spring项目中引入Spring Data JPA,并全面配置持久化层。...现在DAO的接口是我们唯一需要明确定义的组件。 为了开始利用JPA的Spring Data编程模型,一个DAO接口需要扩展JPA特定的Repository接口JpaRepository。...除了已经讨论过的配置外,如果我们使用XML,我们还需要包括Spring Data XML配置。...除了Maven对JPA的配置外,我们还需要添加spring-data-jpa依赖。
其中@ComponentScan让spring Boot扫描到Configuration类并把它加入到程序上下文。...@JsonBackReference 解决嵌套外链问题。 @RepositoryRestResourcepublic 配合spring-boot-starter-data-rest使用。...一般用于jpa这两个注解一般一块使用,但是如果表名和实体类名相同的话,@Table可以省略 @MappedSuperClass: 用在确定是父类的entity上。父类的属性子类可以继承。...@JoinColumn(name=”loginId”): 一对一:本表中指向另一个表的外键。一对多:另一个表指向本表的外键。...该注解有六个属性: params:指定request中必须包含某些参数值是,才让该方法处理。 headers:指定request中必须包含某些指定的header值,才能让该方法处理请求。
是Spring Boot自动配置机制的核心注解之一。...Spring基础注解 @Conditional:是Spring Boot中大量使用的注解之一,它可以根据是否满足某一个特定条件来决定是否加载指定的Bean。...JPA注解 @Entity:表明这是一个实体类,比如实体类UserEntity,默认对应数据库中的表名是user_entity。...@Column:用来标识实体类中属性与数据表中字段的对应关系,如果字段名与列名相同,则可以省略。 @Id:表示该属性为主键。 @GeneratedValue:为实体生成唯一标识的主键提供生成策略。...@JoinColumn:用来指定与所操作实体或实体集合相关联的数据库表中的列字段。一对一,本表中指向另一个表的外键;一对多,另一个表指向本表的外键。
Spring Data JPA 开始。...这里为了演示多对一的关联,我们还会定义一个Author(作者信息)实体,书籍和实体通过一个外键(author_id)关联。...,用于指定其关联的一个外键。...@MappedSuperClass 是必须的,目的是为了让子类定义的表能拥有继承的字段(列) 审计功能的“魔力”在于,添加了这些继承字段之后,对象在创建、更新时会自动刷新这几个字段,这些是由框架完成的,...我们知道,JPA 定义了一套的 API 来帮助我们实现灵活的查询,通过EntityManager 可以实现各种灵活的组合查询。 那么在 Spring Data JPA 框架中该如何实现呢?
其中@ComponentScan:让spring Boot扫描到Configuration类并把它加入到程序上下文。...@JsonBackReference:解决嵌套外链问题。 @RepositoryRestResource:配合spring-boot-starter-data-rest使用。...@JoinColumn(name=”loginId”):一对一:本表中指向另一个表的外键。一对多:另一个表指向本表的外键。...具体如下: (1) name属性:name属性定义了被标注字段在数据库表中所对应字段的名称 (2) unique属性:unique属性表示该字段是否为唯一标识,默认为false,如果表中有一个字段需要唯一标识...(6) insertable和updateable属性:一般多用于只读的属性,例如主键和外键等,这些字段通常是自动生成的 (7) columnDefinition属性:columnDefinition
其中 @ComponentScan:让spring Boot扫描到Configuration类并把它加入到程序上下文。...@JsonBackReference:解决嵌套外链问题。 @RepositoryRestResourcepublic:配合spring-boot-starter-data-rest使用。...@JoinColumn(name=”loginId”):一对一:本表中指向另一个表的外键。一对多:另一个表指向本表的外键。...具体如下: name属性:name属性定义了被标注字段在数据库表中所对应字段的名称 unique属性:unique属性表示该字段是否为唯一标识,默认为false,如果表中有一个字段需要唯一标识,则既可以使用该标记...和updateable属性:一般多用于只读的属性,例如主键和外键等,这些字段通常是自动生成的 columnDefinition属性:columnDefinition属性表示创建表时,该字段创建的SQL
领取专属 10元无门槛券
手把手带您无忧上云