这篇文章记录了搭建springboot项目并测试springDataJPA的过程,接下来一起看看吧。
1.访问阿里云java脚手架网站
点击访问
2.按照下图勾选并获取代码
3.将获取到的代码解压到idea工作空间。
下图的JPAdemo就是我的项目
4.打开idea,导入项目
5.在pom文件中添加JPA相关依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
6.在application.properties中添加配置
如果发现application.properties中文乱码,就更改下图所示的地方
添加如下配置:
# 数据库连接
spring.datasource.url=jdbc:mysql://localhost:3306/jpa_test?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=true
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# JPA配置
spring.jpa.properties.hibernate.hbm2ddl.auto=create
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
# SQL输出
spring.jpa.show-sql=true
# format 下SQL输出
spring.jpa.properties.hibernate.format_sql=true
配置说明:
1)spring.jpa.properties.hibernate.hbm2ddl.auto:该配置比较常用,配置实体类维护数据库表结构的具体行为。当服务首次启动时会在数据库中生成相应的表,后续启动服务时,如果实体类有增加属性就会在数据中添加相应字段,原来的数据仍然存在。
update:常用的属性,表示当实体类的属性发生变化时,表结构跟着更新。
create:表示启动时删除上一次生成的表,并根据实体类重新生成表,之前表中的数据会被清空。
create-drop:表示启动时根据实体类生成表,但是当sessionFactory关闭时表会被删除。
validate:表示启动时验证实体类和数据表是否一致。
none:什么都不做。
2)spring.jpa.show-sql:表示hibernate在操作时在控制台打印真实的SQL语句,便于调试。
3)spring.jpa.properties.hibernate.format_sql:表示格式化输出的JSON字符串,便于查看。
4)spring.jpa.properties.hibernate.dialect:指定生成表名的存储引擎为InnoDB。
7.根据上面的配置信息,创建一个数据库。
创建数据库,可以参考这篇文章:创建数据库命令
如果没有按照mysql数据库,先安装一下mysql。
创建数据库也可以使用可视化客户端创建,更加简单方便。如DBeaver
8.创建实体类
package com.yangjunbo.JPADemo.pojo;
import javax.persistence.*;
@Entity
@Table(name = "Users")
public class User {
@GeneratedValue(strategy= GenerationType.IDENTITY)
@Id
private Long id;
@Column(length = 64)
private String name;
@Column(length = 64)
private String password;
private int age;
public User(){
}
public User(String name, String password, int age) {
this.name = name;
this.password = password;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public void setId(Long id) {
this.id = id;
}
public Long getId() {
return id;
}
}
9.启动项目
启动项目,可以看到输出如下图
系统启动后自动连接数据库,创建数据表结构,并打印出执行的SQL语句。如果查看数据库,可以看到数据库中对应的Users表也创建成功了,说明项目已经成功集成JPA并创建实体表。
10.测试增删改查功能
1.先创建一个UserRepository类
package com.yangjunbo.JPADemo.repository;
import com.yangjunbo.JPADemo.pojo.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface UserRepository extends JpaRepository<User,Long> {
}
2.创建UserRepositoryTest测试类
package com.yangjunbo.JPADemo;
import com.yangjunbo.JPADemo.pojo.User;
import com.yangjunbo.JPADemo.repository.UserRepository;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import javax.annotation.Resource;
@RunWith(SpringRunner.class)
@SpringBootTest
public class UserRepositoryTest {
@Resource
private UserRepository userRepository;
@Test
public void testSave(){
User user = new User("yaogunxia","123456",40);
userRepository.save(user);
}
@Test
public void testUpdate() {
User user = userRepository.findById(1L).get();
user.setPassword("12345678");
userRepository.save(user);
}
@Test
public void testDelete() {
User user = new User("yaogunxia","12345678",40);
userRepository.delete(user);
}
@Test
public void testSelect() {
userRepository.findById(1L);
}
}
3.执行测试方法验证数据是否插入更新删除查询。
参考书籍:《springboot从入门到实战-章为忠著》