[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("\nFind 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("\nCourseView for English 101 \n" + courseRepository.getCourseView(english101.getId())); });
分类:
Java
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2019-12-20 [React experimental] Fetch Modules Eagerly for SuspenseList
2019-12-20 [Algorithm] 69. Sqrt(x)
2018-12-20 [Algorithms] Build a Binary Tree in JavaScript and Several Traversal Algorithms
2016-12-20 [Compose] 14. Build curried functions
2016-12-20 [Angular Testing] Unit Testing -- Test component and service.
2014-12-20 [AngularJS] ngModelController render function