当前位置: 首页 > news >正文

使用JPA自动生成代码(轻松上手看了就会版)

目录

  • 背景:
    • 方案
      • 概念:
      • JPA 的主要作用
    • jpa简单使用(Springboot项目)
    • jpa进阶使用
    • 总结

背景:

项目需要自动生成sql代码,不需要写sql语句,能够自动进行查询,我想到了JPA。

方案

概念:

JPA 的全称是 Java Persistence API,是 Java EE 规范之一,用于定义 Java 对象与关系型数据库之间的映射关系。JPA 提供了一种简单的方式,让开发者可以通过面向对象的方式来操作数据库,而不需要手动编写 SQL 语句。

JPA 的主要作用

1、将 Java 对象映射到关系型数据库中的表格。
2、提供了一种统一的 API,可以让开发者以面向对象的方式来操作数据库,而不需要关心底层的数据库操作细节。
3、支持事务处理、缓存管理等高级功能。
4、提供了查询语言 JPQL,可以以面向对象的方式编写查询语句。
JPA 是 Java EE 规范的一部分,不是一个具体的实现。常见的 JPA 实现包括 Hibernate、EclipseLink、OpenJPA 等。在使用 JPA 进行开发时,可以选择一个符合自己需求的 JPA 实现,并按照 JPA 的规范进行开发。

jpa简单使用(Springboot项目)

@Repository
public interface ContentGrainDao extends JpaRepository<ContentGrain, Long> {}
@SpringBootApplication
public class PushClassApplication implements CommandLineRunner {@AutowiredContentGrainDao contentGrainRepository;@Autowiredprivate UserOrderRepository userOrderRepository;public static void main(String[] args) {SpringApplication.run(PushClassApplication.class,args);}@Overridepublic void run(String... args) throws Exception {//将断点打到这里List<ContentGrain> result = contentGrainRepository.findAll();System.out.println("222");
}
}

在这里插入图片描述

jpa进阶使用

//AcademyEntity 是要查表的实体,Long是这张表的主键类型
public interface TTAcademyDao  extends JpaRepository<AcademyEntity, Long> 
{AcademyEntity findByNameAndIsDelete(String name, int isDelete);
}

JPA 的命名规范是基于方法名称自动生成 SQL 查询语句,方法名称必须遵循一定的规范,以便自动生成正确的 SQL 语句。

根据 JPA 命名规范,findByNameAndIsDelete 这个方法名表示按照 name 和 isDelete 属性进行查询。具体解释如下:

find:表示这是一个查询方法。
By:表示按照某个属性进行查询。
Name:表示按照 name 属性进行查询。
And:表示并且关系,即同时满足两个条件。
IsDelete:表示按照 isDelete 属性进行查询。
根据这个方法名称,JPA 可以自动生成类似下面的 SQL 查询语句:

SELECT * FROM AcademyEntity WHERE name = ? AND is_delete = ?

这样就可以通过方法名称来实现简单的查询操作,而不需要手动编写 SQL 查询语句。需要注意的是,JPA 命名规范有一定的限制,不支持所有的查询语句,一些复杂的查询仍然需要手动编写 SQL 语句(个人认为没有必要,要是需要使用sql的话,就不用JPA了)。

总结

善假于物实现自动化~

相关文章:

使用JPA自动生成代码(轻松上手看了就会版)

目录 背景&#xff1a;方案概念&#xff1a;JPA 的主要作用 jpa简单使用&#xff08;Springboot项目&#xff09;jpa进阶使用总结 背景&#xff1a; 项目需要自动生成sql代码&#xff0c;不需要写sql语句&#xff0c;能够自动进行查询&#xff0c;我想到了JPA。 方案 概念&a…...

jdk动态代理

jdk动态代理:基于反射动态生成代理对象 pwp动态代理的步骤比较复杂&#xff0c;无需特别深入的理解&#xff0c;在jdk中固定的步骤&#xff0c;只需要知道这些步骤即可&#xff0c;不必钻牛角尖 动态代理涉及到的三个反射包类 InvocationHandlerMethodProxy 1. InvocationHand…...

