Я собираюсь использовать @ModelAttribute
вместо @RequestParam
, чтобы связать пользовательский ввод и записать его в базу данных. Я просто смущен, когда @ModelAttribute
связывает данные в моем методе обработчика запроса (@ModelAttribute
book Book) в качестве объекта книги, то как передать этот объект в базу данных? Обычно с использованием @RequestParam
Я привязываю переменную пользователя к переменной в соответствии с моим классом модели, а затем отправляю их в db с использованием соответствующего метода DAO. Я показываю свои занятия ниже. Может ли кто-нибудь сказать, как мой метод обработчика запросов должен выглядеть, если я использую @ModelAttribute
?Как использовать аннотацию @ModelAttribute для передачи объекта в базу данных?
Модель Класс:
@Component
public class Book {
int bookId;
String title;
Author author;
Publisher publisher;
public int getBookId() {
return bookId;
}
public void setBookId(int bookId) {
this.bookId = bookId;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public Author getAuthor() {
return author;
}
public void setAuthor(Author author) {
this.author = author;
}
public Publisher getPublisher() {
return publisher;
}
public void setPublisher(Publisher publisher) {
this.publisher = publisher;
}
}
DAO:
public class BookDAO extends JdbcDaoSupport {
@Autowired
AuthorDAO authorDAO;
@Autowired
PublisherDAO publisherDAO;
public void addBook(String title, int authorId, int publisherId)
throws ClassNotFoundException, SQLException {
String sql = "insert into tbl_book (title, authId, pubId) values (?, ?, ?)";
this.getJdbcTemplate().update(sql, new Object[]{title, authorId, publisherId});
}
}
Услуги:
@Service
public class BookService {
@Autowired
BookDAO bookDAO;
public Book getBookById(int bookId) throws ClassNotFoundException,
SQLException {
return bookDAO.getBookById(bookId);
}
public List<Book> getAllBooks() throws ClassNotFoundException,
SQLException {
List<Book> bookList = bookDAO.getAllBooks();
return bookList;
}
public void addBook(String title, int authorId, int publisherId) throws ClassNotFoundException,
SQLException {
bookDAO.addBook(title, authorId, publisherId);
}
}
Контроллер:
@Controller
класс BookController общественного {
@RequestMapping(value = "/addBookExecution", method = equestMethod.POST)
protected ModelAndView addBookExecution(@RequestParam String title,
@RequestParam int authorId, @RequestParam int blisherId)
throws ClassNotFoundException, SQLException {
bookService.addBook(title, authorId, publisherId);
ModelAndView model = new ModelAndView("adminFunctionsPage");
model.addObject("Msg", "Your request has been processed successfully.");
return model;
}
}
проверить эту http://stackoverflow.com/questions/3423262/what-is -modelattribute-in-spring-mvc –
Спасибо за ссылку. Я знаю использование @ModelAttribute и способ привязки данных. Я просто не знаю, как передать объект в базу данных. Если вы видите мой метод addBook(), ему нужно получить три параметра для выполнения задания. Но в этом случае у меня есть объект. Мой вопрос: могу ли я отправить объект, не разбивая его на эти параметры? – Nisman
вам не нужно делать все, что вам нужно, это имена свойств объекта, а имена параметров формы должны быть равны –