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

Spring Boot查询特定会员记录接口故障排查求助

问题修复方案

你的接口无法获取数据主要有三个问题,以下是具体修复步骤:

1. Controller层:添加路径变量绑定注解

原Controller方法中,路径参数{memberno}没有和方法参数绑定,Spring无法正确获取URL中的会员编号值,导致传入DAO的参数可能是默认值0。修复后代码:

@GetMapping("/searchDataByMember/{memberno}")
public List<MyData> searchDataByMember(@PathVariable int memberno) {
    List<MyData> dataList = myServiceDAO.findDataByMemberNo(memberno);
    return dataList;
}

2. DAO层:修正SQL语句与参数传递

原DAO方法的SQL存在语法错误,且没有正确传递参数给JdbcTemplate,同时缺少只读事务注解:

@Repository
public class MyServiceDAO {

    @Autowired
    JdbcTemplate jdbctemplate;

    @Transactional(readOnly = true)
    public List<MyData> findAll() {
        String sql = "SELECT * FROM demooutput";
        return jdbctemplate.query(sql, new DataRowMapper());
    }

    @Transactional(readOnly = true)
    public List<MyData> findDataByMemberNo(int memberno) {
        // 修正SQL占位符,正确传递参数
        String sql = "SELECT member_no, dt, name, drnumber, docid, contact FROM demooutput where member_no = ?";
        return jdbctemplate.query(sql, new Object[]{memberno}, new DataRowMapper());
    }
}

关键修复点说明:

  • @PathVariable注解:必须添加该注解,Spring才能将URL路径中的{memberno}值映射到方法参数上。
  • SQL语法修正:原SQL中memberno?是错误写法,正确的参数占位符是?,JdbcTemplate会自动替换为传入的参数值。
  • 参数传递:调用query方法时需要传入参数数组new Object[]{memberno},确保查询条件正确生效。
  • @Transactional(readOnly = true):添加该注解保持和findAll方法一致的事务配置,提升只读查询的性能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 00:03:15