【发布时间】:2016-08-16 18:46:41
【问题描述】:
大家好,我正在使用 rest 和 mysql 作为我的数据库。
以下是我获取所有书籍(资源)的其余获取代码
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response getBooks(@QueryParam("format") String format) {
//line35: 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();
}
以下是我的服务
public List<Book> getAllBooks() {
//books service line 24 return new ArrayList<Book>(booksDao.getAllBooks());
/* return new ArrayList<Book>(books.values()); */
}
BooksDAO 类
public class BooksDAO {
private JdbcTemplate jdbcTemplate;
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
public List<Book> getAllBooks() {
//books dao line24: return jdbcTemplate.query("select * from books.books_table", new RowMapper<Book>() {
@Override
public Book mapRow(ResultSet rs, int rownumber) throws SQLException {
Book e = new Book();
e.setId(rs.getInt(1));
e.setName(rs.getString(2));
e.setPrice(rs.getString(3));
e.setAuthor(rs.getString(4));
return e;
}
});
}
下面是我的bean。我正在使用springJDBC
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<bean id="ds"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/xxxx" />
<property name="username" value="xxxx" />
<property name="password" value="xxxx" />
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="ds"></property>
</bean>
<bean id="edao" class="com.nag.library.database.BooksDAO">
<property name="jdbcTemplate" ref="jdbcTemplate"></property>
</bean>
</beans>
如果不连接到 db,我可以得到 json/xml 响应,但是当我连接 db 时,它会抛出空指针异常
Aug 16, 2016 10:43:08 AM org.apache.catalina.core.StandardWrapperValve
invoke
SEVERE: Servlet.service() for servlet Jersey Web Application threw exception
java.lang.NullPointerException
at com.nag.library.database.BooksDAO.getAllBooks(BooksDAO.java:24)
at com.nag.library.service.BookService.getAllBooks(BookService.java:24)
at com.nag.library.resource.BookResource.getBooks(BookResource.java:35)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at java.lang.Thread.run(Unknown Source)
我在哪里做错了。请指导我。
谢谢
【问题讨论】:
-
您在哪条指令上有 NPE ?您应该显示所有 BooksDAO 类
-
NPE?你能详细说明一下吗。对不起,我只是一个学习者。
-
没问题:NPE=NullPointerException
-
我已经更新了 booksdao 类,当我在 book dao 中返回 jdbc.query 时,我得到了空指针异常。当我编写一个主要方法并执行时,我从表中获取了所有值。但我是无法恢复休息
-
"com.nag.library.database.BooksDAO.getAllBooks(BooksDAO.java:24)" 这意味着错误发生在
BooksDAO.java的第24行。那是哪条线?