本关任务:在上一关的基础上访问数据库表,求得price的平均值(使用类型转换保留整数部分)。 编程要求 控制器以GET方法响应如下路径http://localhost:8080/books/priceavg的web提交,返回一个整数。 请在右侧的代码区域的合适位置上补充代码完成上述功能。 测试说明 在此SpringBoot应用程序已启动的情况下,使用浏览器访问http://localhost:8080/books/priceavg将得到一个整数。
时间: 2024-03-25 20:40:15 浏览: 75
根据题目要求,我们需要在控制器中响应 GET 请求,访问数据库表并求得price的平均值,最后返回一个整数。下面是一个可能的解决方案:
```java
@RestController
@RequestMapping("/books")
public class BookController {
@Autowired
private BookRepository bookRepository;
@GetMapping("/priceavg")
public Integer getPriceAvg() {
List<Book> books = bookRepository.findAll();
int totalPrice = 0;
int count = 0;
for (Book book : books) {
if (book.getPrice() != null) {
totalPrice += book.getPrice();
count++;
}
}
if (count == 0) {
return 0;
}
return totalPrice / count;
}
}
```
在上面的代码中,我们使用 `@GetMapping` 注解来响应 GET 请求,路径为 `/books/priceavg`。在方法中,我们首先使用 `bookRepository.findAll()` 方法获取数据库中所有的书籍信息,然后遍历每一本书籍,累加价格并计算数量。最后,我们通过总价除以数量来得到平均价格,并使用类型转换保留整数部分。注意,我们在累加价格和计算数量时,需要排除价格为 null 的书籍。如果数据库中没有任何书籍,我们直接返回 0。
完成上述代码后,启动应用程序并在浏览器中访问 http://localhost:8080/books/priceavg,应该能够得到一个整数作为响应。
阅读全文