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

如何在Spring Boot中获取MySQL表列数据并以指定列表格式返回

实现步骤

要返回你需要的JSON对象格式,需要调整实体类、Repository层和Controller层的代码,具体如下:

1. 创建User实体类

首先定义与数据库users表字段对应的实体类,用来封装用户数据:

public class User {
    private String name;
    private String lastname;

    // 无参构造(BeanPropertyRowMapper需要)
    public User() {}

    // 全参构造
    public User(String name, String lastname) {
        this.name = name;
        this.lastname = lastname;
    }

    // Getter和Setter方法
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getLastname() {
        return lastname;
    }

    public void setLastname(String lastname) {
        this.lastname = lastname;
    }
}

2. 修改Repository层方法

原代码中queryForList("select * from users", String.class)会把查询结果强制转为字符串,无法正确映射多字段数据。改为用BeanPropertyRowMapper将数据库行映射到User对象:

@Repository
public class CommentRepository {

    @Autowired
    JdbcTemplate jdbcTemplate;

    // 返回所有用户列表(每个元素是User对象)
    public List<User> getUserAll() {
        String sql = "select name, lastname from users";
        return jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(User.class));
    }

    // 如果需要返回单个用户对象(比如取第一条数据)
    public User getSingleUser() {
        String sql = "select name, lastname from users limit 1";
        return jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<>(User.class));
    }
}

3. 调整Controller层返回类型

根据Repository的返回类型,修改Controller的方法返回值,Spring会自动将User对象(或List)序列化为JSON格式:

@RestController
@RequestMapping(path="/quex")
public class CommentController {

    @Autowired
    CommentRepository repository;

    // 返回用户列表,格式为[{"name":"xxx","lastname":"xxx"},...]
    @GetMapping(path="/list")
    public List<User> getAllUser() {
        return repository.getUserAll();
    }

    // 返回单个用户对象,格式符合你给出的示例
    @GetMapping(path="/single")
    public User getSingleUser() {
        return repository.getSingleUser();
    }
}

说明

  • 确保数据库users表存在name和lastname字段,字段名要和User类的属性名一致(或者通过SQL别名匹配)。
  • Spring的BeanPropertyRowMapper会自动根据列名和实体类属性名映射,所以需要保证名称对应,或者在SQL中用as指定别名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 00:35:31