Я пытаюсь выполнить CRUD-операции, используя Spring Boot + REST + MySQL.
вдоль интерфейса crudrepository, когда я пытаюсь получить данные из базы данных, я
я получаю пустой список обратно. Я обнаружил, что метод findAll () в моем приложении не работает должным образом.
Мой класс приложения
@SpringBootApplication
public class Blog {
public static void main(String[] args) {
SpringApplication.run(Blog.class, args);
System.out.println("Application Started");
}}
Мой класс сущности
@Entity
@Table(name="posts")
public class Post {
@Id
@Column(name="id")
int postId;
@Column(name="title")
String title;
@Column(name="body")
String body;
public Post() {}
public Post(int postId, String title, String body) {
this.postId = postId;
this.title = title;
this.body = body;
} //getters and setters and toString()
Класс контроллера
@RestController
public class PostsController {
@Autowired
private PostsService service;
@RequestMapping("/posts")
public List<Post> getPosts(){
return service.getPosts();
}
@RequestMapping("/posts/{id}")
public Post getPost(@PathVariable int id) {
return service.getPost(id);
}
@RequestMapping(method=RequestMethod.POST, value="/posts")
public void addPost(@RequestBody Post listElement) {
service.addPost(listElement);
}
@RequestMapping(method=RequestMethod.PUT, value="/posts/{id}")
public void updatePost(@RequestBody Post post) {
service.updatePost(post);
}
@RequestMapping(method=RequestMethod.DELETE, value="/posts/{id}")
public void deletePost(@PathVariable int id) {
service.deletePost(id);
}
Класс обслуживания
@Service
public class PostsService {
@Autowired
private PostRepository repo;
public List<Post> getPosts(){
List<Post> list = new ArrayList<>();
System.out.println("at Service");
for(Post post: repo.findAll()) {
System.out.println("in for loop");
list.add(post);
}
return list;
}
public Post getPost(int id) {
return repo.findById(id).get();
}
public void addPost(Post listElement) {
repo.save(listElement);
}
public void updatePost(Post post) {
repo.save(post);
}
public void deletePost(int id) {
repo.deleteById(id);
}
}
Интерфейс репозитория
public interface PostRepository extends CrudRepository<Post, Integer>
{ }
Файл Application.properties
spring.jpa.hibernate.ddl-auto=update
spring.datasource.url=jdbc:mysql://localhost:3306/blog?useSSL=false&useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=root
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>org.studyeasy</groupId>
<artifactId>06.01-RestfulMicroserviceWithDB</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>06.01-RestfulMicroserviceWithDB</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
Выходы
когда я выполняю операцию get, out put был "[]"
when i perform get operation by id , out put was
{
"timestamp": "2019-03-29T02:44:00.768+0000",
"status": 500,
"error": "Internal Server Error",
"message": "No value present",
"path": "/posts/3" }
java.util.NoSuchElementException: No value present
когда я выполняю операцию удаления, я получаю этот вывод
"org.springframework.dao.EmptyResultDataAccessException: No class org.studyeasy.entity.Post entity with id 3 exists!" in console and
вывод в почтальоне был
{"отметка времени": "2019-03-29T02: 48: 51.423 + 0000",
«статус»: 500,
«ошибка»: «Внутренняя ошибка сервера»,
"message": "Нет объекта org.studyeasy.entity.Post с идентификатором
3 существует! ",
"путь": "/ posts / 3"}