Spring Boot中JPA查询无返回结果问题求助
嘿,我帮你把这个基于H2数据库和JPA的Spring Boot Todo服务的控制器代码补全并整理好啦,顺便补充一些关键的配套内容,让你的小应用能正常跑起来~
完整的控制器代码
package me.abhishek.springboot.microservice.example.todo.springbootmicroservicetodoservice; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RestController; import java.util.List; import java.util.Optional; @RestController public class TodoController { // 注入JPA仓库接口,实现数据操作 @Autowired private TodoRepository todoRepository; // 接口:获取所有Todo项 @GetMapping("/todos") public List<Todo> getAllTodos() { return todoRepository.findAll(); } // 接口:根据ID获取单个Todo项 @GetMapping("/todos/{id}") public Optional<Todo> getTodoById(@PathVariable Long id) { return todoRepository.findById(id); } }
配套关键组件示例
1. JPA实体类(Todo.java)
这是映射H2数据库表的核心实体:
package me.abhishek.springboot.microservice.example.todo.springbootmicroservicetodoservice; import jakarta.persistence.Entity; import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; import jakarta.persistence.Id; @Entity public class Todo { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String title; private boolean completed; // JPA要求必须有无参构造器 public Todo() {} // 带参构造器,用于快速创建实例 public Todo(String title, boolean completed) { this.title = title; this.completed = completed; } // 省略getter/setter,你可以手动生成或用Lombok的@Data注解简化 public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public boolean isCompleted() { return completed; } public void setCompleted(boolean completed) { this.completed = completed; } }
2. JPA仓库接口(TodoRepository.java)
继承JpaRepository就能自动获得CRUD操作能力,无需手动实现:
package me.abhishek.springboot.microservice.example.todo.springbootmicroservicetodoservice; import org.springframework.data.jpa.repository.JpaRepository; // 泛型参数:实体类类型、主键类型 public interface TodoRepository extends JpaRepository<Todo, Long> { }
3. 配置文件(application.properties)
配置H2数据库和控制台访问:
# H2内存数据库配置 spring.datasource.url=jdbc:h2:mem:testdb spring.datasource.driverClassName=org.h2.Driver spring.datasource.username=sa spring.datasource.password= # 开启H2控制台,启动后可通过http://localhost:8080/h2-console访问 spring.h2.console.enabled=true spring.h2.console.path=/h2-console # JPA自动建表+显示SQL spring.jpa.hibernate.ddl-auto=update spring.jpa.show-sql=true spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect
关键注意点
- 确保项目依赖中已经引入Spring Web、Spring Data JPA、H2 Database三个核心组件(Maven/Gradle都可以直接在初始化Spring Boot项目时勾选)
- 启动应用后,访问
http://localhost:8080/todos就能看到返回的Todo列表(初始为空,可通过H2控制台手动插入测试数据) @RestController注解会自动将返回的Java对象序列化为JSON格式,无需额外配置
内容的提问来源于stack exchange,提问作者P.K.
相关产品推荐
相关产品推荐

