You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 04:48:18