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号
浙公网安备 33010602011771号