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
,countXXBy
, getXXBy
后面跟属性名称:
-
接口定义
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" ) ); } |
分类:
spring boot
标签:
spring
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下