登录
首页 >  数据库 >  MySQL

Spring Boot 的简单教程(四)数据库连接之Spring Data JPA的使用

来源:SegmentFault

时间:2023-02-23 19:19:53 123浏览 收藏

编程并不是一个机械性的工作,而是需要有思考,有创新的工作,语法是固定的,但解决问题的思路则是依靠人的思维,这就需要我们坚持学习和更新自己的知识。今天golang学习网就整理分享《Spring Boot 的简单教程(四)数据库连接之Spring Data JPA的使用》,文章讲解的知识点主要包括MySQL、Windows、Java、spring、intellij-idea,如果你对数据库方面的知识点感兴趣,就不要错过golang学习网,在这可以对大家的知识积累有所帮助,助力开发能力的提升。

以前都是用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里面引入相关的依赖。

    mysqlmysql-connector-javaorg.springframework.bootspring-boot-starter-data-jpa

第二,需要在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属性既可。

clipboard.png

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

第四,写查询方法。

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

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

clipboard.png

clipboard.png

复杂查询

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

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

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

今天带大家了解了MySQL、Windows、Java、spring、intellij-idea的相关知识,希望对你有所帮助;关于数据库的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表