Я изучаю Spring Boot через это учебное пособие по Lynda .
С помощью метода GET /room
я смогу получить список всех текущих комнат в моей встроенной базе данных.Оба файла schema.sql
и data.sql
находятся на месте.
Мой класс сущностей Room.java
:
package com.frankmoley.landon.data.entity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name = "ROOM")
public class Room {
@Id
@Column(name = "ROOM_ID")
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@Column(name = "NAME")
private String name;
@Column(name = "ROOM_NUMBER")
private String number;
@Column(name = "BED_INFO")
private String bedInfo;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public String getBedInfo() {
return bedInfo;
}
public void setBedInfo(String bedInfo) {
this.bedInfo = bedInfo;
}
}
Класс хранилища RoomRepository.java
:
package com.frankmoley.landon.data.repository;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
import com.frankmoley.landon.data.entity.Room;
@Repository
public interface RoomRepository extends CrudRepository<Room, Long> {
Room findByNumber(String number);
}
И это временный класс контроллеров, который мы создаем просто для тестирования этого одного метода (RoomController.java
):
package com.frankmoley.landon.data.webservice;
import com.frankmoley.landon.data.entity.Room;
import com.frankmoley.landon.data.repository.RoomRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
@RestController
public class RoomController {
@Autowired
private RoomRepository repository;
@RequestMapping(value="/rooms", method= RequestMethod.GET)
List<Room> findAll(@RequestParam(required=false) String roomNumber){
List<Room> rooms = new ArrayList<>();
if(null==roomNumber){
Iterable<Room> results = this.repository.findAll();
results.forEach(room-> {rooms.add(room);});
}else{
Room room = this.repository.findByNumber(roomNumber);
if(null!=room) {
rooms.add(room);
}
}
return rooms;
}
}
Когда я запускаю приложение,Я вижу сообщение об этом отображении в Eclipse:
Отображено "{[/ rooms], method = [GET]}" на java.util.List com.frankmoley.landon.data.webservice.RoomController.findAll (java.lang.String)
Но когда я перехожу к localhost:8080/rooms
, все, что я получаю, это пустой объект JSON.
application.properties:
spring.jpa.hibernate.dll-auto=none
management.endpoints.web.exposure.include=*