当前位置: 首页 > 知识库问答 >
问题:

如何使用@ModelAttribute注释将对象传递给数据库?

益光亮
2023-03-14

我将使用@modelattribute而不是@requestparam绑定用户输入并将其写入数据库。当@modelattribute将请求处理程序方法(@modelattributebook book)中的数据绑定为book对象时,我感到困惑,那么我应该如何将该对象传递给数据库呢?通常使用@requestparam,我根据我的模型类逐个变量绑定用户输入,然后使用相关的DAO方法将它们发送到db。我在下面展示我的课程。如果我使用@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;
}
}
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

公共类簿记员{

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

}
}

共有1个答案

戚飞
2023-03-14

您的表单应该有参数名称作为您的book对象,请检查下面的示例代码

<form >
<input type="text" name="authorId"/>
<input type="text" name="authorName"/>
etc...
</form>


Book.java

class Book{
  Integer authorId;
  String authorName;
  etc..
}
@RequestMapping(value = "/addBookExecution", method = equestMethod.POST)
protected ModelAndView addBookExecution(@ModelAttribute Book book)
        throws ClassNotFoundException, SQLException {
    bookService.addBook(book);
    ModelAndView model = new ModelAndView("adminFunctionsPage");
    model.addObject("Msg", "Your request has been processed successfully.");
    return model;

}
 类似资料:
  • 假设我有一个带有属性的注释: 我想创建一个包含多个元注释的复合注释,包括一个带有属性的注释 有没有一种方法可以将复合注释的属性传递给其中一个元注释? 例如,类似这样的东西: 这相当于,但比 谢谢! PS为我对示例注释的错误选择表示歉意-我没有javax。注射@记住命名注释,只是一些具有属性的任意注释。 谢谢大家的回答/评论。 这显然是不可能的。然而,碰巧我的案例有一个简单的解决方法,我将与大家分享

  • 我正在使用GraphQL查询一个对象,该对象将由大约15个不同的REST调用组成。这是我的根查询,我在其中传入查询的ID。这对于正确解析的主要student对象非常有效。但是,我需要弄清楚如何将ID传递给地址解析程序。我尝试将args添加到address对象,但出现了一个错误,表明args没有从Student对象传递下来。所以我的问题是:如何将客户机查询中的参数传递给GraphQL服务器中的子对象

  • 我在示例中看到如何将消息字符串传递给亚马逊 sns sdk 的发布方法。但是,是否有如何将自定义对象作为消息传递的示例?我尝试将“消息结构”设置为“json”,但随后我得到错误。我应该将对象值传递到参数中的哪个位置? 有什么例子吗?

  • 我正在使用注释处理来生成一些类...我有两个模块,处理器本身和使用它的“客户端”模块。我想通过客户端向处理器传递一个参数,我可以这样做 如何在处理器端检索此参数?

  • 我正在使用Spring 3.1.2。带有cglib加载时编织的RELEASE,我试图获得使用具有自定义注释和注释参数的方法的建议。 建议: 这是我正在测试的课程: 问题是我无法得到执行建议。如果我删除切入点中的@args和args条件,则会发出通知,但随后我必须深入到过程连接点(ProceedingJoinPoint)以获取所需的参数。 为什么这个建议没有生效?我做错什么了吗? 编辑:以下切入点可

  • 问题陈述 我是Spring/Rest应用程序的新手,我在中有数据。 现在,我需要将这些数据传递给API。 下面是为单个记录附上的示例卷曲- 我在终端中点击curl url后得到的响应是确定的 有谁能指导我如何用Java编写代码吗。