前篇
SpringBoot从安装到实战(五)图书管理系统-利用Spring Data自动建表以及完成增删改查
前言
在前篇中,我们完成了数据库表的创建,实体类,Dao接口的开发,接下来,我们将要通过编写业务,编写控制器以及使用Thymeleaf完成图书管理系统首页的展示功能。
正式开发
编写书本业务
package zyd.service;
import java.util.List;
import zyd.entity.Book;
/**
* <p>
* Title: BookService
* </p>
* <p>
* Description: 书本业务
* </p>
* @author zyd
* <p>
* 创建日期:2020年4月14日
* </p>
*/
public interface BookService {
List<Book> getBooks();
}
编写书本业务实例
package zyd.service.impl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import zyd.dao.BookDao;
import zyd.entity.Book;
import zyd.service.BookService;
/**
*
* <p>
* Title: BookServiceImpl
* </p>
* <p>
* Description: 书本业务实例
* </p>
* @author zyd
* <p>
* 创建日期:2020年4月14日
* </p>
*/
@Service
public class BookServiceImpl implements BookService {
@Autowired
private BookDao bookdao;
@Override
public List<Book> getBooks() {
return bookdao.findAll();
}
}
注解解释
- @Service 用来标注业务层组件并定义一个bean
- @Autowired 根据类型自动装配相应实例
编写控制器
package zyd.web;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import zyd.entity.Book;
import zyd.service.BookService;
/**
* <p>
* Title: BookController
* </p>
* <p>
* Description: BookController
* </p>
* @author zyd
* <p>
* 创建日期:2020年4月14日
* </p>
*/
@Controller
@RequestMapping("/books")
public class BookController {
@Autowired
private BookService bookService;
@ModelAttribute("books")
private List<Book> allBooks() {
return bookService.getBooks();
}
@GetMapping
public String bookPage(@ModelAttribute("books") List<Book> books) {
// 前往 /templates/books.html
return "books";
}
}
注解解释
-
@Controller 标记一个控制器
-
@RequestMapping 限定url映射,标明此控制器或函数只支持此路径下的url请求
-
@ModelAttribute 在本例中你可以看到控制器内有两处地方用了这个注解 它的作用在于可以将相应名称的model对象绑定到视图页面上
allBooks()函数用来返回model对象 bookPage函数参数中用于添加进视图相当于
@GetMapping public String bookPage(Model model) { // 前往 /templates/books.html model.addAttribute("books",bookService.getBooks()); return "books"; }
-
@GetMapping 相当于@RequestMapping(value="",method=RequestMethod.GET)意在约定只处理GET类型的请求方法
编写视图页面
books.html
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<table border="1">
<thead>
<tr>
<th>bookName</th>
<th>author</th>
</tr>
</thead>
<tbody>
<tr th:each="book:${books}">
<th th:text="${book.bookName}"/>
<th th:text="${book.author}"/>
</tr>
</tbody>
</table>
</body>
</html>