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") );
}

浙公网安备 33010602011771号