序言:
SpringDataJPA秉承大道至简的设计理念,给我们的数据层开发带来的极大的便利。诸如基于注解就可完成实体-数据库的映射关系,提供自带的通用Repo接口、接口方法约定名称即可实现数据访问等特性都是值得称赞的功能。
正文:Spring Data JPA 实战步骤
1.引入依赖
在pom.xml 中添加ORM框架(JPA)和数据库驱动(MySQL-Conn)的依赖。
<?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">
<!--继承信息 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.0.M4</version>
<relativePath/>
</parent>
<!--依赖管理 -->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</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>
</project>
2. 添加数据源
在application.yml 添加数据源信息,具体如下:
spring:
datasource:
url: jdbc:mysql://localhost:3306/socks?useSSL=false
username: root
password: root
driver-class-name: com.mysql.jdbc.Driver
3. 编写数据层代码
具体代码:
在仓库中添加用户接口,然后继承通用仓库接口JpaRepository,即可获得通用的增删改查功能。例如findAll 、getOne 等常用方法。
public interface UserRepository extends JpaRepository<User, String> {
List<User> findByUsername(String username);
}
4. 添加数据库记录
在Navicat 连接本地数据库,随便打开查询窗口,然后执行脚本内容,如下:
DROP DATABASE IF EXISTS `socks`;
CREATE DATABASE `socks`;
USE `SOCKS`;
DROP TABLE IF EXISTS `t_user`;
CREATE TABLE `t_user` (
`USER_ID` varchar(50) ,
`USERNAME` varchar(50) ,
`PASSWORD` varchar(50)
) ;
INSERT INTO `t_user` VALUES ('1', 'admin', 'admin');
INSERT INTO `t_user` VALUES ('2', 'yizhiwazi', '123456');
5. 启动项目
在启动项目前,记得先添加好数据库socks和用户表t_user ,并插入几条测试数据。准备好数据后,启动项目,测试相关接口。
@SpringBootApplication
@EnableJpaRepositories("com.hehe.repository") //指定仓库的扫描路径
public class JpaApplication {
public static void main(String[] args) {
SpringApplication.run(JpaApplication.class, args);
}
}
6. 单元测试
import static org.assertj.core.api.Assertions.assertThat;
@RunWith(SpringRunner.class)
@SpringBootTest
public class JpaApplicationTest {
@Autowired
UserRepository userRepository;
@Test
public void testuser() {
//添加测试数据
userRepository.save(new User("1111","test-data-jpa","first-pass"));
userRepository.save(new User("9527","test-data-jpa","second-pass"));
//开始进行测试
assertThat(userRepository.existsById("9527")).isEqualTo(true);
assertThat(userRepository.findByUsername("test-data-jpa").size()).isEqualTo(2);
}
}
网友评论