こんにちは、私は残りの応答を返す間に、DB内のすべての値を取得していません。以下は RESTがDB内のすべての値を返さない
以下は私のサービスの下public class BookService {
BooksDAO booksDao = new BooksDAO();
//private Map<Integer, Book> books = Database.getBooks();
/*public BookService() {
books.put(1, new Book(1, "The Adventures of Tom Sawyer", "$28", "Mark Twain"));
books.put(2, new Book(2, "The Adventures of Sherlock Holmes", "$17", "Arthur Conan Doyle"));
}*/
public List<Book> getAllBooks() throws SQLException, ClassNotFoundException {
return new ArrayList<Book>(booksDao.getAllBooks());
}
が
@GET
@Produces({MediaType.APPLICATION_JSON + ";charset=UTF-8",MediaType.APPLICATION_XML + ";charset=utf-8"})
public Response getBooks(@QueryParam("format") String format) throws SQLException, ClassNotFoundException {
return Response.status(Status.OK).entity((new GenericEntity<List<Book>>(bookService.getAllBooks()) {
})).header(HttpHeaders.CONTENT_TYPE, "XML".equalsIgnoreCase(format)
? MediaType.APPLICATION_XML + ";charset=UTF-8" : MediaType.APPLICATION_JSON + ";charset=UTF-8").build();
}
私は以下のREST応答
[
{
"author": "Arthur Conan Doyle",
"id": 2,
"links": [],
"name": "The Adventures of Sherlock Holmes",
"price": "$17"
}
]
に取得しています私のリソースがされている私のDAO
public class BooksDAO {
public List<Book> getAllBooks() throws SQLException, ClassNotFoundException {
List<Book> arrBook = null;
Book e = null;
Class.forName("com.mysql.jdbc.Driver");
JdbcRowSet rowSet = RowSetProvider.newFactory().createJdbcRowSet();
rowSet.setUrl("jdbc:mysql://localhost:3306/books");
rowSet.setUsername("xxxx");
rowSet.setPassword("xxxx");
rowSet.setCommand("select * from books.library");
rowSet.execute();
while (rowSet.next()) {
e = new Book(rowSet.getInt(1), rowSet.getString(2), rowSet.getString(3), rowSet.getString(4));
arrBook = new ArrayList<Book>();
arrBook.add(e);
}
return arrBook;
}
です
リスト全体ではなく最後のものが返されます...
ここで私は間違いをしましたか?
arrBook = new ArrayList<Book>();
while (rowSet.next()) {
e = new Book(rowSet.getInt(1), rowSet.getString(2), rowSet.getString(3), rowSet.getString(4));
arrBook.add(e);
}
あなたはすべての本のためにあなたのarrBookを初期化されています
は