使用 Spring 创建一个端点到 return 来自数据库的对象列表
Creating a endpoint to return a list of objects from a database using Spring
我有一个数据库,我想使用端点来获取数据。但我想过滤数据,以便只返回某些值。我想要的是调用端点,然后从中获取我想要的数据。我制作了两种方法,一种用于调用所有数据,另一种用于仅调用数据库中的 1 条记录。他们都工作得很好,但我现在想从数据库中获取多条记录。这是我目前所拥有的:
//This get every record
@RequestMapping(
value = API_PREFIX_1_0 + ENDPOINT_coupon + "/getCoupon",
method = RequestMethod.GET)
public Collection<Coupon> couponGetAll()
{
return couponService.getAll();
}
//this get only one record based on the ID of the table
@RequestMapping(
value = API_PREFIX_1_0 + ENDPOINT_coupon + "/{id}",
method = RequestMethod.GET)
public Coupon couponGetById(@PathVariable(value = "id") final long id) {
return couponService.getById(id);
}
我想做的是使用数组或id列表从服务器获取数据。
感谢您对此的任何帮助
spring CrudRepository 已经提供了一种通过一组 id 查找项目的方法:
Iterable<T> findAll(Iterable<ID> ids)
如果您在持久层中使用 CrudRepository,则应由您的服务触发此方法。
然后,您可以将请求参数添加到您的 couponGetAll() 方法,从中获取 ID 并将其发送到您的服务。
@RequestMapping( value = API_PREFIX_1_0 + ENDPOINT_coupon + "/listOfCoupons", method = RequestMethod.GET)
public Iterable<Coupon> couponGetMine(@RequestParam(name="ids")String ids) {
Iterable<Long> longIds = convertToLong(ids);
return couponService.getAll(ids);
}
要调用的客户端 url 看起来像这样:
.../listOfCoupons?ids=2,4,7,3
在端点中,您从字符串中提取数字。也许有更好的解决方案,但这是我在这么短的时间内想到的。
转换id字符串例如:
public Iterable<Long> convertToLong(final String ids){
String[] idArray = ids.split(",");
List<Long> idsAsLong = new ArrayList<>();
for (int i = 0; i < idArray.length; i++) {
idsAsLong.add(Long.parseLong(idArray[i]));
}
return idsAsLong;
}
我有一个数据库,我想使用端点来获取数据。但我想过滤数据,以便只返回某些值。我想要的是调用端点,然后从中获取我想要的数据。我制作了两种方法,一种用于调用所有数据,另一种用于仅调用数据库中的 1 条记录。他们都工作得很好,但我现在想从数据库中获取多条记录。这是我目前所拥有的:
//This get every record
@RequestMapping(
value = API_PREFIX_1_0 + ENDPOINT_coupon + "/getCoupon",
method = RequestMethod.GET)
public Collection<Coupon> couponGetAll()
{
return couponService.getAll();
}
//this get only one record based on the ID of the table
@RequestMapping(
value = API_PREFIX_1_0 + ENDPOINT_coupon + "/{id}",
method = RequestMethod.GET)
public Coupon couponGetById(@PathVariable(value = "id") final long id) {
return couponService.getById(id);
}
我想做的是使用数组或id列表从服务器获取数据。 感谢您对此的任何帮助
spring CrudRepository 已经提供了一种通过一组 id 查找项目的方法:
Iterable<T> findAll(Iterable<ID> ids)
如果您在持久层中使用 CrudRepository,则应由您的服务触发此方法。 然后,您可以将请求参数添加到您的 couponGetAll() 方法,从中获取 ID 并将其发送到您的服务。
@RequestMapping( value = API_PREFIX_1_0 + ENDPOINT_coupon + "/listOfCoupons", method = RequestMethod.GET)
public Iterable<Coupon> couponGetMine(@RequestParam(name="ids")String ids) {
Iterable<Long> longIds = convertToLong(ids);
return couponService.getAll(ids);
}
要调用的客户端 url 看起来像这样: .../listOfCoupons?ids=2,4,7,3 在端点中,您从字符串中提取数字。也许有更好的解决方案,但这是我在这么短的时间内想到的。
转换id字符串例如:
public Iterable<Long> convertToLong(final String ids){
String[] idArray = ids.split(",");
List<Long> idsAsLong = new ArrayList<>();
for (int i = 0; i < idArray.length; i++) {
idsAsLong.add(Long.parseLong(idArray[i]));
}
return idsAsLong;
}