📅  最后修改于: 2023-12-03 15:20:13.247000             🧑  作者: Mango
本示例演示了如何使用 Spring MVC 框架构建一个简单的 Web 应用程序。
springmvc_example_db
CREATE TABLE `books` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(255) NOT NULL,
`author` varchar(255) NOT NULL,
`price` decimal(10,2) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;
git clone https://github.com/example/spring-mvc-example.git
cd spring-mvc-example
mvn clean package
target/spring-mvc-example.war
部署到 Tomcat。http://localhost:8080/spring-mvc-example/books
查看并管理书籍。@Controller
@RequestMapping("/books")
public class BookController {
@Autowired
private BookService bookService;
@GetMapping
public String listBooks(Model model) {
List<Book> books = bookService.findAll();
model.addAttribute("books", books);
return "list-books";
}
@GetMapping("/new")
public String newBook(Model model) {
model.addAttribute("book", new Book());
return "book-form";
}
@PostMapping("/save")
public String saveBook(@ModelAttribute("book") Book book) {
bookService.save(book);
return "redirect:/books";
}
@GetMapping("/edit")
public String editBook(@RequestParam("bookId") int id, Model model) {
Book book = bookService.findById(id);
model.addAttribute("book", book);
return "book-form";
}
@GetMapping("/delete")
public String deleteBook(@RequestParam("bookId") int id) {
bookService.deleteById(id);
return "redirect:/books";
}
}
以上就是一个简单的 Spring MVC 控制器类。它使用 @Controller
注解声明,定义了几个方法来处理不同的请求类型。例如,listBooks()
方法用于返回书籍列表视图,newBook()
方法用于返回添加新书籍视图等。
@Service
public class BookServiceImpl implements BookService {
@Autowired
private BookDao bookDao;
@Override
public List<Book> findAll() {
return bookDao.findAll();
}
@Override
public void save(Book book) {
bookDao.save(book);
}
@Override
public Book findById(int id) {
return bookDao.findById(id);
}
@Override
public void deleteById(int id) {
bookDao.deleteById(id);
}
}
以上是一个简单的 Spring 服务实现类。它使用 @Service
注解声明,实现了 BookService
接口中定义的基本书籍管理操作,如添加、编辑、删除等。
@Repository
public class BookDaoImpl implements BookDao {
@Autowired
private JdbcTemplate jdbcTemplate;
@Override
public List<Book> findAll() {
String sql = "SELECT * FROM books";
List<Book> books = jdbcTemplate.query(sql, new BookMapper());
return books;
}
@Override
public void save(Book book) {
String sql = "INSERT INTO books (title, author, price) VALUES (?, ?, ?)";
jdbcTemplate.update(sql, book.getTitle(), book.getAuthor(), book.getPrice());
}
@Override
public Book findById(int id) {
String sql = "SELECT * FROM books WHERE id = ?";
Book book = jdbcTemplate.queryForObject(sql, new Object[]{id}, new BookMapper());
return book;
}
@Override
public void deleteById(int id) {
String sql = "DELETE FROM books WHERE id = ?";
jdbcTemplate.update(sql, id);
}
private static final class BookMapper implements RowMapper<Book> {
@Override
public Book mapRow(ResultSet rs, int rowNum) throws SQLException {
Book book = new Book();
book.setId(rs.getInt("id"));
book.setTitle(rs.getString("title"));
book.setAuthor(rs.getString("author"));
book.setPrice(rs.getDouble("price"));
return book;
}
}
}
以上是一个简单的 Spring 数据访问对象 (DAO) 类。它使用 @Repository
注解声明,实现了 BookDao
接口中定义的基本书籍查询、添加、编辑、删除等操作。此外,它还定义了一个内部类 BookMapper
,用于将 ResultSet 中获取到的数据映射到 Java 对象中。