@RestController
@RequestMapping(value = "/players")
public class REST {
@RequestMapping(method = RequestMethod.GET)
public List<Player> getAll() {
return service.getAll();
}
@RequestMapping(method = RequestMethod.GET, params = {"team", "score"})
public List<Player> getByPlayerAndScore(@RequestParam(value = "team") String team,
@RequestParam(value = "score", required = false) int score) {
return service.getByPlayerAndScore(team, score);
}
}
问题1:我期望第一个方法适用于url "/players"(按预期工作),第二个方法适用于url's ("/players?team=xyz", "/players?team=xyz&score=1000")。Spring在"/players?team=xyz"中使用了方法1。即使我将分数指定为可选项,除非我指定2个参数,否则Spring不会使用第2个方法。如何解决这个问题,并编写最佳的控制器方法来处理这些类型的请求,其中用户可以发送不同的可用参数集(如param1¶m2、仅param1、仅param2等)。
问题2:对于具有不同参数集的第二种查询类型,在DAO层如何编写数据库查询。我应该编写单独的方法,每个方法都有不同的查询,还是一个方法多个if语句(例如,如果用户发送“team”,则将团队添加到DB查询中,如果用户发送“score”,则将其添加到DB查询中...)