备忘录模式

备忘录模式 备忘录模式定义使用场景1、撤销操作&#xff1a;2、游戏进度保存&#xff1a;3、定时器&#xff1a;4、浏览器历史记录&#xff1a;5、购物车状态保存&#xff1a;6、场景总结 角色定义Originator 发起人角色:Memento 备忘录角色:Caretaker 备忘灵管理员角色:需求背…...

问题解决:跨域访问错误

今天做前端页面渲染的时候遇到一个问题, 因为我使用的wsl开发,windows直接访问不了wsl中的文件,还要改其他配置没成功,索性就不改了,粘贴在桌面上用浏览器打开调试 然后所有使用apifox通过测试的路径全部报错 Ensure CORS response header values are validA cross-origin reso…...

程序员应该怎么自学才能入门 ?我来聊聊自己的经历

当你想成为一名程序员&#xff0c;如何自学入门是一个非常重要的问题。在这里我分享一下我的经验&#xff0c;希望能对你有所帮助。 首先&#xff0c;为了制定好你的学习路线&#xff0c;你可以在网上的培训机构网站找到一张基础路线图。这张路线图必须是跟行业对标的&#xf…...

听我一句劝,别去外包,干了6年,废了....

先说一下自己的情况&#xff0c;大专生&#xff0c;18年通过校招进入湖南某软件公司&#xff0c;干了接近6年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了6年的功能测试&…...

leetcode 88 合并两个有序数组

题目描述&#xff1a; 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2&#xff0c;另有两个整数 m 和 n &#xff0c;分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中&#xff0c;使合并后的数组同样按 非递减顺序 排列。 注意&#xff1a;最终&am…...

软件项目成本控制的5大关键点 不得不重视

软件项目成本一般分为运营成本和项目成本。而运营成本比较固定&#xff0c;压缩和削减的余地不大。而在项目成本中&#xff0c;最主要的成本是人工成本。那么如何提高项目开发效率&#xff0c;节约人工成本&#xff0c;对成本管理至关重要。 我们从以下几个影响项目成本的主要因…...

CSS样式更改:边框Border的另类用法

CSS样式更改——字体设置Font&边框Border 随着互联网技术的不断发展&#xff0c;网页设计已经成为了一项非常重要的工作。在网页设计中&#xff0c;字体设置和边框Border是两个非常常见的CSS样式&#xff0c;可以通过这两个样式对网页的外观进行设置。下面&#xff0c;我们…...

shell的灵活运用 (函数,关联数组,循环,awk,sed等)

题目 提示&#xff1a;没有基础请先看看基础部分的讲解&#xff0c;否则看不懂 1&#xff0c;编写函数&#xff0c;实现判断是否无位置参数&#xff0c;如无参数&#xff0c;提示错误 代码&#xff1a; #bash/bin function a() {b$# #判断传入的参数个数 # echo $b…...

大疆无人机 MobileSDK(遥控器/手机端)开发 v4版<1>

大疆无人机飞控开发 大疆无人机SDK开发包功能概述飞行控制相机实时视频流传感器数据下载媒体文件遥控器&#xff0c;电池和无线链路连接应用程序和产品 v4版sdk 二次开发注册成为DJI开发者生成 App KeyAndroid 示例代码配置Android Studio项目集成创建一个新的应用配置Gradle 脚…...

mysql数据库之事务

1.事务的概念 事务是一种机制、一个操作序列&#xff0c;包含了一组数据库操作命令&#xff0c;并且把所有的命令作为一个 整体一起向系统提交或撤销操作请求&#xff0c;即这一组数据库命令要么都执行&#xff0c;要么都不执行。 事务是一个不可分割的工作逻辑单元&#xf…...

安装运行Hyperf

