首页 Java java教程 Spring Boot中使用Spring Data JPA连接数据库

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

Oct 17, 2018 pm 04:16 PM
java mysql spring windows

本篇文章给大家带来的内容是关于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,就会让实体类和表相关连。
如果其中某个属性我们不需要和数据库来关联只是在展示的时候做计算,只需要加上@Transient属性既可。

488367318-5bc6d35bbfeb6_articlex.png

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

第四,写查询方法。

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

3529224670-5bc6d4b9ab3b6_articlex.png

继承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后面跟属性名称:

1559578677-5bc6d8e54c60c_articlex.png

2680061242-5bc6d91105597_articlex.png

复杂查询

这里就需要我们自己写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连接数据库的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1677
14
CakePHP 教程
1431
52
Laravel 教程
1334
25
PHP教程
1280
29
C# 教程
1257
24
MySQL:SQL的实际应用 MySQL:SQL的实际应用 May 08, 2025 am 12:12 AM

MySQL受欢迎的原因是其性能卓越且易于使用和维护。1.创建数据库和表:使用CREATEDATABASE和CREATETABLE命令。2.插入和查询数据:通过INSERTINTO和SELECT语句操作数据。3.优化查询:使用索引和EXPLAIN语句提升性能。

MySQL与Oracle:许可,功能和福利 MySQL与Oracle:许可,功能和福利 May 08, 2025 am 12:05 AM

MySQL和Oracle的主要区别在于许可证、功能和优势。1.许可证:MySQL提供GPL许可证,免费使用,Oracle采用专有许可证,价格昂贵。2.功能:MySQL功能简单,适合Web应用和中小型企业,Oracle功能强大,适合大规模数据和复杂业务。3.优势:MySQL开源免费,适合初创公司,Oracle性能可靠,适合大型企业。

.NET Core快速入门教程 1、开篇:说说.NET Core的那些事儿 .NET Core快速入门教程 1、开篇:说说.NET Core的那些事儿 May 07, 2025 pm 04:54 PM

一、.NETCore的起源谈到.NETCore,就不能不提它的前身.NET。当年Java风头正盛,微软也对Java青睐有加,Windows平台上的Java虚拟机就是微软依据JVM标准开发的,据称是当时性能最佳的Java虚拟机。然而,微软有自己的小算盘,试图将Java与Windows平台捆绑,增加一些Windows特有的功能。Sun公司对此不满,导致双方关系破裂,微软随后推出了.NET。.NET从诞生之初就借鉴了Java的许多特性,并在语言特性和窗体开发等方面逐渐超越了Java。Java在1.6版

Java平台独立性:Web应用程序的优势 Java平台独立性:Web应用程序的优势 May 09, 2025 am 12:08 AM

Java'splatformindependencebenefitswebapplicationsbyallowingcodetorunonanysystemwithaJVM,simplifyingdeploymentandscaling.Itenables:1)easydeploymentacrossdifferentservers,2)seamlessscalingacrosscloudplatforms,and3)consistentdevelopmenttodeploymentproce

Linux和Windows之间的日志记录和审核有何不同? Linux和Windows之间的日志记录和审核有何不同? May 08, 2025 am 12:03 AM

LinuxOffersMoreGranularControlodlogging和audinging,wherwindowsProvidesMoreCentralizedSystem.1)linuxusestoolslikesyslog,rsyslog,rsyslog和journaldforcustomizablegging.2)

GO:使用标准'字符串”包的字符串操纵 GO:使用标准'字符串”包的字符串操纵 May 09, 2025 am 12:07 AM

Go语言使用"strings"包进行字符串操作。1)拼接字符串使用strings.Join函数。2)查找子串使用strings.Contains函数。3)替换字符串使用strings.Replace函数,这些函数高效且易用,适用于各种字符串处理任务。

关于Java平台独立性的真相:真的那么简单吗? 关于Java平台独立性的真相:真的那么简单吗? May 09, 2025 am 12:10 AM

Java'splatFormIndenceIsnotsimple; itinvolvesComplexities.1)jvmCompatiblemustbeiblemustbeensurecensuredAcrospPlatForms.2)nativelibrariesandsycallsneedcarefulhandling.3)

MySQL字符串数据类型:综合指南 MySQL字符串数据类型:综合指南 May 08, 2025 am 12:14 AM

mysqloffersvariousStringDatatYpes:1)charforfixed Lengtth Strings,IdealforConsistLengthDatalikeCountryCodes; 2)varcharforvariable长度长,合适的forfieldslikenames; 3)texttypefesforepesforlargertext,forforlargertext,goodforforblogblogpostsbutcan impactcuctcuctcuctpercrance; 4)biland;

See all articles