数据仓库层Repository(CrudRepository、PagingAndSortingRepository、JpaRepository)
什么是数据仓库层Repository?
数据仓库接口的作用:Repository原意指的是仓库,即数据仓库的意思。Repository居于业务层和数据层之间,将两者隔离开来,在它的内部封装了数据查询和存储的逻辑。
Repository接口:
1、CrudRepository

2、PagingAndSortingRepository

3、JpaRepository

CrudRepository、PagingAndSortingRepository和JpaRepository三者的关系图如下所示:

综上所述,JpaRepository的功能最全、最强大,所以我们的数据仓库类继承JpaRepository
注意: 创建的数据仓库类是一个接口(不是抽象类、也不是普通类),针对这个接口添加注解@Repository。
Repository和DAO的区别
DAO是传统MVC中Model的关键角色,全称是Data Access Object。DAO直接负责数据库的存取工作,乍一看两者非常类似,但从架构设计上讲两者有着本质的区别:Repository是相对对象而言,DAO则是相对数据库而言,虽然可能是同一个东西 ,但侧重点完全不同。
JpaSpecificationExecutor
JpaSpecificationExecutor(用于特殊的业务场景如:既要有分页又要有排序,里面还有各种动态的查询,虽然此时通过JpaRepository能实现,但是JpaSpecificationExecutor更简单)

