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

news2024/11/20 0:37:37

目录

  • 背景:
    • 方案
      • 概念:
      • 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 {
    @Autowired
    ContentGrainDao contentGrainRepository;
    @Autowired
    private UserOrderRepository userOrderRepository;
    public static void main(String[] args) {
        SpringApplication.run(PushClassApplication.class,args);
    }

    @Override
    public 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了)。

总结

善假于物实现自动化~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/491997.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Jetpack Compose 不止是一个UI框架~

Jetpack Compose是用于构建原生Android UI的现代工具包。 Jetpack Compose使用更少的代码&#xff0c;强大的工具和直观的Kotlin API&#xff0c;简化并加速了Android上的UI开发。这是Android Developers 官网对它的描述。 本文不是教你Jetpack Compose 的一些基本使用方法&am…

【通过xib自定义Cell Objective-C语言】

一、我们怎么样来自定义单元格呢, 1.我们先来分析一下, 我们这里虽然有很多行,但是每一行,长的都是一样的, 这里有一个Label、那里有一个Label, 每一行每一行,长的都是一样的,唯独只有数据不一样吧, 所以说,遇到这种情况,我们就可以考虑用一个xib,描述一个单元…

倒计时24天!接棒香港展,CTIS2023观众预登记全面启动

4月22日,环球资源春季香港展在亚洲国际展览馆落下帷幕。两期展会,十馆全开,共历时8天。汇聚来自中国大陆、香港、台湾地区、韩国、越南、印度等地逾4,000家优质供应商超过30万件产品。吸引近10万人次的专业观众参观。环球资源为买卖双方打造优质贸易平台,让买家第一时间把握消费…

【Python零基础学习入门篇⑤】——第五节:Python中的函数

⬇️⬇️⬇️⬇️⬇️⬇️ ⭐⭐⭐Hello&#xff0c;大家好呀我是陈童学哦&#xff0c;一个普通大一在校生&#xff0c;请大家多多关照呀嘿嘿&#x1f601;&#x1f60a;&#x1f618; &#x1f31f;&#x1f31f;&#x1f31f;技术这条路固然很艰辛&#xff0c;但既已选择&…

【RDC2022纪念板】RT-Smart D1s上手

目录 环境准备开发板硬件介绍开发环境搭建烧录 环境准备 windows电脑&#xff08;用于烧录固件和串口日志查看&#xff09;Ubuntu虚拟机&#xff08;用于编译生成固件&#xff09;RDC2022纪念板TypeC数据线 开发板硬件介绍 开发板使用了全志科技的D1s芯片&#xff0c;全志RIS…

PAVC100R4222 PARKER轴向柱塞泵

PAVC100R4222 PARKER轴向柱塞泵特点&#xff1a; 1、壳体为高强度铸铁 2、两段设计便于维护 3、全密封的轴用轴承 4、内置增压器***高转速性能&#xff0c;可达3000 RPM( PAVC100为2600 RPM) 5、控制器为插装形式&#xff0c;易于现场更换 6、配流盘为可替换的青铜复合 10、过滤…

R实践——paleobioDB详解(paleobiology database)

paleobioDB详解&#xff08;paleobiology database&#xff09; PBDB初步认识paleobioDB一个简单的例子 所有函数详解1. pbdb_collection描述用法参数细节值例子 2. pbdb_collections描述用法参数值例子 3. pbdb_collections_geo描述用法参数值例子 4. pbdb_interval描述用法参…

成为数据分析师,需要具备哪些技能?

随着互联网的发展&#xff0c;数据分析师的特点越来越明显&#xff0c;对数据分析师综合素质的要求也较高。 1、较强的数据挖掘、信息整理、和逻辑分析能力 数据分析&#xff0c;也是数据分析师的一个方向。 制作日常性的经营报表&#xff0c;对公司或者行业KPI指标进行拆解…

【Linux超强学习路线图】赶紧收藏学习!

​很多朋友在学习Linux时&#xff0c;不知道学什么&#xff0c;不知道怎么学&#xff0c;有的朋友甚至把所有知识点都当成重点学起&#xff0c;但其实这样不仅浪费时间更浪费精力。今天就给大家安排一份「Linux超强学习路线图」&#xff01; 这张Linux超强学习路线图&#xff…

ThingsBoard使用jar包单机部署的问题以及如何解决问题

