springboot系列07:jpa的使用

Springboot Jpa 介绍

 

Spring Boot Jpa 是 Spring 基于 ORM 框架、Jpa 规范的基础上封装的一套 Jpa 应用框架,可使开发者用极简的代码即可实现对数据的访问和操作。提供了包括增删改查等在内的常用功能,且易于扩展!学习并使用 Spring Data Jpa 可以极大提高开发效率!

1
Spring Boot Jpa 让我们解脱了 DAO 层的操作,基本上所有 CRUD 都可以依赖于它来实现

 

  • 引入相关依赖

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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接口

1
2
3
4
5
6
7
8
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> {
 
}

 

  • 测试保存

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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));
    }
 
}

 

  • 测试查询所有

1
2
3
4
5
6
7
/**
 * 查询所有
 */
@Test
public void testFindAll(){
    Assert.assertEquals(2, userRepository.findAll().size());
}

 

  • 测试查询主键

1
2
3
4
5
6
7
/**
 * 根据主键查询
 */
@Test
public void testFindById(){
    Assert.assertEquals("13128600812",  userRepository.findById(1L).get().getPassWord());
}

 

自定义简单查询

自定义的简单查询就是根据方法名来自动生成 SQL,主要的语法是findXXBy,readAXXBy,queryXXBy,countXXBygetXXBy后面跟属性名称:

  • 接口定义

1
2
3
4
public interface UserRepository extends JpaRepository<User, Long> {
 
    User findByUserName(String userName);
}

 

  • 测试类

1
2
3
4
5
6
7
/**
  * 根据用户名查询
  */
 @Test
 public void testFindByUserName(){
     Assert.assertNotNull( userRepository.findByUserName("zhangl1") );
 }

 

posted @   IT6889  阅读(126)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
点击右上角即可分享
微信分享提示