自定义接口继承JpaRepository
/*公司数据仓库接口(创建的数据仓库类是一个接口(不是抽象类、也不是普通类),针对这个接口添加注解@Repository。)*/
//类只能继承单个,但是接口可以继承多个
@Repository
public interface CompanyRepo extends JpaRepository<Company,String> { // 指向对应的实体类Company,String与主键的类型一致(uuid string类型),如果是自增列则填写int// 原生sql语句查询,需要nativeQuery=true,如果为false则表示使用HQL语句@Query(value = "select * from company where comname=?1",nativeQuery = true) // 精准查询List<Company> findByNativeSQL(String comname); // 表示传入一个公司名称comname,那么就会把所有满足该名称的信息查询出来@Query(value="select * from company where comname like '%?1%'",nativeQuery = true) // 模糊查询List<Company> findByNativeSQL1(String comname);//原生sql语句操作(涉及到数据变动的,如删除和更新,必须加注解@Modifying)@Modifying@Query(value = "update company set comaddress =?1 where comname=?2",nativeQuery = true)void updateByName(String comaddress,String comname);}
相关文章:
数据仓库层Repository(CrudRepository、PagingAndSortingRepository、JpaRepository)
什么是数据仓库层Repository? 数据仓库接口的作用:Repository原意指的是仓库,即数据仓库的意思。Repository居于业务层和数据层之间,将两者隔离开来,在它的内部封装了数据查询和存储的逻辑。 Repository接口ÿ…...
大数据技术架构(组件)33——Spark:Spark SQL--Join Type
2.2.2、Join Type2.2.2.1、Broadcast Hash Join (Not Shuffled)就是常说的MapJoin,join操作在map端进行的。场景:join的其中一张表要很小,可以放到Driver或者Executor端的内存中。原理:1、将小表的数据广播到所有的Executor端,利用collect算子…...
Linux: bash起后台进程引发的僵尸进程
1. 前言 限于作者能力水平,本文可能存在谬误,因此而给读者带来的损失,作者不做任何承诺。 2. 案例 原来的故事是 这样 的,感兴趣的读者可以直接前往。我从中截取了一段重现故事中问题的代码(对原代码做了小小调整&a…...
网络安全攻防中,Rock-ON自动化的多功能网络侦查工具,Burpsuite被动扫描流量转发
网络安全攻防中,Rock-ON自动化的多功能网络侦查工具,Burpsuite被动扫描流量转发。 #################### 免责声明:工具本身并无好坏,希望大家以遵守《网络安全法》相关法律为前提来使用该工具,支持研究学习ÿ…...
电子技术——共模抑制
电子技术——共模抑制 我们在之前学习过,无论是MOS还是BJT的差分输入对,共模信号并不会改变漏极电流的大小,因此我们说差分输入对共模信号无响应。但是实际上由于各种客观非理想因素,例如电流源有限阻抗等,此时共模是影…...
对KMP简单的理解
声明:下边的例子均表示下标从1开始的数组 ne数组的定义: next[i] 就是使子串 s[1…i] 有最长相等前后缀的前缀的最后一位的下标。ne[i]也可以表示相等子串的长度 准备执行jne[j]时, 表示当前s[i]!p[j1] , 如果ne[j]1 ,那么下…...
Hibernate不是过时了么?SpringDataJpa又是什么?和Mybatis有什么区别?
一、前言 ps: 大三下学期,拿到了一份实习。进入公司后发现用到的技术栈有Spring Data Jpa\Hibernate,但对于持久层框架我只接触了Mybatis\Mybatis-Plus,所以就来学习一下Spring Data Jpa。 1.回顾MyBatis 来自官方文档的介绍:MyBatis 是一款…...
数学建模拓展内容:卡方检验和Fisher精确性检验(附有SPSS使用步骤)
卡方检验和Fisher精确性检验卡方拟合度检验卡方独立性检验卡方检验的前提假设Fisher精确性检验卡方拟合度检验 卡方拟合度检验概要:卡方拟合度检验也被称为单因素卡方检验,用于检验一个分类变量的预期频率和观察到的频率之间是否存在显著差异。 卡方拟…...
【Python学习笔记之七大数据类型】
Python数据类型:Number数字、Boolean布尔值、String字符串、list列表、tuple元组、set集合、dictionary字典 int整数 a1 print(a,type(a))float浮点数 b1.1 print(b,type(b))complex复数 c100.5j print(c,type(c))bool布尔值:True、False,true和false并非Python…...
Android系统之onFirstRef自动调用原理
前言:抽丝剥茧探究onFirstRef究竟为何在初始化sp<xxx>第一个调用?1.onFirstRef调用位置<1>.system/core/libutils/RefBase.cpp#include <utils/RefBase.h>//1.初始化强指针 void RefBase::incStrong(const void* id) const {weakref_i…...
ipv6上网配置
一般现在的宽带都已经支持ipv6了,但是需要一些配置才能真正用上ipv6。记录一下配置过程。 当前测试环境为移动宽带,光猫下面接了一个路由器,家里所有的设备都挂到这个路由器下面的。 1. 光猫改桥接 光猫在使用路由模式下,ipv6无…...
python实现聚类技术—复杂网络社团检测 附完整代码
实验内容 某跆拳道俱乐部数据由 34 个节点组成,由于管理上的分歧,俱乐部要分解成两个社团。 该实验的任务即:要求我们在给定的复杂网络上检测出两个社团。 分析与设计 实验思路分析如下: 聚类算法通常可以描述为用相似度来衡量两个数据的远近,搜索可能的划分方案,使得目标…...
如何判断两架飞机在汇聚飞行?(如何计算两架飞机的航向夹角?)内含程序源码
ok,在开始一切之前,让我先猜一猜,你是不是想百度“二维平面下如何计算两个移动物体的航向夹角?”如果是,那就请继续往下看。 首先,我们要明确一个概念:航向角≠航向夹角!࿰…...
Scipy稀疏矩阵bsr_array
文章目录基本原理初始化内置方法基本原理 bsr,即Block Sparse Row,bsr_array即块稀疏行矩阵,顾名思义就是将稀疏矩阵分割成一个个非0的子块,然后对这些子块进行存储。通过输入维度,可以创建一个空的bsr数组࿰…...
LeetCode笔记:Weekly Contest 332
LeetCode笔记:Weekly Contest 332 1. 题目一 1. 解题思路2. 代码实现 2. 题目二 1. 解题思路2. 代码实现 3. 题目三 1. 解题思路2. 代码实现 4. 题目四 1. 解题思路2. 代码实现 比赛链接:https://leetcode.com/contest/weekly-contest-332/ 1. 题目一…...
autox.js在vscode(win7)与雷神模拟器上的开发环境配置
目录 下载autox.js 安装autox.js? 在电脑上搭建autox.js开发环境 安装vscode 安装autox.js插件 雷神模拟器连接vscode 设置雷神模拟器IP 设置autox.js应用IP地址等 下载autox.js 大体来说,就是一个运行在Android平台上的JavaScript 运行环境 和…...
创建阿里云物联网平台
创建阿里云物联网平台 对云平台设备创建过程做记录,懒得再看视频 文章参考视频:https://www.bilibili.com/video/BV1jP4y1E7TJ?p26&vd_source50694678ae937a743c59db6b5ff46c31 阿里云:https://www.aliyun.com 1.物联网平…...
【链式二叉树】数据结构链式二叉树的(万字详解)
前言: 在上一篇博客中,我们已经详解学习了堆的基本知识,今天带大家进入的是二叉树的另外一种存储方式----“链式二叉树”的学习,主要用到的就是“递归思想”!! 本文目录1.链式二叉树的实现1.1前置说明1.2结…...
Koa2篇-简单介绍及使用
一.简介koa2是基于 Node.js 平台的下一代 web 开发框架, 致力于成为一个更小、更富有表现力、更健壮的 Web 框架。 可以避免异步嵌套. express中间件是异步回调,Koa2原生支持async/await二.async/awaitconst { rejects } require("assert"); const { resolve } req…...
Linux ALSA 之十一:ALSA ASOC Path 完整路径追踪
ALSA ASOC Path 完整路径追踪一、ASoc Path 简介二、ASoc Path 完整路径2.1 tinymix 设置2.2 完整路径 route一、ASoc Path 简介 如前面小节所描述,ASoc 中 Machine Driver 是 platform driver 和 codec driver 的粘合剂,audio path 离不开 FE/BE/DAI l…...
AI时代程序员创业指南:从超级个体到一人企业
AI时代程序员创业指南:从超级个体到一人企业 AI给了每个人杠杆,但不是每个人都能用好。认知、决策能力,甚至运气,同样重要。 引子:那些"超级个体"的真实故事 最近读到一篇AIX财经的报道,采访了6…...
会议纪要助手:OpenClaw+GLM-4.7-Flash实时转录与摘要
会议纪要助手:OpenClawGLM-4.7-Flash实时转录与摘要 1. 为什么需要自动化会议纪要 每次开完会最头疼的就是整理会议纪要。上周三的部门周会结束后,我花了40分钟反复听录音、手敲重点,结果还是漏掉了两个关键决议事项。这种低效重复劳动让我…...
MySQL 8.0迁移后表名报错?别急着改my.cnf,先搞懂lower_case_table_names这个坑
MySQL 8.0表名大小写陷阱:从踩坑到系统化解决方案 当数据库管理员小李将公司核心业务系统从MySQL 5.7迁移到8.0版本后,系统突然开始频繁报错"表不存在",而实际上这些表明明就在数据库中。这个看似简单的表象背后,隐藏着…...
AI Agent与传统RPA工具区别:深度解析企业智能自动化的代际跃迁
在人工智能技术从大语言模型的“对话式交互”向“行动式智能体”跨越的关键周期内,AI Agent(智能体)与传统 RPA(机器人流程自动化)工具的区别已成为企业数字化转型的核心议题。这一区别不仅体现在技术架构的演进上&…...
跨模态迁移学习在超声目标检测中的落地实践(附乳腺超声数据集处理技巧)
跨模态迁移学习在医学超声检测中的实战指南:从自然图像到乳腺超声的模型迁移 医学影像分析领域长期面临标注数据稀缺的困境,尤其对于超声影像这类高度依赖操作者经验的模态。当我在去年参与一个乳腺癌早期筛查项目时,团队仅能获取到200例标注…...
别光重启!Ping域名失败但nslookup能通?一个注册表键值引发的血案(附排查脚本)
当Ping域名失败但nslookup正常:深入解析Windows注册表键值缺失的连锁反应 那天凌晨三点,运维工程师李明在机房盯着屏幕,额头渗出细密的汗珠。客户的核心业务系统刚刚完成迁移,却在最后验收阶段出现诡异现象——所有服务器都能通过…...
汉字拼音转换工具选型与实战指南:用pinyinjs解决多场景字符处理难题
汉字拼音转换工具选型与实战指南:用pinyinjs解决多场景字符处理难题 【免费下载链接】pinyinjs 一个实现汉字与拼音互转的小巧web工具库,演示地址: 项目地址: https://gitcode.com/gh_mirrors/pi/pinyinjs 在数字化产品开发中…...
大数据治理必看:数据目录的五大核心功能
大数据治理必看:数据目录的五大核心功能关键词:大数据治理、数据目录、元数据管理、数据血缘、数据协作摘要:在数据量爆炸式增长的今天,企业常面临“数据多到找不到、找到不敢用、用了怕出错”的困境。数据目录作为大数据治理的“…...
Cursor Pro功能扩展工具:技术原理与开源解决方案
Cursor Pro功能扩展工具:技术原理与开源解决方案 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached your trial re…...
3分钟快速上手:DouYinBot抖音无水印视频下载终极指南 [特殊字符]
3分钟快速上手:DouYinBot抖音无水印视频下载终极指南 🚀 【免费下载链接】DouYinBot 抖音无水印下载 项目地址: https://gitcode.com/gh_mirrors/do/DouYinBot 在短视频内容创作和分享的时代,如何快速获取无水印的抖音视频成为创作者和…...
