java开发,记录一些注解和架构
最近接了一个项目,说是项目其实也不算是项目,因为是把这个项目赛到其他项目中的。
熟悉一些这个项目的功能,梳理了一下,在代码开发中主要关心pojo、entity、respository、controller、service
。
在这里主要记录前3个的流程与作用。后面两个就不管了,任何开发技术中都比较常见。
1.pojo层
在这个项目中,pojo常被用来接受前端传入的数据,其实上是一个只包含get、set的java普通对象(没有任何注解与其他方法)。方便前端传入表单数据,通常有时候有@Responsebody在control层中修饰一下序列化。
2.entity层
这个主要涉及到java Persistence(持久化) api
。在entity层中,每个类都包含一些注解,例如:
@Generated( value = {"http://www.jooq.org","jOOQ version:3.9.0"},comments = "This class is generated by jOOQ"
)@Entity
@Table(name = "table1")
@NamedQuery(name="xxxx.xx", query="SELECT * FROM table1 where table1.name = ?1")
public class CarCollectInfo implements Serializable{@Id@GeneratedValue(strategy=GenerationType.IDENTITY)@Transientprivate String stattype;@Temporal(TemporalType.TIMESTAMP)private Date inserttime;@Column(name = "data_name")private String name;
}
@Generated注解
表明该地方由其他工具生成,无实际意义。
@Entity、@Table、@NameQueries、@NameQuery
@Entity
注解和@Table
注解都是Java Persistence API中定义的一种注解。
@Entity
说明这个class是实体类,并且使用默认的orm(Object-Relational Mapping)规则,即class名就是数据库表中表名,class的属性名即表中字段名。@Entity
注解指明这是一个实体Bean。@Table
注解是一个非必须的注解,@Table
注解指定了Entity所要映射的数据库表,其中@Table.name()
用来指定映射表的表名。如果同时使用了@Entity(name="student")
和@Table(name="book")
,最终对应的表名是book,这说明优先级:@Table>@Entity
@NameQueries
用于定义查询多个,@NameQuery
用于定义单个命名查询。类似于Query
。
Spring Data JPA 从入门到精通~@NamedQueries预定义查询
@Id
注解用于映射实体类中的主键字段。标识表的主键:@GeneratedValue(strategy = GenerationType.IDENTITY)
主键生成策略。自增- 当POJO有属性不需要映射的时候一定要用
@Transitent
修饰,该注释表示此属性与表没有映射关系,只是一个暂时的属性。 @Column
,标识了class类属性和数据库表字段映射关系。
@Entity、@Table、@Column、@Id、@PropertyDef的见解
@Entity和@Table的区别:
@Entity说明这个class是实体类,并且使用默认的orm规则,即class名即数据库表中表名,class字段名即表中的字段名
如果想改变这种默认的orm规则,就要使用@Table来改变class名与数据库中表名的映射规则,@Column来改变class中字段名与db中表的字段名的映射规则
orm:
ORM是对象关系映射(Object-Relational Mapping)的缩写
就是把数据库中的表映射为java的类,表中的记录映射为java的对象,列映射为java类中的属性
该框架可以在不写SQL语句的前提下完成对单表的CRUD操作
关于@Entity和@Table注解的用法详解
3.Repository层
repository层在我看来,类似于mybatis那里。control层处理接口,service层处理逻辑,repository和mybatis处理sql与数据。
在这个项目中,Repository全是以接口的形式表现出来,继承自一个MyRepository类,MyRepository为继承PagingAndSortingRepository的自定义类,包含对于泛型的增删改查。
public interface BaseBranchRepo extends MyRepository<BaseBranch, Integer>{//这段sql语句就是通过branchcode查询并返回BaseBranch对象。@Query(value="from BaseBranch where branchcode = ?1 ")BaseBranch findBaseBranch(String branchcode);
}
然后在serviceImpl层中将BaseBranchRepo
进行@Autowired
。其实核心还是用EntityManager em;
执行sql语句返回结果(list或map)。
重要注解:
@Transactional
将方法打包成一个事务,便于回滚之类的。@NoRepositoryBean
该注释充当 Spring Data JPA 中的标记接口。当应用于存储库接口时,它指示 Spring Data JPA 不要为该接口创建具体的存储库 bean。相反,它旨在用作其他存储库接口的超类,提供可继承的通用功能。
使用 @NoRepositoryBean 简化数据库访问
相关文章:
java开发,记录一些注解和架构
最近接了一个项目,说是项目其实也不算是项目,因为是把这个项目赛到其他项目中的。 熟悉一些这个项目的功能,梳理了一下,在代码开发中主要关心pojo、entity、respository、controller、service。 在这里主要记录前3个的流程与作用…...
【2024高教社杯全国大学生数学建模竞赛】B题 生产过程中的决策问题——解题思路 代码 论文
目录 问题 1:抽样检测方案的设计问题 2:生产过程中的决策问题 3:多工序、多零配件的生产决策问题 4:重新分析次品率题目难度分析1. 统计检测方案设计的复杂性(问题 1)2. 多阶段生产决策的复杂性(…...

JUnit 5和Mockito进行单元测试!
1. JUnit 5 基础 JUnit 5是最新的JUnit版本,它引入了许多新特性,包括更灵活的测试实例生命周期、参数化测试、更丰富的断言和假设等。 1.1 基本注解 Test:标记一个方法为测试方法。 BeforeEach:在每个测试方法之前执行。 AfterEac…...
LeetCode 算法:完全平方数 c++
原题链接🔗:完全平方数难度:中等⭐️⭐️ 题目 给你一个整数 n ,返回 和为 n 的完全平方数的最少数量 。 完全平方数 是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的…...

深入CSS 布局——WEB开发系列29
CSS 页面布局技术允许我们拾取网页中的元素,并且控制它们相对正常布局流、周边元素、父容器或者主视口/窗口的位置。 一、正常布局流(Normal Flow) CSS的布局基础是“正常流”,也就是页面元素在没有特别指定布局方式时的默认排列…...
视频的容器格式和编码格式详解
视频的容器格式和编码格式是视频文件的两个核心概念,它们相互关联但具有不同的功能。以下是详细的解释: 1. 容器格式 (Container Format) 容器格式,又称封装格式,指的是视频文件的外壳或容器,它用于封装视频、音频、…...

Elasticsearch Mapping 详解
1 概述 映射的基本概念 Mapping 也称之为映射,定义了 ES 的索引结构、字段类型、分词器等属性,是索引必不可少的组成部分。 ES 中的 mapping 有点类似与DB中“表结构”的概念,在 MySQL 中,表结构里包含了字段名称,字…...
WPF 利用视觉树获取指定名称对象、指定类型对象、以及判断是否有验证错误
1.利用视觉树获取指定名称对象 /// <summary> /// Finds a Child of a given item in the visual tree. /// </summary> /// <param name"parent">A direct parent of the queried item.</param> /// <typeparam name"T">T…...
了解`re`模块的`split()`, `sub()`, `subn()`方法的作用
在Python中,re模块(即正则表达式模块)提供了强大的字符串处理能力,允许你通过模式匹配来执行复杂的文本搜索、替换和分割等操作。其中,split(), sub(), 和 subn() 方法是re模块中非常实用的几个函数,它们各…...
机器学习交通流量预测实现方案
机器学习交通流量预测实现方案 实现方案 1. 数据预处理 2. 模型选择 3. 模型训练与评估 代码实现 代码解释 小结 🎈边走、边悟🎈迟早会好 交通流量预测是机器学习在智能交通系统中的典型应用,通常用于预测道路上的车辆流量、速度和拥…...

QNN:基于QNN+example重构之后的yolov8det部署
QNN是高通发布的神经网络推理引擎,是SNPE的升级版,其主要功能是: 完成从Pytorch/TensorFlow/Keras/Onnx等神经网络框架到高通计算平台的模型转换; 完成模型的低比特量化(int8),使其能够运行在高…...

Redis实战宝典:开发规范与最佳实践
目录标题 Key命名设计:可读性、可管理性、简介性Value设计:拒绝大key控制Key的生命周期:设定过期时间时间复杂度为O(n)的命令需要注意N的数量禁用命令:KEYS、FLUSHDB、FLUSHALL等不推荐使用事务删除大key设置合理的内存淘汰策略使…...
RPC的实现原理架构
RPC(Remote Procedure Call,远程过程调用)是一种允许程序调用位于不同地址空间或网络上的函数或方法的技术,尽管这些调用看起来像是本地调用。RPC 的实现极大地简化了分布式系统中的通信,避免了开发人员直接处理底层网…...
OpenXR Monado Hello_xr提交Frame
OpenXR Monado Hello_xr提交Frame @src/tests/hello_xr/openxr_program.cpp RenderFrame())xrWaitFrame(m_session, &frameWaitInfo, &frameState)xrBeginFrame(m_session, &frameBeginInfo)std::vector<XrCompositionLayerBaseHeader*> layers;std::vecto…...

