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,countXXBygetXXBy后面跟属性名称:

  • 接口定义

public interface UserRepository extends JpaRepository<User, Long> {

    User findByUserName(String userName);
}

 

  • 测试类

   /**
     * 根据用户名查询
     */
    @Test
    public void testFindByUserName(){
        Assert.assertNotNull( userRepository.findByUserName("zhangl1") );
    }

 

posted @ 2022-01-13 19:09  IT6889  阅读(111)  评论(0编辑  收藏  举报