Spring Boot中使用Spring Data JPA连接数据库的方法

2024-03-14,,

小编给大家分享一下Spring Boot中使用Spring Data JPA连接数据库的方法,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!

Spring Data JPA

JPA简单介绍

Java持久性API(JPA)是Java的一个规范。 它用于在Java对象和关系数据库之间保存数据。
JPA充当面向对象的领域模型和关系数据库系统之间的桥梁。由于JPA只是一个规范,它本身不执行任何操作。它需要一个实现。因此,像Hibernate,TopLink和iBatis这样的ORM工具实现了JPA数据持久性规范。

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

基本查询

Spring Data JPA已经实现了一部分基础的数据库操作,包括基本的增删改查。

第一,需要在pom.xml里面引入相关的依赖。

    <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    </dependency>
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>

第二,需要在application.properties配置文件中添加数据库的相关配置及jpa的相关配置

    #配置数据源
    spring.datasource.driver-class-name=com.mysql.jdbc.Driver
    spring.datasource.url=jdbc:mysql://localhost:3306/springboot
    spring.datasource.username=username
    spring.datasource.password=password
    
    #jpa数据库表格创建的方式,和控制台sql的打印
    jpa.hibernate.ddl-auto=update
    jpa.hibernate.show-sql=true

第三,写实体类。

正常情况下我们在实体类上加入注解@Entity,就会让实体类和表相关连。
如果其中某个属性我们不需要和数据库来关联只是在展示的时候做计算,只需要加上@Transient属性既可。

@Id 是标识出主键
@GeneratedValue是指定主键的自增方式。

第四,写查询方法。

写一个接口实现JpaRepository接口即可:
JpaRepository后面需要添加两个参数,一个是实体类,另一个是主键的类型。

继承JpaRepository之后,就可以使用简单的增删改查功能了。

@Test
public void testBaseQuery() throws Exception {
    Girl girl=new Girl();
    userRepository.findAll();
    userRepository.findOne(1);
    userRepository.save(girl);
    userRepository.delete(girl);
    // ...
}

自定义简单查询

因为这只能满足我们的基本查询,如果不想按照他给的查询的话我们就需要自己写查询语句了吗?答案肯定是否定的了。我们还是可以按照JPA的规则生成一些查询语句的。

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


复杂查询

这里就需要我们自己写sql了,我们来看一下需要注意的地方。
在SQL的查询方法上面使用@Query注解,如涉及到删除和修改在需要加上@Modifying.也可以根据需要添加@Transactional 对事物的支持,查询超时的设置等。

注意:如果在写Query的时候,HQL语句中表名应该是ORM映射的类名。

    //传单个值的时候
    @Query("select u from User u where u.age = ?#{[0]}")
    List<User> findUsersByAge(int age);
    
    //传多个值的时候
    @Query("select u from User u where u.firstname = :#{#customer.firstname}")
    List<User> findUsersByCustomersFirstname(@Param("customer") Customer customer)

看完了这篇文章,相信你对Spring Boot中使用Spring Data JPA连接数据库的方法有了一定的了解,想了解更多相关知识,欢迎关注本站行业资讯频道,感谢各位的阅读!

《Spring Boot中使用Spring Data JPA连接数据库的方法.doc》

下载本文的Word格式文档,以方便收藏与打印。