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

本地浏览器请求接口无法返回City表JSON数据,该如何调整代码?

问题修复方案

1. 实体类(City.java)字段映射修正

你数据库city表的城市名称字段为name,但现有实体类中映射的是city_name,会导致查询后城市名称字段为空,修改对应注解:

// 把原来的@Column(name="city_name")改成下面的
@Column(name = "name")
String cityName;

2. 持久层(CityRepository.java)修正

Spring Data JPA的JpaRepository已经内置了基础CRUD方法,不需要自定义重复方法,且你现有自定义方法不符合JPA命名规则、缺少参数,直接删除自定义的两个方法即可:

package com.mfc.repository;

import java.util.List;
import org.springframework.data.jpa.repository.JpaRepository;
import com.mfc.entity.City;

public interface CityRepository extends JpaRepository<City, Integer>{
    // 删除原有两个自定义方法,直接继承JpaRepository自带的findAll()、findById()等方法即可
}

3. 业务层(CityService.java)修正

  • 调整调用Repository的方法为内置方法,修复传参报错问题
  • 补充泛型声明,避免类型不安全警告
package com.mfc.admin.service;    

import java.util.List;
import java.util.Optional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.mfc.entity.City;
import com.mfc.repository.CityRepository;

@Service("cityService")
public class CityService {
    
    @Autowired
    CityRepository cityRepository; // 变量名修改为语义更清晰的命名,原cityDTO也可正常运行
    
    @Transactional
    public List<City> getAllCities() {
        return cityRepository.findAll(); // 调用JpaRepository自带的查询所有方法
    }
    
    @Transactional
    public City getCity(int id) {
        Optional<City> cityOpt = cityRepository.findById(id);
        return cityOpt.orElse(null); // 不存在则返回空,也可按业务需求抛出异常
    }
}

4. 控制层(CityController.java)可选优化

补充泛型声明,提升代码规范性:

// 原有方法返回值List改为List<City>
@RequestMapping(value="/getAllCities", method=RequestMethod.GET, headers = "Accept=application/json")
public List<City> getCities() {
    logger.trace("CityController: getAllCities begins");
    List<City> listOfCities = cityService.getAllCities();
    logger.trace("CityController: getAllCities ends");
    return listOfCities;
}

5. 配置校验

确认你的项目配置文件(application.properties/application.yml)中存在以下配置,匹配你预期的访问路径:

server.port=8181
server.servlet.context-path=/mfc

如果没有配置context-path,你需要访问localhost:8181/city/getAllCities才能正常请求接口。

内容的提问来源于stack exchange,提问作者user15974221

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 11:36:08