zoukankan      html  css  js  c++  java
  • [Java Spring Data] Optional<> query response, orElse, orElseThrow, ifPresent

    Repo:

    public interface CourseRepository extends CrudRepository<Course,Integer>{
    
        Optional<Course> findByName(String name);
    
        @Query("Select new com.example.university.view.CourseView" +
                "(c.name, c.instructor.member.lastName, c.department.name) from Course c where c.name=?1")
        Optional<CourseView> getCourseViewByName(String name);
    
    }

    Test:

        @Test
        public void runtimeErrors() {
    
            Course course = courseRepository.findByDepartmentName("Sciences");
    
            //Various ways to leverage the Optional
            CourseView view = courseRepository.getCourseViewByName("English 101").get();
            view = courseRepository.getCourseViewByName("English 101").orElseThrow();
            view = courseRepository.getCourseViewByName("English 100").orElse(
                    new CourseView("dummyCourse",
                            "Bad Instructor",
                            "No Department"));
        }

    Usage:

            //*******Complex Queries********
            //Leverage Optional.ifPresent to avoid null checks
            courseRepository.findByName("English 101").ifPresent(english101 -> {
                //Select c from Course c join c.prerequisites p where p.id = ?1
                System.out.println("
    Find Courses where English 101 is a prerequisite");
                courseRepository.findCourseByPrerequisite(english101.getId())
                        .forEach(System.out::println);
    
                //Select new com.example.university.view.CourseView
                //  (c.name, c.instructor.member.lastName, c.department.name) from Course c where c.id=?1
                System.out.println("
    CourseView for English 101 
    " +
                        courseRepository.getCourseView(english101.getId()));
            });
  • 相关阅读:
    - 错误笔记
    只是一个没有人知道的蒟蒻
    省选前模板复习
    数学知识小结#1
    写在NOIP2018后
    Atcoder&CodeForces杂题11.7
    Atcoder&CodeForces杂题11.6
    [NOIP11.1模拟赛]补番报告
    [JZOJ5281]钦点题解--瞎搞+链表
    [JZOJ5280]膜法师题解--思维+前缀和
  • 原文地址:https://www.cnblogs.com/Answer1215/p/14165033.html
Copyright © 2011-2022 走看看