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

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

Specifications动态查询 有时我们在查询某个实体的时候,给定的条件是不固定的,这时就需要动态构建相应的查询语句,在Spring Data JPA中可以通过JpaSpecificationExecutor...> criteriaQuery, CriteriaBuilder criteriaBuilder) { //1....*/ Pageable pageable = new PageRequest(0, 5); /** * 分页查询,封装为Spring Data Jpa...客户:再客户的实体类中包含一个联系人的集合 联系人:在联系人的实体类中包含一个客户的对象 4.配置映射关系 * 使用jpa...用户:包含角色的集合 角色:包含用户的集合 4.配置映射关系 多对多操作案例 多对多保存操作(放弃维护权) 级联添加操作 级联删除操作 映射的注解说明 * @ManyToMany

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

Spring Data JPA 就是这么简单

一对多的关系,jpa 使用的注解是 @OneToMany 多对一的关系,jpa 使用的注解是 @ManyToOne 多对多的关系,jpa 使用的注解是 @ManyToMany 在使用 jpa 的时候,...分析 Specification Specification 是一个函数式接口,里面有一个抽象的方法: Predicate toPredicate(Root var1, CriteriaQuery...> var2, CriteriaBuilder var3); 实现该方法我们不需要弄清楚 Predicate , Root , CriteriaQuery 和 CriteriaBuilder 四个类的使用规则...等等 CriteriaQuery 可以用来构建整个 sql 语句,可以指定sql 语句中的 select 后的查询字段,也可以拼接 where , groupby 和 having 等复杂语句。...subject") String subject) { //实例化 Specification 类 Specification specification = ((root, criteriaQuery

6.8K50

详解Jpa动态复杂条件查询,查询指定字段、并包括sum、count、avg等数学运算,包括groupBy分组

Jpa是我一直推荐在Springboot及微服务项目中使用的数据库框架,并由于官方的并不是十分友好和易用的api,导致很多人使用起来并不方便,下面就来展示一下我对api进行了封装后的代码。...MySpecification就是封装好的工具类,能够大幅简化jpa构建条件查询的操作。...详细解析 何为Specification 还是回到Jpa的这个接口,可以看到,要完成一次查询,主要的工作就是构建Specification,而Specification接口中,主要就是一个方法即toPredicate...里面的root,CriteriaQuery和builder都已经被Jpa赋值好了,我们只需要关注Predicate的构建,也就是说,这个findAll方法只能完成where条件的构建,而不能实现select...jpa怎么给root什么的赋值的呢,其实是这样的,Jpa是一种规范,Hibernate、OpenJPA对其进行了实现,譬如Springboot默认使用Hibernate实现Jpa,也就是上一小节提到的EntityManager

3.9K20

详解Jpa动态复杂条件查询,查询指定字段、并包括sum、count、avg等数学运算

Jpa是我一直推荐在Springboot及微服务项目中使用的数据库框架,并由于官方的并不是十分友好和易用的api,导致很多人使用起来并不方便,下面就来展示一下我对api进行了封装后的代码。...MySpecification就是封装好的工具类,能够大幅简化jpa构建条件查询的操作。...详细解析 何为Specification 还是回到Jpa的这个接口,可以看到,要完成一次查询,主要的工作就是构建Specification,而Specification接口中,主要就是一个方法即toPredicate...里面的root,CriteriaQuery和builder都已经被Jpa赋值好了,我们只需要关注Predicate的构建,也就是说,这个findAll方法只能完成where条件的构建,而不能实现select...jpa怎么给root什么的赋值的呢,其实是这样的,Jpa是一种规范,Hibernate、OpenJPA对其进行了实现,譬如Springboot默认使用Hibernate实现Jpa,也就是上一小节提到的EntityManager

17.6K94
领券