安装运行Hyperf 上回讲到&#xff0c;我们对一个普通的 Laravel 框架进行了改造&#xff0c;让它可以在 Swoole 环境下使用&#xff0c;不过其中会有很多问题可能我们一时考虑不到&#xff0c;就会造成程序的稳定性出现问题。那么&#xff0c;今天我们就来学习一个原生的 Swoo…...

回收站文件恢复,分享4个巧妙解决方法!

案例&#xff1a;回收站文件怎么恢复 【清理电脑时一不小心清空了我的回收站&#xff0c;有朋友知道该怎么恢复吗&#xff1f;急急急&#xff01;】 回收站对于电脑用户来说&#xff0c;可以带来很多的方便&#xff0c;能让用户能够在删除文件后将其恢复。但是&#xff0c;有…...

CTF权威指南 笔记 -第三章汇编基础-3.2-x86/x64汇编基础

这节介绍PC最常见的架构 x86和扩展 x64框架 CPU操作模式 对x86处理器而言 有三个最主要的保护模式 保护模式 实地址模式 系统管理模式还有一个保护模式的子模式 虚拟8086模式 保护模式 保护模式是处理原生状态 这个时候所有指令和特性都是可以使用的 分配给程序的独立内…...

争夺汽车芯片「高地」

一直以来&#xff0c;汽车芯片无论是工艺制程&#xff0c;还是新技术的导入&#xff0c;都要落后消费类产品几年时间。不过&#xff0c;如今&#xff0c;随着汽车智能化进一步推动汽车制造商与上游芯片设计公司、晶圆代工厂的紧密互动&#xff0c;历史即将翻篇。 同时&#xf…...

SuperMap GIS基础产品三维GIS FAQ集锦(2)

SuperMap GIS基础产品三维GIS FAQ集锦&#xff08;2&#xff09; 【WebGL】桌面对三维缓存设置了最大最小可见高度&#xff0c;在iServer发布三维服务并进行预览是可以看到该效果的&#xff0c;但在前端代码打开该服务&#xff0c;最大最小可见高度效果丢失&#xff0c;请问怎…...

11.streamFile

1.Stream流 1.1体验Stream流【理解】 案例需求 按照下面的要求完成集合的创建和遍历 创建一个集合&#xff0c;存储多个字符串元素把集合中所有以"张"开头的元素存储到一个新的集合把"张"开头的集合中的长度为3的元素存储到一个新的集合遍历上一步得到的集…...

如何裁剪图片大小尺寸?

如何裁剪图片大小尺寸&#xff1f;平时我们在工作或者学习的时候&#xff0c;会经常需要将图片上传到不同的网站或者平台上&#xff0c;然而上传的时候经常会受到尺寸的限制&#xff0c;有时候尺寸太大就需要变小&#xff0c;为了确保上传成功&#xff0c;我们需要将图片进行裁…...

深度学习笔记之梯度下降、反向传播与内置优化器

文章目录 1. 梯度下降法2. 反向传播算法3. PyTorch内置的优化器3.1 SGD优化器3.2 RMSprop优化器3.3 Adam优化器 1. 梯度下降法 笔者往期的机器学习笔记&#xff1a; 机器学习之梯度下降算法 梯度下降法是一种致力于找到函数极值点的算法。 所谓“训练”或“学习”就是改进…...

HY-MT1.5-1.8B翻译模型应用场景:跨境电商、多语言客服、文档翻译

HY-MT1.5-1.8B翻译模型应用场景&#xff1a;跨境电商、多语言客服、文档翻译 1. 轻量级翻译模型的核心价值 在全球化商业环境中&#xff0c;语言障碍仍然是企业拓展国际市场的主要挑战之一。HY-MT1.5-1.8B作为一款专为实际业务场景优化的轻量级翻译模型&#xff0c;其"小…...

3步掌握Blender 3MF插件:轻松实现3D打印文件无缝导入导出

3步掌握Blender 3MF插件&#xff1a;轻松实现3D打印文件无缝导入导出 【免费下载链接】Blender3mfFormat Blender add-on to import/export 3MF files 项目地址: https://gitcode.com/gh_mirrors/bl/Blender3mfFormat 想要在Blender中直接处理3D打印文件吗&#xff1f;B…...

