pom.xml配置文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.xiaowen</groupId>
<artifactId>SpringBootDemo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>SpringBootDemo</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.6.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
application.properties配置文件
#配置tomcat端口
server.port=8088
#配置数据源
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/demo
spring.datasource.username=root
spring.datasource.password=123456
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
这里我们也可以把application.properties修改成application.yml 主流格式
内容也改成yml规范格式
server:
port: 8088
context-path: /
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/demo
username: root
password: 123456
jpa:
hibernate.ddl-auto: update
show-sql: true
yml格式有个注意点 冒号后面一定要加个空格
还有我们把context-path改成/方便开发应用 编写实体类
package com.xiaowen.model;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name="tb_book")
public class Book {
private Integer id;
private String name;
private String author;
private String publicationdate;
private String publication;
private Double price;
private String image;
private String remark;
@Id
@GeneratedValue
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public String getPublicationdate() {
return publicationdate;
}
public void setPublicationdate(String publicationdate) {
this.publicationdate = publicationdate;
}
public String getPublication() {
return publication;
}
public void setPublication(String publication) {
this.publication = publication;
}
public Double getPrice() {
return price;
}
public void setPrice(Double price) {
this.price = price;
}
public String getImage() {
return image;
}
public void setImage(String image) {
this.image = image;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
}
dao接口类
package com.xiaowen.dao;
import org.springframework.data.jpa.repository.JpaRepository;
import com.xiaowen.model.Book;
/**
* 图书接口
* @author xiaowen
*
*/
public interface BookDao extends JpaRepository<Book,Integer>{
}
Controller类
package com.xiaowen.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;
import com.xiaowen.dao.BookDao;
import com.xiaowen.model.Book;
/**
* CRUD
* @author xiaowen
*/
@RestController
@RequestMapping("/book")
public class BookController {
@Autowired
private BookDao bookDao;
/**
* 查询全部图书
* @param mv
* @return
*/
@RequestMapping("/list")
public ModelAndView list(ModelAndView mv){
mv.addObject("bookList", bookDao.findAll());
mv.setViewName("bookList");
return mv;
}
/**
* 添加图书
* @param book
* @return
*/
@RequestMapping(value="add",method=RequestMethod.POST)
public String add(Book book){
bookDao.save(book);
return "forward:book/list";
}
@GetMapping(value="/preUpdate/{id}")
public ModelAndView preUpdate(@PathVariable("id") Integer id,ModelAndView mv){
mv.addObject("book", bookDao.getOne(id));
mv.setViewName("bookUpdate");
return mv;
}
/**
* 修改图书
* @param book
* @return
*/
@PostMapping(value="/update")
public String update(Book book){
bookDao.save(book);
return "forward:/book/list";
}
/**
* 删除图书
* @param id
* @return
*/
@RequestMapping(value="/delete",method=RequestMethod.GET)
public String delete(Integer id){
bookDao.delete(id);
return "forward:/book/list";
}
}
booklist.ftl模板
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>图书管理页面</title>
</head>
<body>
<a href="/bookAdd.html">添加图书</a>
<table>
<tr>
<th>编号</th>
<th>图书名称</th>
<th>作者</th>
<th>出版日期</th>
<th>出版社</th>
<th>价格</th>
<th>封面图片</th>
<th>详细描述</th>
<th>操作</th>
</tr>
<#list bookList as book>
<tr>
<td>${book.id}</td>
<td>${book.name}</td>
<td>${book.author}</td>
<td>${book.publicationdate}</td>
<td>${book.publication}</td>
<td>${book.price}</td>
<td>${book.image}</td>
<td>${book.remark}</td>
<td>
<a href="/book/preUpdate/${book.id}">修改</a>
<a href="/book/delete?id=${book.id}">删除</a>
<a href="/book/delete?id=${book.id}">删除</a>
</td>
</tr>
</#list>
</table>
</body>
</html>
bookAdd.html
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>图书添加界面</title> </head> <body> <form action="book/add" method="post"> 图书名称:<input type="text" name="name"/><br/> 作者:<input type="text" name="author"/><br/> 出版日期:<input type="text" name="publicationdate"/><br/> 出版社:<input type="text" name="publication"/><br/> 价格:<input type="text" name="price"/><br/> 封面图片:<input type="text" name="image"/><br/> 详细描述:<textarea rows="6" cols="20" name="remark"></textarea><br> <input type="submit" value="提交"/> </form> </body> </html>
bookupdate.ftl模板<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>图书更新页面</title> </head> <body> <form action="/book/update" method="post"> <input type="hidden" name="id" value="${book.id}"/> 图书名称:<input type="text" name="name" value="${book.name}"/><br/> 作者:<input type="text" name="author" value="${book.author}"/><br/> 出版日期:<input type="text" name="publicationdate" value="${book.publicationdate}"/><br/> 出版社:<input type="text" name="publication" value="${book.publication}"/><br/> 价格:<input type="text" name="price" value="${book.price}"/><br/> 封面图片:<input type="text" name="image" value="${book.image}"/><br/> 详细描述:<textarea rows="6" cols="20" name="remark" >${book.remark}</textarea><br> <input type="submit" value="提交"/> </form> </body> </html>
启动类代码