huggingface快速下载模型及其配置
大家知道,每次进huggingface里面一个个手动下载文件然后再上传到我们的服务器是很麻烦的。其实huggingface提供了下载整个包的命令,很简单,如下: 1. 进入huggingface官网,随便搜索一个模型,点击右上角的三…...

虚幻5|不同骨骼受到不同伤害|小知识(2)
1.蓝图创建一个结构,B_BoneDamage 结构里添加一个浮点变量,表示伤害倍数 2.当我们创建了一个结构,就需要创建一个数据表格,数据表格可以选择对应的结构 不同骨骼不同倍数伤害,骨骼要对应骨骼网格体的名称 3.把我们br…...

达梦SQL 优化简介
目录 一、定位慢 SQL (一)开启跟踪日志记录 1.跟踪日志记录配置 (二)通过系统视图查看 1.SQL 记录配置 2.查询方式 二、SQL分析方法 (一)执行计划 1.概述 2.查看执行计划 (二&#x…...
题解:CF1070B Berkomnadzor
CF1070B Berkomnadzor 题解 解题思路 不难想到将 IP 地址转化为二进制后插入一个字典树中,转化后二进制的长度就是 x x x 的长度。我们需要记录每个串结尾的颜色,不妨设黑名单为 1 1 1,白名单为 0 0 0,初始时每个位置的颜色是…...

shell 学习笔记:数组
目录 1. 定义数组 2. 读取数组元素值 3. 关联数组 4. 在数组前加一个感叹号 ! 可以获取数组的所有键 5. 在数组前加一个井号 # 获取数组的长度 6. 数组初始化的时候,也可以用变量 7. 循环输出数组的方法 7.1 for循环输出 7.2 while循环输出 7.2.1 …...

计算机基础知识复习9.5
数据交换 电路交换:交换信息的两个主机之间简历专用通道,传输时延小,实时性强,效率低,无法纠正错误。 报文交换:信息拆分成小包(报文)大小无限制,有目的/源等信息提高利用率。有转…...
树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频
使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

黑马Mybatis
Mybatis 表现层:页面展示 业务层:逻辑处理 持久层:持久数据化保存 在这里插入图片描述 Mybatis快速入门 
蓝桥杯3498 01串的熵
问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798, 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...
CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝
目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为:一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...

uniapp 开发ios, xcode 提交app store connect 和 testflight内测
uniapp 中配置 配置manifest 文档:manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号:4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...

C++ 设计模式 《小明的奶茶加料风波》
👨🎓 模式名称:装饰器模式(Decorator Pattern) 👦 小明最近上线了校园奶茶配送功能,业务火爆,大家都在加料: 有的同学要加波霸 🟤,有的要加椰果…...

论文阅读:LLM4Drive: A Survey of Large Language Models for Autonomous Driving
地址:LLM4Drive: A Survey of Large Language Models for Autonomous Driving 摘要翻译 自动驾驶技术作为推动交通和城市出行变革的催化剂,正从基于规则的系统向数据驱动策略转变。传统的模块化系统受限于级联模块间的累积误差和缺乏灵活性的预设规则。…...

协议转换利器,profinet转ethercat网关的两大派系,各有千秋
随着工业以太网的发展,其高效、便捷、协议开放、易于冗余等诸多优点,被越来越多的工业现场所采用。西门子SIMATIC S7-1200/1500系列PLC集成有Profinet接口,具有实时性、开放性,使用TCP/IP和IT标准,符合基于工业以太网的…...

PH热榜 | 2025-06-08
1. Thiings 标语:一套超过1900个免费AI生成的3D图标集合 介绍:Thiings是一个不断扩展的免费AI生成3D图标库,目前已有超过1900个图标。你可以按照主题浏览,生成自己的图标,或者下载整个图标集。所有图标都可以在个人或…...
命令行关闭Windows防火墙
命令行关闭Windows防火墙 引言一、防火墙:被低估的"智能安检员"二、优先尝试!90%问题无需关闭防火墙方案1:程序白名单(解决软件误拦截)方案2:开放特定端口(解决网游/开发端口不通)三、命令行极速关闭方案方法一:PowerShell(推荐Win10/11)方法二:CMD命令…...