别光记公式!用Python+OpenCV手把手带你标定相机内参外参(附完整代码)

别光记公式&#xff01;用PythonOpenCV手把手带你标定相机内参外参&#xff08;附完整代码&#xff09; 在计算机视觉项目中&#xff0c;相机标定是构建三维感知系统的第一步。很多开发者能背诵内参矩阵的数学形式&#xff0c;却对如何用代码实际获取这些参数一头雾水。本文将用…...

避坑指南:OpenClaw云端一键部署的5个关键配置,90%的人都踩过前3个

OpenClaw作为目前最火的开源AI智能体框架&#xff0c;凭借低代码、多模型兼容、全渠道对接&#xff08;飞书/钉钉/Telegram等&#xff09;的特性&#xff0c;已经成为个人开发者、中小团队搭建专属AI员工的首选方案。 各大云厂商也纷纷推出了OpenClaw一键部署镜像&#xff0c;号…...

Cylinder3D目标检测环境配置、Cylinder3D目标检测模型代跑训练、Cylinder3D目标检测模型改进创新Cylinder3D目标检测环境配置:Windows、Ubuntu、Cen

Cylinder3D目标检测环境配置、 Cylinder3D目标检测模型代跑训练、 Cylinder3D目标检测模型改进创新 Cylinder3D目标检测环境配置&#xff1a;Windows、Ubuntu、Centos、Macos等系统环境&#xff0c;如果电脑拥有显卡&#xff0c;可配置GPU版本的Cylinder3D环境。 Cylinder3D目标…...

保姆级教程:用Python脚本一键划分LS-SSDD-v1.0数据集(附近岸/离岸测试集处理)

Python自动化处理LS-SSDD数据集&#xff1a;从混乱到规范的完整指南 当你第一次打开LS-SSDD-v1.0数据集时&#xff0c;面对24,00016,000像素的大图和9000张800800的小图&#xff0c;以及各种划分文件&#xff0c;可能会感到无从下手。这份数据集虽然为SAR图像中的小舰船检测提供…...

Obsidian: 图片管理插件-Local Images Plus与Paste Image Rename的进阶配置指南

1. 为什么需要图片管理插件 如果你经常用Obsidian写笔记&#xff0c;肯定遇到过这样的烦恼&#xff1a;从网页复制粘贴的图片默认存放在系统剪贴板&#xff0c;关闭笔记后图片就消失了&#xff1b;或者随手粘贴的图片文件名杂乱无章&#xff0c;过段时间根本分不清是哪篇笔记的…...

MT5 Zero-Shot实战案例:跨境电商多语言商品描述中文初稿生成与改写优化

MT5 Zero-Shot实战案例&#xff1a;跨境电商多语言商品描述中文初稿生成与改写优化 1. 项目概述与核心价值 在跨境电商运营中&#xff0c;商品描述的多语言版本制作是一个耗时耗力的过程。传统方法需要先撰写中文初稿&#xff0c;然后逐条翻译成各种语言&#xff0c;不仅效率…...

小白也能玩转零售AI:Ostrakon-VL-8B快速上手,实测效果超预期

小白也能玩转零售AI&#xff1a;Ostrakon-VL-8B快速上手&#xff0c;实测效果超预期 1. 零售AI新选择&#xff1a;Ostrakon-VL-8B简介 1.1 什么是Ostrakon-VL-8B&#xff1f; Ostrakon-VL-8B是一款专为零售和餐饮行业设计的智能视觉理解系统。简单来说&#xff0c;它就像是一…...

Zotero Reference学术文献管理工具全攻略:从入门到精通

Zotero Reference学术文献管理工具全攻略&#xff1a;从入门到精通 【免费下载链接】zotero-reference PDF references add-on for Zotero. 项目地址: https://gitcode.com/gh_mirrors/zo/zotero-reference 一、核心价值&#xff1a;重构学术文献管理流程 节省70%文献整…...