Java jpa外连接查询join案例详解

 更新时间:2021年09月06日 11:35:48   作者:sfidjg  
这篇文章主要介绍了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){
        //找到所有的标签,并且按照标签新闻量排序
        List<Tag> tags = 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查找符合条件的新闻
Page<News> listNews(long id,Pageable pageable);

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

@Override
    public Page<News> listNews(long id, Pageable pageable) {
        return newsRepository.findAll(new Specification() {
            @Override
            public Predicate toPredicate(Root root, CriteriaQuery cq, CriteriaBuilder cb) {
                //外连接查询 Join
                Join join =root.join("tags");
                return cb.equal(join.get("id"),id);
            }
        },pageable);

    }

NewsRepository.java 继承了JpaSpecificationExecutor

public interface NewsRepository extends JpaRepository<News,Long>, JpaSpecificationExecutor {

    @Query("select n from News n where n.recommend = true ")
    List<News> findTop(Pageable pageable);


    @Query("select n from News n where n.title like ?1 or n.content like ?1")
    Page<News> 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<String> findGroupYear();

    @Query("select n from News n where function('date_format',n.updateTime,'%Y') = ?1 ")
    List<News> findByYear(String year);

}

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

相关文章

  • Java解决程序包不存在的问题解决

    Java解决程序包不存在的问题解决

    在Java编程中,我们可以使用Maven或Gradle等构建工具来管理依赖库,本文主要介绍了Java解决程序包不存在的问题解决,具有一定的参考价值,感兴趣的可以了解 一下
    2023-12-12
  • Java设计模式中的单一责任原则详解

    Java设计模式中的单一责任原则详解

    这篇文章主要介绍了Java设计模式中的单一责任原则详解,应该有且仅有一个原因引起类的变更,即单一指责原则要求一个借口或类只有一个原因引起变化,也就是一个接口或类只有一个职责,它就负责一件事情,需要的朋友可以参考下
    2023-11-11
  • Java中Spring MVC接收表单数据的常用方法

    Java中Spring MVC接收表单数据的常用方法

    Spring MVC是Spring框架中的一个模块,用于开发基于MVC(Model-View-Controller)架构的Web应用程序,它提供了一种轻量级的、灵活的方式来构建Web应用,同时提供了丰富的功能和特性,本文给大家介绍了Spring MVC接收表单数据的方法,需要的朋友可以参考下
    2024-05-05
  • 浅析Java验证码生成库JCaptcha

    浅析Java验证码生成库JCaptcha

    JCaptcha 是一个用来生成验证码的开源Java类库,使用起来也是非常的简单方便。本文通过代码实例介绍了JCaptcha类库。
    2016-07-07
  • Springboot项目编写测试单元完整步骤记录

    Springboot项目编写测试单元完整步骤记录

    这篇文章主要介绍了如何使用JUnit编写Spring Boot项目中的测试单元,包括引入依赖、配置文件设置、启动文件创建以及编写测试类的步骤,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-03-03
  • Java 注解的使用实例详解

    Java 注解的使用实例详解

    这篇文章主要介绍了Java 注解的使用实例详解的相关资料,需要的朋友可以参考下
    2016-12-12
  • Java基础入门之switch怎么使用枚举

    Java基础入门之switch怎么使用枚举

    在Java开发中,switch语句是一种常用的流控制语句,而当使用枚举类型作为条件时,我们常常会遇到报错问题,那么该如何解决呢,下面就来详细讲讲
    2023-06-06
  • 详解Mybatis中的CRUD

    详解Mybatis中的CRUD

    这篇文章主要介绍了Mybatis中的CRUD的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • Java字符串编码解码性能提升的技巧分享

    Java字符串编码解码性能提升的技巧分享

    这篇文章主要是和大家分享几个Java中提升字符串编码解码性能的小技巧,文中的示例代码讲解详细,对我们学习有一定的帮助,需要的可以参考一下
    2022-05-05
  • SpringBoot使用freemarker导出word文件方法详解

    SpringBoot使用freemarker导出word文件方法详解

    这篇文章主要介绍了SpringBoot使用freemarker导出word文件方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2022-11-11

最新评论