springboot jpa 关联数据?

Springdata:其实就是spring提供的一个操作数据的框架,让我们在使用关系型数据库和非关系型数据库时提供统一的标准,标准(crud,排序,分页等)。而spring data jpa只是springdata框架下的一个基于jpa标准操作数据的一个模块

spring data jpa:基于JPA的标准对数据进行操作的方式,简化持久层的代码,编写接口。

当然,因为是在SpringBoot中对数据库操作,我们也需要SpringBoot、Thymeleaf、MySQL驱动、数据库连接池的依赖,还因为测试,在加上Test的依赖

现在的实体类,和原来的,大有不同

所用的注解的作用和导入的是哪个包的,图中都有。

基于方法名称命名规则的查询

规则:findBy(关键字)+属性名称(属性名称的首字母大写)+查询条件(首字母大写)

此接口的泛型类型的解释

参数一:表示当前需要映射的实体类,   

参数二:当前映射实体类里的id的数据类型。

在Test类中调用方法,为了看清楚,我在写一个list中,用null分割

OK,可以看到正常运行。

基于@Query注解的查询

  1. JPQL和SQL很像,查询关键字都是一样的

  2. 唯一的区别,JPQL是面向对象的

    1. 里面不能出现表明,列名,只能出现Java的类名,属性名

    2. 出现的sql关键字是一样的意思

CrudRepository接口,主要是完成一些增删改查的操作,同时,他继承了Repository接口。

在Test方法完成增删改查的操作

因为我设置了id自增,所以可以写null。findAll需要强转。删除方法返回值是void。save返回值是传进去的对象。

例子就是这样了,可以根据单字段排序,多字段排序,单纯的分页,分页和排序一起用,在设置分页规则是参数的填写方式,根据分页规则查询数据的返回值类型,以及如何使用分页规则的返回值来获取数据集合。

这个接口,继承了PagingAndSortingRepository接口,换句话说,他继承所以,而且还优化了,比如在查询全部数据的时候就不需要强转了。

结束,例子上面都讲过了。

JpaSpecificationExecutor接口是单独存在的,完全独立,该接口也提供了查询,分页,排序

可以看到,同时继承了两个接口。在看看Test方法

注释都写里面了,可以了解下,不过估计用的不多,所谓的查询条件是方法指的是,cb里以及集成好了。

先说明一下用到的新东西

需求:学生和账号的一对一的关联关系(一个学生有一个账号)

需求:学生和班级的一对多的关联关系(一个班级有多个学生)

stus是Student对象,cla是Student类中对应的外键属性名,因为是一对多,一个班级有多个学生,所以需要使用集合来存放学生对象。

切记,现在不能直接输出对象,因为现在两个类之间是相互包含的,会无限制的递归。

  1. 多对多关系中一般不设置级联操作

需求:学生和教师的多对多的关联关系(一个学生有多个教师,一个教师有多个学生)

teas是Teacher对象集合,stu_tea是中间表的表名,stuid是当前表在中间表的外键字段, teaid是被维护端的外键字段

没有例子,就算有,也一样的用。

也许,我应该将关联映射写到下一篇?

我要回帖

更多关于 springboot page 的文章

 

随机推荐