1、概述 这一节我将给大家讲述一下前面章节的问题,因为我直接都是跳过问题直接给大家演示正确的步骤,相当于我帮大家把坑踩完了,我主要讲两个问题,尤其是第一个问题,很多人都遇到过。 2、问题1 为什么要在thingsboard.yml中配置install.data_dir? 如果不配置这个inst…

7种优秀的导航菜单设计总结

导航是应用程序界面中最常见的模块之一&#xff0c;在链接应用程序中起着每个页面的作用。 不同的设计需求和业务目标决定了导航的设计因品而异&#xff0c;移动设备的尺寸远小于计算机。因此&#xff0c;在设计移动终端导航时&#xff0c;应考虑更全面&#xff0c;以确保简单…

手把手教你怎么搭建自己的AI数字人直播间?帮你24小时不间断直播卖货

在搭建AI数字人直播间之前&#xff0c;您需要了解数字人技术。 一、什么是AI数字人、数字人直播间&#xff1f; 数字人是一种由人工智能技术构建的虚拟人物&#xff0c;其外貌、行为、语言等特征与真实人物相似&#xff0c;可以与人进行互动。数字人可以通过语音合成、人脸识…

国产化:复旦微JFM7K325T +华为海思 HI3531DV200 的综合视频处理平台

板卡概述 TES714 是自主研制的一款 5 路 HD-SDI 视频采集图像处理平台&#xff0c;该平台采用上海复旦微的高性能 Kintex 系列 FPGA 加上华为海 思的高性能视频处理器 HI3531DV200 来实现。 华为海思的 HI3531DV200 是一款集成了 ARM A53 四核处理 器性能强大的神经网络引擎…

SpringFox SpringDoc 附件ui展示

文章目录 前言一、swagger v3 附件类型参数二、springdoc 附件类型参数1.springfox迁移springdoc注解对应关系2.springdoc 附件参数处理 三、RequestBody、RequestPart、RequestBody的区别3.1 RequestParam3.2 RequestBody3.3 RequestPart 前言 swagger 升级V3后发现swagger u…

【光伏预报/太阳能预报】上海道宁与Solargi为您提供开发地理数据库模拟工具和网络服务

Solargis提供开发地理数据库 模拟工具和网络服务 用于太阳能发电的规划 性能监控和管理 推动全球经济 转向可持续生产和消费 并推广环保能源技术 Solargis数据是用于 屋顶光伏系统性能监测的 日射强度计的实用替代方案 对于大型地面安装光伏系统 Solargis可作为 独立…

DB2 将多行记录合并成一行

SELECT replace(replace(xml2clob(xmlagg(xmlelement(NAME A, wdd.CASE_NUMBER||,))),<A>,),</A>,) AS CASE_NUMBERFROM WMS_DECLARE_DETAIL wdd其中&#xff1a;NAME A 要与 ‘’ 相同 &#xff0c;wdd.CASE_NUMBER 为字段&#xff0c;也可以加上GROUP BY 进行分组…

“邮件营销:5个关键问题,缺一不可

外贸公司的客户习惯使用邮件处理日常和工作事项。所以&#xff0c;我们也可以考虑使用邮件来和他们达成长期联系。而邮件营销作为最早出现的一批营销方式&#xff0c;它以极高的投资回报比依然占据着不可撼动的地位。但是&#xff0c;对于想开始邮件营销&#xff0c;但苦于没有…

W10做 .py文件的定时任务

因为领导让我们每天六点报当天数据,所以我写了个自动化的脚本,在定时这个问题研究了一两天 我有尝试过通过使用pyinstaller来打包我的.py文件,打包成exe文件,但是打包后存在各种问题,最多的就是缺少包,但是把包的文件夹导了也会出现问题,那就只能另辟蹊径了 1.我在py里面做了…

什么是模糊控制?

模糊控制设计原理 1、传统控制系统和模糊控制系统 传统控制系统结构&#xff1a; 控制目的&#xff1a;通过控制器调节控制信号u&#xff0c;使输出信号y达到要求 模糊控制系统结构&#xff1a; 与传统控制系统的差异&#xff1a;用模糊控制器FC&#xff08;Fuzzy Controller&…

Qt5.9学习笔记-事件(二) 自定义事件

⭐️我叫忆_恒心&#xff0c;一名喜欢书写博客的在读研究生&#x1f468;‍&#x1f393;。 如果觉得本文能帮到您&#xff0c;麻烦点个赞&#x1f44d;呗&#xff01; 近期会不断在专栏里进行更新讲解博客~~~ 有什么问题的小伙伴 欢迎留言提问欧&#xff0c;喜欢的小伙伴给个三…