创建一个新项目

  • 点击Create New Project 
  • 选择左侧的Spring Initializr 
  • 在右边,选择 default 从 https://start.spring.io 创建,点击 Next
  • 在接下来的页面中,填写相关信息,比如 组/项目名, 指定创建 Gradle 项目,点击 Next
  • 在这个页面中,添加我们项目中需要用到的 Spring 插件,一般来说 Web / Jpa / Thymeleaf / MySQL  点击 Next
  • 然后,填写项目名字,指定保存目录,点击 Finish,确认初始化 Gradle 项目就可以了。


配置我们的 Springboot 参数

  • 修改配置我们的 build.gradle 然后刷新
apply plugin: 'idea'
ext['thymeleaf.version'] = '3.0.9.RELEASE'
ext['thymeleaf-layout-dialect.version'] = '2.2.2'
  • 在 application.properties 修改基础参数
server.port=6666

spring.datasource.url=jdbc:mysql://localhost:3306/another_springboot_db
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update

spring.thymeleaf.mode=html
spring.thymeleaf.cache=false

spring.messages.encoding=GBK

spring boot 项目实例 springboot做项目_数据库

  • 开启 MySQL 服务, 在 MySQL 中创建相关的数据库
create database another_springboot_db
  • 开启我们的服务器 localhost:6666


创建 Book 模块, 在里面分别创建 entity/dao/controller

  • 创建 model/Author.java
@Entity
public class Author {
    @Id
    @GeneratedValue
    private Long id;

    private String name;

    private String telephone;

    @OneToMany(mappedBy = "author")
    private List<Book> books;

    //...
}

spring boot 项目实例 springboot做项目_数据库

  • 创建 model/Book.java
  • 创建 dao/AuthorDAO.java
public interface AuthorDAO extends JpaRepository<Author, Long> {
}
  • 创建 dao/BookDAO.java
  • 创建 web/AuthorController.java
@Controller
public class AuthorController {
    @Autowired
    private AuthorDAO authorDAO;

    @GetMapping("/author_add")
    public String add() {
        return "book/add_author";
    }

    @PostMapping("/author_add")
    public String store(Author author) {
        authorDAO.save(author);
        return "redirect:author_add";
    }
}

spring boot 项目实例 springboot做项目_数据库

  • 创建 web/BookController.java


为 Book 模块创建 Thymeleaf 模板 Layout

  • 首先,在 resource 目录下面创建资源文件 messages.properties 
  • 在资源文件里面,添加要使用的公共参数
  • 创建公共布局文件 layout/book.html 


Book 增加功能示例

  • 在 BookController 里面创建两个方法 add/save 分别用来呈现添加的 form 表单还有处理 form 请求
@GetMapping("/add")
public String add(Model model) {
    model.addAttribute("authors", authorDAO.findAll());
    return "book/add";
}

@PostMapping("/add")
public String save(Book book, Model model) {
    bookDAO.save(book);
    return "redirect:index";
}

spring boot 项目实例 springboot做项目_数据库

  • 为新增书籍创建 form 表单页面,使用我们定义的 layout 扩展
<!DOCTYPE html>
<html lang="en"
      xmlns:th="http://www.thymeleaf.org"
      xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
      layout:decorate="layout/book">
<head>
    <title>书籍添加</title>
</head>

<div layout:fragment="content">
    <form th:action="@{/book/add}" method="post">
        <div class="form-group">
            <label for="name">名字</label>
            <input type="text" class="form-control" id="name" name="name">
        </div>
        <div class="form-group">
            <label for="price">价格</label>
            <input type="number" class="form-control" id="price" name="price">
        </div>
        <div class="form-group">
            <label for="author">作者</label>
            <select class="form-control" id="author" name="author.id">
                <option value="-1">请选择</option>
                <option th:each="author : ${authors}"
                        th:value="${author.id}"
                        th:text="${author.name}">作者</option>
            </select>
        </div>

        <button type="submit" class="btn btn-primary">Submit</button>
    </form>
</div>

</html>

spring boot 项目实例 springboot做项目_数据库

为新增页面添加相关验证

  • 首先,推荐使用 Java 的 JSR-303 规范的验证框架
  1. 在实体类上加上 @NotBlank / @NotNull / @Size / @Pattern / @Email 等注解
  2. 在控制器里,为数据绑定的类,提供 @Valid 注解,并 紧跟着 一个 BindingResult 对象用来接收校验结果
  3. 在页面中,使用 th:if(${fields.hasErrors()})  / th:errors  等方法显示出错信息
  • 其次,其他简单错误使用 errors.reject() 的方法在 Controller 里手动校验
if(book.getAuthor() == null || book.getAuthor().getId() < 1) {
    errors.rejectValue("author", null, "您需要填写作者的信息哦!");
}
if(errors.hasErrors()) {
    model.addAttribute("authors", authorDAO.findAll());
    return "book/add";
}

spring boot 项目实例 springboot做项目_数据库

  • 然后,一些更复杂,需要重用的校验逻辑,你可以:
  • 自定义 JSR 标准的校验注解和校验类
  • 自定义 Spring 的校验器