обновить таблицу с помощью Spring mvc web и hibernate - PullRequest
2 голосов
/ 01 октября 2010

У меня есть простое весеннее веб-приложение mvc, которое может работать с простым книжным магазином.У меня проблема при обновлении существующей книги.

Я хочу обновить название книги.Мой updateBook.jsp примерно такой:

<form method="post" action="">
    Previous book title : <input type="text" name="previousTitle" /> <br>
    New book title :<input type="text" name="newTitle"/><br>
    <input type="submit" name="update" value="update"/>
</form>

Проблема: у меня есть класс Java, "UpdateBookController" для управления обновлением книги.Как я могу обрабатывать предыдущие и новые названия книг в классе «UpdateBookController».

любая идея ..?

Заранее благодарен!

Ответы [ 2 ]

3 голосов
/ 02 октября 2010

Spring 3.0 way

@Controller
public class BookController {

    @Autowired
    private BookRepository<Book, Integer> bookRepository;

    @RequestMapping(method=RequestMethod.POST)
    public void updateTitle(@RequestParam("bookId") Integer bookId, 
                            @RequestParam("previousTitle") String previousTitle,
                            @RequestParam("newTitle") String newTitle) {

        Book book = bookRepository.findById(bookId);
        book.setPreviousTitle(previousTitle);
        book.setNewTitle(newTitle);

        bookRepository.merge(book);
    }

}

Где BookRepository может быть записан как

@Repository
public class BookRepository extends AbstractRepository<Book, Integer> {

    @Autowired
    private SessionFactory sessionFactory;

    @Override
    public void merge(Book book) {
        sessionFactory.getCurrentSession().update(book);
    }

}

Если вы хотите, вы можете создать собственный класс команд UpdateTitleUseCase , который инкапсулирует previousTitle и newTitleатрибутов .Таким образом, ваш контроллер выглядит как

@RequestMapping(method=RequestMethod.POST)
public void updateTitle(UpdateTitleUseCase command) {
    Book book = bookRepository.findById(command.getBookId());
    book.setPreviousTitle(command.getPreviousTitle());
    book.setNewTitle(command.getNewTitle());

    bookRepository.merge(book);
}
0 голосов
/ 01 октября 2010

Примерно так:

Session sess = null;
try {
  SessionFactory fact = new Configuration().configure().buildSessionFactory();
  sess = fact.openSession();
  Transaction tr = sess.beginTransaction();
  Book book = (Book)sess.get(Book.class, new Long(<id of the book to update>));
  book.setTitle(<new title>);
  sess.update(book);
  tr.commit();
  sess.close();
  System.out.println("Update successfully!");
}
catch(Exception e){
  System.out.println(e.getMessage());
}

Однако вы можете использовать шаблон DAO для аккуратной обработки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...