我需要在spring-boot上编写web服务,只需使用例如:
/hello/contacts?nameFilter=^.*[abc].*$
并返回DB中没有符号a,b,c的所有名称(就像反向)等等。
在控制器类中我有这个:
@RequestMapping(value = "/contacts",
method = RequestMethod.GET,
produces = {MediaType.APPLICATION_JSON_VALUE}
)
List<Contact> getAllContactsByName(@RequestParam(name = "nameFilter") String nameFilter);
服务类:
@Autowired
private ContactDao contactDao;
@Override
public List<Contact> getContactsByNameFilter(String nameFilter) {
return nameFilter == "" ? findAllContacts() : contactDao.findByRegex(nameFilter);
}
public List<Contact> findAllContacts(){
return contactDao.findAll();
}
我应该如何在dao图层类中实现方法findByRegex(nameFilter)
?
我必须在服务类中进行反向过滤,而不是在dao中。以及如何在不使用sql的情况下完成它。
对不起有些错误和我的英语,刚开始学习spring-boot之后的java se课程。
答案 0 :(得分:0)
如何在不使用sql的情况下完成。
完全没有SQL的唯一方法是将所有联系人提取到内存中,并根据给定的RegEx测试每个联系人,忽略那些匹配的联系人。例如(使用Java 8功能)
public List<Contact> findByRegex(String nameFilter) {
return contactDao.findAll().stream()
.filter(c -> !c.getName().matches(nameFilter))
.collect(Collectors.toList());
}
或者你的意思是
如果不使用 PLAIN sql,我该怎么做呢。
然后你可以尝试JPQL / HQL / CriteriaAPI