Java|Java jpa外连接查询join案例详解
1、IndexTagController.java
@GetMapping("/tags/{id}")public String types(@PageableDefault(size = 3,sort = {"updateTime"},direction = Sort.Direction.DESC)Pageable pageable,@PathVariable long id,Model model,HttpSession session){//找到所有的标签,并且按照标签新闻量排序Listtags = tagService.listTagTop(50); if(id == -1){//得到最大数据量的分类id = tags.get(0).getId(); }model.addAttribute("tags",tags); model.addAttribute("page",newsService.listNews(id,pageable)); model.addAttribute("activeId",id); session.setAttribute("query",""); return "tags"; }
newService.listNews(id,pgeable)中id为标签的id,这个方法要做的就是查询出标签中包含id为参数id的所有新闻。
2、业务层代码
NewService.java是一个接口,其中存在以下方法
//根据标签Id查找符合条件的新闻PagelistNews(long id,Pageable pageable);
NewServiceImpl.java为实现NewService接口的类,实现listNews方法
@Overridepublic PagelistNews(long id, Pageable pageable) {return newsRepository.findAll(new Specification() {@Overridepublic Predicate toPredicate(Root root, CriteriaQuery cq, CriteriaBuilder cb) {//外连接查询 JoinJoin join =root.join("tags"); return cb.equal(join.get("id"),id); }},pageable); }
NewsRepository.java 继承了JpaSpecificationExecutor
public interface NewsRepository extends JpaRepository, JpaSpecificationExecutor {@Query("select n from News n where n.recommend = true ")List findTop(Pageable pageable); @Query("select n from News n where n.title like ?1 or n.content like ?1")Page findByQuery(String query,Pageable pageable); @Query("select function('date_format',n.updateTime,'%Y') as year1 from News n group by year1 order by year1 desc ")List findGroupYear(); @Query("select n from News n where function('date_format',n.updateTime,'%Y') = ?1 ")List findByYear(String year); }
【Java|Java jpa外连接查询join案例详解】到此这篇关于Java jpa外连接查询join案例详解的文章就介绍到这了,更多相关Java jpa外连接查询join内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- 一粒饥饿不堪的米
- 生活随笔|好天气下的意外之喜
- 四首关于旅行记忆的外文歌曲
- 事件代理
- Java|Java OpenCV图像处理之SIFT角点检测详解
- java中如何实现重建二叉树
- 抱着梦的无眠
- 数组常用方法一
- 【Hadoop踩雷】Mac下安装Hadoop3以及Java版本问题