经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » Java相关 » Java » 查看文章
Java jpa外连接查询join案例详解
来源:jb51  时间:2021/9/6 13:21:13  对本文有异议

1、IndexTagController.java

  1. @GetMapping("/tags/{id}")
  2. public String types(@PageableDefault(size = 3,sort = {"updateTime"},direction = Sort.Direction.DESC)Pageable pageable,
  3. @PathVariable long id,
  4. Model model,
  5. HttpSession session){
  6. //找到所有的标签,并且按照标签新闻量排序
  7. List<Tag> tags = tagService.listTagTop(50);
  8. if(id == -1){
  9. //得到最大数据量的分类
  10. id = tags.get(0).getId();
  11. }
  12.  
  13. model.addAttribute("tags",tags);
  14. model.addAttribute("page",newsService.listNews(id,pageable));
  15. model.addAttribute("activeId",id);
  16. session.setAttribute("query","");
  17. return "tags";
  18. }

newService.listNews(id,pgeable)中id为标签的id,这个方法要做的就是查询出标签中包含id为参数id的所有新闻。

2、业务层代码

NewService.java是一个接口,其中存在以下方法

  1. //根据标签Id查找符合条件的新闻
  2. Page<News> listNews(long id,Pageable pageable);

NewServiceImpl.java为实现NewService接口的类,实现listNews方法

  1. @Override
  2. public Page<News> listNews(long id, Pageable pageable) {
  3. return newsRepository.findAll(new Specification() {
  4. @Override
  5. public Predicate toPredicate(Root root, CriteriaQuery cq, CriteriaBuilder cb) {
  6. //外连接查询 Join
  7. Join join =root.join("tags");
  8. return cb.equal(join.get("id"),id);
  9. }
  10. },pageable);
  11.  
  12. }

NewsRepository.java 继承了JpaSpecificationExecutor

  1. public interface NewsRepository extends JpaRepository<News,Long>, JpaSpecificationExecutor {
  2.  
  3. @Query("select n from News n where n.recommend = true ")
  4. List<News> findTop(Pageable pageable);
  5.  
  6.  
  7. @Query("select n from News n where n.title like ?1 or n.content like ?1")
  8. Page<News> findByQuery(String query,Pageable pageable);
  9.  
  10. @Query("select function('date_format',n.updateTime,'%Y') as year1 from News n group by year1 order by year1 desc ")
  11. List<String> findGroupYear();
  12.  
  13. @Query("select n from News n where function('date_format',n.updateTime,'%Y') = ?1 ")
  14. List<News> findByYear(String year);
  15.  
  16. }

到此这篇关于Java jpa外连接查询join案例详解的文章就介绍到这了,更多相关Java jpa外连接查询join内容请搜索w3xue以前的文章或继续浏览下面的相关文章希望大家以后多多支持w3xue!

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号