简短的介绍
当数组列表输入为空时,我该如何findBy<Field>In
处理。IN
例如忽略它。你的 DAO 会是什么样子?
更长的描述。
想象一下,您创建了一个搜索用户页面。
在应用程序中。您有多种过滤选项。
- 创建(始终给出日期范围)
- 国家(当为空时忽略并搜索所有国家)
- 年龄范围
- 职称
- ETC...
现在假设您要在国家列表中搜索给定日期范围内的所有用户。
在搜索用户时,我总是会搜索加入的日期,但是如果我没有选择一个国家,我希望它搜索所有国家。
我计划在国家/地区之外添加更多过滤器选项。所以我真的不想为每个可能的字段组合创建很多 findBy 方法。
道
@Repository
public interface UserDao extends JpaRepository<User, Long> {
public List<BeatRate> findByCreatedBetweenAndCountryIn(Date from, Date to, ArrayList<String> countryList );
}
测试
@Test
public void test() throws ParseException {
Date from = new SimpleDateFormat( "yyyy-MM-dd" ).parse( "2015-01-01" );
Date to = new SimpleDateFormat("yyyy-MM-dd").parse("2015-05-15");
//ArrayList<String> countryList = new ArrayList<String>();
//countryList.add("UK");
//countryList.add("Australia");
//countryList.add("Japan"); // works ok when I have a list
countryList = null; // I want it to search for all countries when this is null -- this errors and doesnt work..
List<BeatRate> beatRates = beatRateDao.findByCreatedBetweenAndRentalCountryIn(from, to, countryList);
Assert.assertTrue(beatRates.size()>0);
}