springdata多表查询entity怎么写
答案:1 悬赏:0 手机版
解决时间 2021-03-21 16:30
- 提问者网友:杀手的诗
- 2021-03-20 16:11
springdata多表查询entity怎么写
最佳答案
- 五星知识达人网友:神鬼未生
- 2021-03-20 17:20
springdata查询多表可以这么写
1: 编写DAO类或接口
dao类/接口 需继承
[java] view plain copy
public interface JpaSpecificationExecutor
接口;
如果需要分页,还可继承
[java] view plain copy
public interface PagingAndSortingRepository extends CrudRepository
接口。
2.
[java] view plain copy
public interface JpaSpecificationExecutor
接口具有
[java] view plain copy
Page findAll(Specification spec, Pageable pageable); //分页按条件查询
List findAll(Specification spec); //不分页按条件查询
方法。 我们可以在Service层调用这两个方法。
两个方法都具有 Specification spec 参数,用于设定查询条件。
Service 分页+多条件查询 调用示例:
[java] view plain copy
studentInfoDao.findAll(new Specification () {
public Predicate toPredicate(Root root,
CriteriaQuery> query, CriteriaBuilder cb) {
Path namePath = root.get("name");
Path nicknamePath = root.get("nickname");
query.where(cb.like(namePath, "%李%"), cb.like(nicknamePath, "%王%")); //这里可以设置任意条查询条件
return null;
}
}, page);
}
这里通过CriteriaBuilder 的like方法创建了两个查询条件, 姓名(name)字段必须包含“李”, 昵称(nickname)字段必须包含“王”。
然后通过
[java] view plain copy
CriteriaQuery where(Predicate... restrictions);
连接多个查询条件即可。 这种方式使用JPA的API设置了查询条件,所以不需要再返回查询条件Predicate给Spring Data Jpa,故最后return null;即可。
1: 编写DAO类或接口
dao类/接口 需继承
[java] view plain copy
public interface JpaSpecificationExecutor
接口;
如果需要分页,还可继承
[java] view plain copy
public interface PagingAndSortingRepository
接口。
2.
[java] view plain copy
public interface JpaSpecificationExecutor
接口具有
[java] view plain copy
Page
List
方法。 我们可以在Service层调用这两个方法。
两个方法都具有 Specification
Service 分页+多条件查询 调用示例:
[java] view plain copy
studentInfoDao.findAll(new Specification
public Predicate toPredicate(Root
CriteriaQuery> query, CriteriaBuilder cb) {
Path
Path
query.where(cb.like(namePath, "%李%"), cb.like(nicknamePath, "%王%")); //这里可以设置任意条查询条件
return null;
}
}, page);
}
这里通过CriteriaBuilder 的like方法创建了两个查询条件, 姓名(name)字段必须包含“李”, 昵称(nickname)字段必须包含“王”。
然后通过
[java] view plain copy
CriteriaQuery
连接多个查询条件即可。 这种方式使用JPA的API设置了查询条件,所以不需要再返回查询条件Predicate给Spring Data Jpa,故最后return null;即可。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