Spring Boot开发REST API:MySQL数据无法获取接口返回空白
问题:Spring Boot REST API访问返回空白页面
我最近用Spring Boot开发REST API,代码运行无报错,但访问localhost:8080/expenses/时显示空白页面,不清楚原因。
实体类
import javax.persistence.*; import java.math.BigDecimal; import java.sql.Date; @Data @AllArgsConstructor @NoArgsConstructor @Entity @Table(name = "tbl_expenses") public class Expense { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name ="expense_name") private String name; private String description; @Column(name ="expense_amount") private BigDecimal amount; private String category; private Date date; }
控制器类
package in.pranay.expensetrackerapi.controller; import in.pranay.expensetrackerapi.entity.Expense; import in.pranay.expensetrackerapi.service.ExpenseService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; @RestController public class ExpenseController { @Autowired private ExpenseService expenseService; @GetMapping("/expenses") public List<Expense> getAllExpenses() { return expenseService.getAllExpenses(); } }
Repository接口
package in.pranay.expensetrackerapi.repository; import in.pranay.expensetrackerapi.entity.Expense; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; @Repository public interface ExpenseRepository extends JpaRepository<Expense, Long> { }
Application.properties配置
spring.datasource.url=jdbc:mysql://localhost:3306/expensetracker spring.datasource.username=root spring.datasource.password=pranay@1404
排查与解决步骤
1. 修正请求路径匹配
控制器注解的路径是/expenses,但你访问的是/expenses/(多了末尾斜杠)。Spring默认严格匹配路径,直接访问localhost:8080/expenses测试。
2. 检查数据库数据
如果tbl_expenses表为空,接口会返回空数组[],部分浏览器会显示空白。用SQL语句SELECT * FROM tbl_expenses;验证数据,或者在控制器方法中打印返回结果:
@GetMapping("/expenses") public List<Expense> getAllExpenses() { List<Expense> expenses = expenseService.getAllExpenses(); System.out.println("返回数据:" + expenses); return expenses; }
若控制台输出[],插入测试数据即可。
3. 确认Service层逻辑
检查ExpenseService是否正确调用Repository的findAll()方法:
@Service public class ExpenseService { @Autowired private ExpenseRepository expenseRepository; public List<Expense> getAllExpenses() { return expenseRepository.findAll(); } }
若Service返回null,接口会显示空白。
4. 完善数据库配置
当前配置缺少驱动和Hibernate参数,补充以下内容:
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.jpa.hibernate.ddl-auto=update spring.jpa.show-sql=true
确保MySQL服务启动、数据库expensetracker已创建、账号密码正确。
5. 验证依赖与日志
确认Lombok依赖已添加(实体类用了@Data注解),启动时查看控制台日志,排查数据库连接失败、实体映射错误等隐性异常。
内容的提问来源于stack exchange,提问作者Pranay Sahu
相关产品推荐
相关产品推荐

