前言
本章讲解SpringBoot整合SpringData JPA的相关知识
方法
1.概念
相信大家对SpringData JPA并不陌生,我们之前学过了它的一些相关的操作。
SpringData JPA板块传送门——SpringData JPA
之前做的是Spring+SpringData JPA,配置文件编写的异常麻烦。但是我们使用了SpringBoot之后,一切就变的轻松加愉快!
2.SpringBoot整合SpringData JPA步骤
1)新建相关项目
2)修改pom文件,引入必要的依赖
<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>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.7.RELEASE</version>
</parent>
<groupId>cn.edu.ccut</groupId>
<artifactId>springboot-jpa</artifactId>
<version>0.0.1-SNAPSHOT</version>
<properties>
<!-- 设定Java的版本 -->
<java.version>1.8</java.version>
<!-- 解决pom.xml首行报错 -->
<maven-jar-plugin.version>3.1.0</maven-jar-plugin.version>
</properties>
<dependencies>
<!-- 配置springBoot的web启动器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 配置Thymeleaf启动器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<!-- 配置springData JPA的启动器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!-- mysql jdbc -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<!-- 引入Druid连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.20</version>
</dependency>
<!-- 配置devtools -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
<!-- 配置springBoot的test启动器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>cn.edu.ccut.App</mainClass>
</configuration>
</plugin>
</plugins>
</build>
</project>
以上呢就是整合SpringData JPA所需要的一些相关的依赖。
3)修改application.properties
#Mysql JDBC
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/jwang
spring.datasource.username=root
spring.datasource.password=root
#Druid Pool
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
#SpringData JPA
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
你会发现,引入了SpringBoot之后,整合SpringData JPA 无需配置多少东西的!!!
4)创建实体类
package cn.edu.ccut.bo;
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
public class Users implements Serializable {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)//自增长
private Integer id;
private String username;
private String password;
public Users() {
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "User{" +
"id='" + id + '\'' +
", username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
}
5)创建Dao层接口
package cn.edu.ccut.dao;
import org.springframework.data.jpa.repository.JpaRepository;
import cn.edu.ccut.bo.Users;
/**
* 继承JpaRepository<T, ID>接口
* T传入当前操作的实体类,ID传入该类的主键类型
* @author jwang
*
*/
public interface UserDAO extends JpaRepository<Users, Integer>{
}
你没有看错,本次示例就是空的接口哦。
6)services相关实现
package cn.edu.ccut.service.impl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import cn.edu.ccut.bo.Users;
import cn.edu.ccut.dao.UserDAO;
import cn.edu.ccut.service.UserService;
@Service
@Transactional
public class UserServiceImpl implements UserService{
@Autowired
private UserDAO userDao;
@Override
public List<Users> getAllUser() {
return userDao.findAll();
}
}
本次的业务方法为查找全部用户信息。
7)controller层实现
package cn.edu.ccut.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import cn.edu.ccut.bo.Users;
import cn.edu.ccut.service.UserService;
@Controller
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("/show")
public String showUser(Model model){
List<Users> allUser = userService.getAllUser();
model.addAttribute("users", allUser);
return "show";
}
}
8)页面展示相关
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>SpringBoot+SpringData JPA</title>
</head>
<body>
<table border="1">
<tr>
<th>编号</th>
<th>姓名</th>
<th>密码</th>
</tr>
<tr th:each="user : ${users}">
<td th:text="${user.id}"></td>
<td th:text="${user.username}"></td>
<td th:text="${user.password}"></td>
</tr>
</table>
</body>
</html>
9)测试用例方法
package cn.edu.ccut.test;
import java.util.List;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import cn.edu.ccut.App;
import cn.edu.ccut.bo.Users;
import cn.edu.ccut.service.UserService;
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes={App.class})
public class UserTest {
@Autowired
private UserService userService;
@Test
public void testFindAllUser() {
List<Users> users = userService.getAllUser();
for (Users user : users) {
System.out.println(user);
}
}
}
测试用例执行结果:
10)启动项目,访问http://localhost:8080/show,观察效果