参考http://www.mooooc.com/springboot/2017/09/23/spring-boot-jpa-thymeleaf-curd.html
数据库:
CREATE TABLE `user` ( `id` int(10) NOT NULL AUTO_INCREMENT, `username` varchar(50) DEFAULT NULL, `password` varchar(50) NOT NULL, `age` int(10) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
项目结构:
1.模版下载:
http://start.spring.io/ 在搜索框分别输入Web Thymeleaf JPA MySQL, 下载的模版工程中就自动有这些依赖配置了
1.pom文件:
<?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.lch</groupId> <artifactId>springboot03</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>springboot03</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.2.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> <!--本机安装的是jdk1.7,此处改为1.7,project Structure里的project SDK改为jdk1.7安装地址, settings下Java Compile下的target bytecode version也改为1.7,然后再更新maven项目即可 view下tool windows,选择maven projects,在打开的maven 窗口点击刷新即可 --> <java.version>1.7</java.version> </properties> <dependencies> <!--下载模版项目时,选上Web Thymeleaf JPA MySQL,此处就自动有这些依赖配置了--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</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-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
2.
启动类添加Servlet的支持:继承SpringBootServletInitializer
package com.lch.springboot03; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; @SpringBootApplication public class Springboot03Application extends SpringBootServletInitializer{ public static void main(String[] args) { SpringApplication.run(Springboot03Application.class, args); } /** * 启动类添加Servlet的支持:继承SpringBootServletInitializer * alt+ Insert 选择对configure()方法进行重写 * @return */ @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(Springboot03Application.class); } }
3.实体类 及 数据访问层接口定义
user.java
1 package com.lch.springboot03.domain; 2 3 import javax.persistence.*; 4 5 /** 6 * 实体类映射数据库表 7 * 使用spring data jpa开发的时候,会将实体类中的成员变量与表中的字段一一对应, 8 * 当我们在实体类中加上一个不与数据库表一一对应的成员变量的时候,此时我们只要在 9 * 这个成员变量上加上注解@Transient 10 */ 11 @Entity 12 public class User { 13 @Id 14 @GeneratedValue(strategy = GenerationType.IDENTITY) 15 private Long id; 16 17 @Column(nullable = false) 18 private String password; 19 //name="username" 设置userName属性映射到数据库的username字段,而不是默认的user_name 20 @Column(name = "username", nullable = true, unique = true) 21 private String userName; 22 23 @Column(nullable = true, unique = true) 24 private int age; 25 26 public Long getId() { 27 return id; 28 } 29 30 public void setId(Long id) { 31 this.id = id; 32 } 33 34 public String getPassword() { 35 return password; 36 } 37 38 public void setPassword(String password) { 39 this.password = password; 40 } 41 42 public String getUserName() { 43 return userName; 44 } 45 46 public void setUserName(String userName) { 47 this.userName = userName; 48 } 49 50 public int getAge() { 51 return age; 52 } 53 54 public void setAge(int age) { 55 this.age = age; 56 } 57 58 59 }