如何在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
@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
相关产品推荐
相关产品推荐

