SpringBoot学习笔记(三):Jpa基本使用

Spring Data JPA 参考指南

一、Spring Boot Jpa 介绍

Jpa 是什么?

  • Jpa (Java Persistence API) 是 Sun 官方提出的 Java 持久化规范。它为 Java 开发人员提供了一种对象/关联映射工具来管理 Java 应用中的关系数据。

  • Spring Data JPA为Java Persistence API(JPA)提供了存储库支持。它简化了需要访问JPA数据源的应用程序的开发。

二、pom.xml引入Maven依赖

<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>
</dependencies>

三、实体类

  • @Entity:声明此类为实体类
  • @Id:声明实体属性为表主键
  • @GeneratedValue:主键生成策略,通过strategy属性指定
    • TABLE 使用数据库表来模拟序列产生主键
    • SEQUENCE 根据底层数据库的序列来生成主键,通过@SequenceGenerator注解指定序列名,条件是数据库支持序
    • IDENTITY 使用数据库ID自增主键,条件是数据库支持
    • AUTO 默认,JPA根据数据库类型自动选择适合的策略
  • @Column:声明实体属性的表字段定义
@Entity
public class User  {
    @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;
    //省略getter和setter方法、构造方法
}

四、继承 JpaRepository

  • JpaRepository继承自PagingAndSortingRepositoryQueryByExampleExecutor接口,JpaRepository基于JPA的Repository接口,极大减少了JPA作为数据访问的代码,JpaRepository是实现Spring Data JPA技术访问数据库的关键接口。
public interface UserRepository extends JpaRepository<User, Long>{
	User findByUserName(String userName);
}

五、测试类

  • @RunWith就是一个运行器
    @RunWith(JUnit4.class)就是指用JUnit4来运行
    @RunWith(SpringJUnit4ClassRunner.class),让测试运行于Spring测试环境
    @RunWith(Suite.class)的话就是一套测试集合
  • @SpringBootTest注解进行单元测试
  • @Resource默认按byName实现依赖注入
@RunWith(SpringRunner.class)
@SpringBootTest
public class UserRepositoryTests {
	@Resource
    private UserRepository userRepository;
	@Test
	public void testSave() {
		Date date = new Date();
		DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG);
		String formattedDate = dateFormat.format(date);
		
		userRepository.save(new User("aa", "aa123456","aa@126.com", "aa",  formattedDate));
		userRepository.save(new User("bb", "bb123456","bb@126.com", "bb",  formattedDate));
		userRepository.save(new User("cc", "cc123456","cc@126.com", "cc",  formattedDate));

		Assert.assertEquals(3, userRepository.findAll().size());
		userRepository.delete(userRepository.findByUserName("aa"));
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ChenBbMing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值