有两种类似的方法:
Collection<Movie> findAll(UserDetails userDetails); //find all movies rated by User
Collection<Movie> findAll(UserDetails userDetails, String s); //find all movies rated by User and containing "s" in title
所以,第二个是第一个+正则表达式。 JPQL代码分别为:
select movie........ //doesn't mater
//the same logic
和
select movie........ where lower(movie.title) like :s
//the same logic
所有的差异都是一行代码,但它迫使我在这两种方法中重复代码。在这种情况下,如何避免代码重复?
我想实现私有方法,它将接收来自这两个的查询并处理相同的逻辑&#34;。这是好方法吗?
答案 0 :(得分:3)
保留这两种方法,然后创建另一种接收结果并处理数据的方法。
Collection<Movie> findAll(...) { // your params here
Result result = select movie........ //doesn't mater
return processData(result);
}