本篇文章给大家带来的内容是关于Spring Boot中使用Spring Data JPA连接数据库,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
以前都是用Mybatis进行数据库的开发,最近学习Spring Boot之后发现JPA显得更友好,所以我们就一起来了解一下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,就会让实体类和表相关连。
@Id 是标识出主键
@GeneratedValue是指定主键的自增方式。
第四,写查询方法。
写一个接口实现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了,我们来看一下需要注意的地方。注意:如果在写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)
Atas ialah kandungan terperinci Spring Boot中使用Spring Data JPA连接数据库. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!