ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

02:SpringBoot整合SpringDataJPA实现数据库的访问(一)

2020-11-22 07:02:20  阅读:242  来源: 互联网

标签:02 SpringDataJPA SpringBoot spring 接口 访问 专题 方法


02:SpringBoot整合SpringDataJPA实现数据库的访问(一)

点击上方“java进阶架构师”,置顶公众号。
用最少的时间,走最正确的架构师之路!
02:SpringBoot整合SpringDataJPA实现数据库的访问(一)
springboot专题预计60讲左右,本篇作为第二篇带你5分钟快速完成增删改查操作。

一、SpringDataJPA和Hibernate

02:SpringBoot整合SpringDataJPA实现数据库的访问(一)

Spring Data JPA等于在ORM之上又进行了一次封装,但具体的对数据库的访问依然要依赖于底层的ORM框架,Spring Data JPA默认是通过Hibernate实现的

二、SpringDataJPA体系

02:SpringBoot整合SpringDataJPA实现数据库的访问(一)

三、解析与理解

最高层的Repository<T,ID>是一个空接口,我们定义的数据访问类只要实现或者继承这个接口,这个数据访问类就可以被spring data所管理,就此可以使用spring为我们提供操作方法(在原来的spring data中我们需要配置很多和Spring Data Repository相关的设置,但是现在有了spring boot,全部都已经自动配置好了)。
这个接口要实现有两个泛型参数:

  • 第一个T表示实体(entry)类
  • 第二个表示主键的类型

四、简单实现:那么我们开始写一个数据库访问接口

1、拷贝依赖
02:SpringBoot整合SpringDataJPA实现数据库的访问(一)
2、建表,我这里建一张student表,这个略
3、建立实体类,student类,这个略。如果这两部都要图文教学建议不学。
4、首先回忆一下,我们用mybatis的时候是怎么样的?是不是要建立对应的student的xml文件,,xml文件里面写对应的sql语句,然后写对应的mapper接口,然后service调用对应mapper接口的方法?(hibernate我就不说了,我早就忘了怎么用了)
5、回忆完毕,到了SpringDataJPA这里,我们只需要创建studentRepo类继承JpaRepository<T,ID>或他下面的接口即可!如下:02:SpringBoot整合SpringDataJPA实现数据库的访问(一)

6、里面不需要再写什么方法或者sql语句了,Repository接口已经封装好最基本的crud和分页查询等常规操作!
7、那么我们来看下我们的测试类如下,继承了JpaRepository,不需要重写,直接调用,基本的增删改查都有了。当然按照实际做法应该是要写个service层,然后再调用service层方法,我这里就简化了直接调用repo类。
02:SpringBoot整合SpringDataJPA实现数据库的访问(一)
8、可能细心的同学发现了,添加和修改都是save方法,没错,jpa会根据是否有id来进行新增或者修改操作。那么究竟有哪些可以直接用的方法呢?看下面即可。

五、JPA常用方法一览表

将不建议使用的方法置灰,此类方法多为CrudRepository接口、PagingAndSortingRepository接口中定义,后来JpaRepository接口中又定义了替代方法,更方便使用。如查询全部findall
02:SpringBoot整合SpringDataJPA实现数据库的访问(一)
当然实际开发中肯定不止是crud这么点东西,敬请期待下篇。

本公众号已开设如下专题,欢迎长按以下二维码,查看相关专题!

  • 【mysql优化专题】【HTTP协议】
  • 【架构技术专题】【多线程/池专题】
  • 【dubbo专题】【dubbo源码专题】
  • 【JVM调优专题】【HTTP协议专题】
  • 【设计模式专题】【高并发专题】
  • 【架构技术专题】【netty专题】
  • 【数据结构专题】【redis专题】

02:SpringBoot整合SpringDataJPA实现数据库的访问(一)

标签:02,SpringDataJPA,SpringBoot,spring,接口,访问,专题,方法
来源: https://blog.51cto.com/15009303/2553096

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有