2016-08-16 3 views
0

Привет всем, я использую rest и mysql как my db.Получение исключения null указателя при получении из mysql db

Ниже мой отдых получить код для получения allbooks (ресурс)

@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.I утра используя пружинуJDBC

<?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> 

Без подключения к БД я в порядке получения JSon/ответ XML, но когда я подключить БД его метания исключение NullPointer

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) 

Где я делаю вещь wrong.Please руководства меня.

Спасибо

+0

На какой инструкции у вас есть NPE? Вы должны показать весь класс BooksDAO – davidxxx

+0

NPE? Можете ли вы его разработать. Мне жаль, что я всего лишь ученик. –

+0

нет проблем: NPE = NullPointerException – davidxxx

ответ

0

Я думаю, что проблема заключается в том, что ваша служба не боб управляется Spring, поскольку не объявлено в вашем весеннем конфе. Таким образом, вы не используете эти бобы:

<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> 

И как следствие, ваш jdbcTemplace находится в вашем BooksDAO, которые вы используете в режиме исполнения null.
добавить свою услугу в качестве компонента в этой конфигурации и добавить к ней bean edao как собственность.
Вы также должны проконсультироваться с вашим классом отдыха.

Edit для точности: Я думаю, что проблема здесь, потому что в этой строке return jdbcTemplate.query("‌​select * from books.books_table", new RowMapper<Book>() NullPointerException может иметь одну причину: JdbcTemplate равна нулю. Кроме того, вы не объявляете сервисный компонент в своей конфигурации. Кроме того, никакая инструкция в теле метода не может вызвать NPE. -

+0

Он сказал, что инстас jdbcTemplate не был нулевым, я думал так же, как и вы, но если это объявление объявлено о бобах, как вызов достигает dao, если экземпляр на службе класс не проходит автоматически? – karelss

+0

Не логика. в этой строке 'return jdbcTemplate.query (" select * from books.books_table ", новый RowMapper ()' nullpointer может иметь одну причину: 'jdbcTemplate is null'. Кроме того, он не объявляет сервисный компонент в его конфигурация Кроме того, никакая инструкция в теле метода не может вызвать NPE. – davidxxx

+0

Я не видел, что вы редактировали свой комментарий. Возможно, он создает экземпляр «new()» или, возможно, использует другой экземпляр dao, который autwired. С уважением, я не знаю, но NPE - проблема с подключением к фасоли, без проблемы с SQL. – davidxxx

0

Я думаю, что вы что-то неправильно на вашем картографирование в дао, вы можете разместить код с номерами строк, чтобы быть уверенными в моей suspicius ?, wihtout номеров строк мы не можем быть уверены, что о линии с Nullpointer (24).

Во-первых Если бы я был вами, я бы попытался сопоставить поля вашей таблицы по имени (getString («COLUMN_NAME»)) вместо индекса, чтобы проверить, что что-то не так с столбцами (index или data_type).

И, наконец, если это не сработает, попробуйте сопоставить пустой объект как результат преобразования, чтобы проверить, не является ли проблема с запросом.

ПОЗДРАВЛЕНИЕ

+0

Когда я написал основной метод и выполнил, я получил все значения из таблицы. Но я не могу вернуть то же самое для отдыха –

+0

Это странно, потому что ошибка выполняет запрос, используете ли вы другую конфигурацию xmls? – karelss

+0

Надеюсь, да, когда я распечатаю объект, он возвращает значения –

Смежные вопросы