springboot系列07:jpa的使用
Springboot Jpa 介绍
Spring Boot Jpa 是 Spring 基于 ORM 框架、Jpa 规范的基础上封装的一套 Jpa 应用框架,可使开发者用极简的代码即可实现对数据的访问和操作。提供了包括增删改查等在内的常用功能,且易于扩展!学习并使用 Spring Data Jpa 可以极大提高开发效率!
Spring Boot Jpa 让我们解脱了 DAO 层的操作,基本上所有 CRUD 都可以依赖于它来实现
-
引入相关依赖
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.8</version> </dependency> </dependencies>
-
定义实体Bean
package com.example.jpa.domain; import lombok.Data; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import java.io.Serializable; @Data @Entity(name = "tb_user") public class User implements Serializable { @Id @GeneratedValue private Long id; @Column(nullable = false, unique = true) private String userName; @Column(nullable = false) private String passWord; @Column(nullable = false, unique = true) private String email; @Column(nullable = true, unique = true) private String nickName; @Column(nullable = false) private String regTime; @Column(nullable = false) private Integer age; }
-
定义UserRepository接口
package com.example.jpa.repository; import com.example.jpa.domain.User; import org.springframework.data.jpa.repository.JpaRepository; public interface UserRepository extends JpaRepository<User, Long> { }
-
测试保存
package com.example.jpa.respository; import com.example.jpa.BaseTest; import com.example.jpa.domain.User; import com.example.jpa.repository.UserRepository; import org.junit.Test; import javax.annotation.Resource; import java.text.SimpleDateFormat; import java.util.Date; public class UserRppositoryTest extends BaseTest { @Resource private UserRepository userRepository; @Test public void testSave(){ User user = new User(); user.setAge(30); user.setNickName("zhangl1"); user.setUserName("zhangl1"); user.setPassWord("123456"); user.setEmail("17969693891@qq.com"); user.setRegTime(new SimpleDateFormat("yyyy-MM-dd").format(new Date())); //true Assert.assertNotNull(userRepository.save(user)); } }
-
测试查询所有
/** * 查询所有 */ @Test public void testFindAll(){ Assert.assertEquals(2, userRepository.findAll().size()); }
-
测试查询主键
/** * 根据主键查询 */ @Test public void testFindById(){ Assert.assertEquals("13128600812", userRepository.findById(1L).get().getPassWord()); }
自定义简单查询
自定义的简单查询就是根据方法名来自动生成 SQL,主要的语法是findXXBy
,readAXXBy
,queryXXBy
,countXXBy
, getXXBy
后面跟属性名称:
-
接口定义
public interface UserRepository extends JpaRepository<User, Long> { User findByUserName(String userName); }
-
测试类
/** * 根据用户名查询 */ @Test public void testFindByUserName(){ Assert.assertNotNull( userRepository.findByUserName("zhangl1") ); }