JAVA程序设计-对象设计
无论是根据某马还是某谷的适配教程做项目时候,发现了大部分都是重复的crud,大部分只要做好笔记复习即可,但是却往往忘记了编码设计,所以这里开始复习编码设计,对象设计中,长期使用Mp的那一套导致就是Service Mapper,一套梭哈完了,这样很容易忘记基本功夫
POJO:
简单Java对象(Plain Old Java Object)是指普通的Java对象,通常不继承特定的类或实现特定的接口。POJOs通常用于表示简单的数据对象,不包含业务逻辑。
人话说就是po是数据库的映射对象,需要做的就是,和数据库字段对应,包含对应属性即可(一般也就是mybatix生成的实体类)
@Data
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("tb_user")
public class User implements Serializable {private static final long serialVersionUID = 1L;/*** id*/@TableId(value = "uid", type = IdType.AUTO)private Integer uid;/*** 账户*/private String username;/*** 密码*/private String password;/***盐*/private String salt;/*** 姓名*/private String uname;}
DTO:
数据传输对象(Data Transfer Object)用于在不同层之间传输数据,通常用于解决多次远程调用或批量传输数据时的效率问题。DTOs通常是不可变的,并且只包含数据而不包含行为。
vo是dto的变种,而往往实际开发中大家更熟悉vo,vo是像前端返回需要的属性而编写的对象,那么dto就可以理解为各个层次需要的对象,比如前端不仅返回了用户信息里面还包含用户的社团信息,银行卡信息等
@Data
@NoArgsConstructor
@AllArgsConstructorpublic class UserDto {/*** 账户*/private String username;/*** 姓名*/private String uname;private String bankName;private String address;}
vo
值对象(Value Object)是一种特殊的DTO,用于传输数据并且可以包含一些简单的业务逻辑。值对象通常是不可变的,并且通常用于传递一些相关数据的组合,而不是单个数据项。
//比如这里进行脱敏操作,查询用户信息,但是不能传递盐和密码等敏感信息
public class UserVO {/*** 账户*/private String username;private Integer username;/*** 姓名*/private String uname;}
Entity
实体对象在业务逻辑中表示业务实体或概念,通常与数据库表或持久化对象对应。实体对象包含业务逻辑,并且与特定的数据存储机制解耦。
这个就很有意思了 比如我有一张表,里面有很多冗余字段
(id作为数据自增主键 但是属性id由自己·公司的规则决定)
只需要自己需要的字段,一个表就能写多个实体类型,这样查询时候也不需要查询整个记录
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class AwardEntity {/** 用户ID */private String userId;/** 奖品ID */private Integer awardId;}@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class RuleEntity {/**对应会员价格 */private String price;/** 奖品描述 */private Integer awardDescription;}
BO
业务对象(Business Object)用于表示具有业务逻辑的对象。它们通常封装了一些复杂的业务规则和操作,并且可以包含对多个实体对象的操作。
比如mvc中常见的Service
但是值得注意的是实际我们可以再次分得更细一点现在大部分mvc架构中Service既包含了数据库处理也包含了业务处理,应该像DDD架构依次再次解耦,数据库处理得逻辑是@Repository标注的IRepository,业务逻辑才是交给Service
@Repository
public class StrategyRepository implements IStrategyRepository {@Resourceprivate IStrategyAwardDao strategyAwardDao;@Resourceprivate IRedisService redisService;@Overridepublic List<StrategyAwardEntity> queryStrategyAwardList(Long strategyId) {return 需要的实体类型;//不应该直接返回记录}}
DAO
数据访问对象(Data Access Object)用于封装对数据存储的访问和操作,通常用于执行数据库操作。DAOs通常与持久化对象(PO)一起使用,用于将数据持久化到数据库中或从数据库中检索数据。
也就是现在mybatis中的mapper层次
合理的设计对象和接口可以做到层层解耦,不应该在复杂的系统中一套MybatisPlus的模板梭哈到底
相关文章:
JAVA程序设计-对象设计
无论是根据某马还是某谷的适配教程做项目时候,发现了大部分都是重复的crud,大部分只要做好笔记复习即可,但是却往往忘记了编码设计,所以这里开始复习编码设计,对象设计中,长期使用Mp的那一套导致就是Service Mapper,一套梭哈完了,这样很容易忘记基本功夫 POJO: 简单…...
蓝桥杯2024年第十五届省赛真题-R 格式
找到规律后如下,只需要用高精度加法和四舍五入(本质也是高精度加法就能做),如果没有找到规律,就得自己写高精度乘法和加法,不熟练很容易错。 //#include<bits/stdc.h> #include<iostream> #i…...
Linux服务器硬件及RAID配置
一、服务器硬件 塔式服务器:最初的服务器形态之一,类似于传统的台式电脑,但具有更强的处理能力和稳定性,适合小型企业或部门使用。 机架式服务器:设计为可安装在标准化机架内的模块化单元,可以有效地节省空…...
前端 vue单页面中请求数量过多问题 控制单页面请求并发数
需求背景: 页面中需要展示柜子,一个柜子需要调用 详情接口以及状态接口 也就是说有一个柜子就需要调用两个接口,在项目初期,接手的公司项目大概也就4-5个柜子,最多的也不超过10个,但是突然进来一个项目&a…...
HarmonyOS开发实例:【分布式手写板】
介绍 本篇Codelab使用设备管理及分布式键值数据库能力,实现多设备之间手写板应用拉起及同步书写内容的功能。操作流程: 设备连接同一无线网络,安装分布式手写板应用。进入应用,点击允许使用多设备协同,点击主页上查询…...
Unity TMP Inputfield 输入框 框选 富文本 获取真实定位
一、带富文本标签的框选是什么 UGUI的InputField提供了selectionAnchorPosition和selectionFocusPosition,开始选择时的光标下标和当前光标下标 对于未添加富文本标签时,直接通过以上两个值,判断一下框选方向(前向后/后向前&…...
如何在原生项目中集成flutter
两个前提条件: 从flutter v1.17版本开始,flutter module仅支持AndroidX的应用在release模式下flutter仅支持一下架构:x84_64、armeabi-v7a、arm6f4-v8a,不支持mips和x86;所以引入flutter前需要在app/build.gradle下配置flutter支持的架构 a…...
【设计模式】策略模式
目录 什么是策略模式 代码实现 什么是策略模式 策略模式是一种行为型设计模式,它定义了一系列算法,将每个算法封装成一个独立的对象,使得它们可以相互替换。 在策略模式中,通常有三个角色: 环境类(Cont…...
Java面试八股之Iterator和ListIterator的区别是什么
Iterator和ListIterator的区别是什么 这道题也是考查我们对迭代器相关的接口的了解程度,从代码中我们可以看出后者是前者的子接口,在此基础上做了一些增强,并且只用于List集合类型。 定义与基本概念 Iterator: 定义:…...
服务器中毒怎么办?企业数据安全需重视
互联网企业: 广义的互联网企业是指以计算机网络技术为基础,利用网络平台提供服务并因此获得收入的企业。广义的互联网企业可以分为:基础层互联网企业、服务层互联网企业、终端层互联网企业。 狭义的互联网企业是指在互联网上注册域名,建立网…...
k8s使用harbor私有仓库镜像 —— 筑梦之路
官方文档: Secret | Kubernetes ImagePullSecrets的设置是kubernetes机制的另一亮点,习惯于直接使用Docker Pull来拉取公共镜像,但非所有容器镜像都是公开的。此外,并不是所有的镜像仓库都允许匿名拉取,也就是说需要身份认证&…...
tcp bbr pacing 的对与错
前面提到 pacing 替代 burst 是大势所趋,核心原因就是摩尔定律逐渐失效,主机带宽追平交换带宽,交换机不再能轻易吸收掉主机突发,且随着视频类流量激增,又不能以大 buffer 做带宽后备。因此,主机必须 pacing…...
MySQL学习-非事务相关的六大日志、InnoDB的三大特性以及主从复制架构
一. 六大日志 慢查询日志:记录所有执行时间超过long_query_time的查询,方便定位并优化。 # 查询当前慢查询日志状态 SHOW VARIABLES LIKE slow_query_log; #启用慢查询日志 SET GLOBAL slow_query_log ON; #设置慢查询文件位置 SET GLOBAL slow_query_log_file …...
【软件测试】MIL/HIL/PIL/SIL测试
V字型开发流程 引用文章:汽车行业V模型开发详解 V模型开发(V-Model Development)是一种广泛应用于汽车行业的系统开发方法。它以字母“V”形状的图表形式展示了开发过程中不同阶段之间的关系,从需求分析到系统整合和验证&#x…...
WebKit结构深度解析:打造高效与安全的浏览器引擎
WebKit结构深度解析:打造高效与安全的浏览器引擎 在现代网络世界中,浏览器作为连接用户与互联网信息的桥梁,其背后的技术架构至关重要。WebKit,作为当今最流行的开源浏览器引擎之一,其结构设计和功能实现对于提升浏览…...
SQLSERVER对等发布问题处理
问题1: 无法对 数据库Sast_Business 执行 删除,因为它正用于复制。 (.Net SqlClient Data Provider) 处理: USE [master]; GO EXEC sp_replicationdboption dbname NSast_Business, optname Npublish, value Nfalse; EXEC sp_replica…...
CentOS 7 中时间快了 8 小时
1.查看系统时间 1.1 timeZone显示时区 [adminlocalhost ~]$ timedatectlLocal time: Mon 2024-04-15 18:09:19 PDTUniversal time: Tue 2024-04-16 01:09:19 UTCRTC time: Tue 2024-04-16 01:09:19Time zone: America/Los_Angeles (PDT, -0700)NTP enabled: yes NTP synchro…...
itext7 pdf转图片
https://github.com/thombrink/itext7.pdfimage 新建asp.net core8项目,安装itext7和system.drawing.common 引入itext.pdfimage核心代码 imageListener下有一段不安全的代码 unsafe{for (int y 0; y < image.Height; y){byte* ptrMask (byte*)bitsMask.Scan…...
搜维尔科技:Manus Xsens Metagloves新一代手指捕捉
Manus Xsens Metagloves新一代手指捕捉 搜维尔科技:Manus Xsens Metagloves新一代手指捕捉...
Python与Redis:提升性能,确保可靠性,掌握最佳实践
在 Python 中,有多个库可用于与 Redis 数据库进行交互,其中最受欢迎的是 redis-py。这是一个 Python 客户端库,提供了与 Redis 数据库进行通信的丰富功能。 Python操作Redis操作步骤 安装 redis-py 使用 pip 安装 redis-py: p…...
GPT国内能用吗
2022年11月,Open AI发布ChatGPT,ChatGPT展现了大型语模型在自然语言处理方面的惊人进步,其生成文本的流畅度和连贯性令人印象深刻,为AI应用打开了新的可能性。 ChatGPT的出现推动了AI技术在各个领域的应用,例如&#x…...
中科亿海微-CL1656功能验证开发板
I. 引言 A. 研究背景与意义 CL1656是一款精度高、功耗低、成本低的5V单片低功耗运放,由核心互联公司研发制造,CL1656 是一个 16-bit、快速、低功耗逐次逼近型 ADC,吞吐速率高达 250 kSPS,并且内置低噪声、宽 带宽采样保持放大器。…...
学习STM32第十五天
SPI外设 一、简介 STM32F4XX内部集成硬件SPI收发电路,可以由硬件自动执行时钟生成、数据收发等功能,减轻CPU负担,可配置8位/16位数据帧,高位(最常用)/低位先行,三组SPI接口,支持DMA…...
【面试题】MySQL 事务的四大特性说一下?
事务是一个或多个 SQL 语句组成的一个执行单元,这些 SQL 语句要么全部执行成功,要么全部不执行,不会出现部分执行的情况。事务是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。 事务的主要作用是保证数…...
案例实践 | InterMat:基于长安链的材料数据发现与共享系统
案例名称:InterMat-基于区块链的材料数据发现与共享系统 ■ 建设单位 北京钢研新材科技有限公司 ■ 用户群体 材料数据上下游单位 ■ 应用成效 已建设10共识节点、50轻节点,1万注册用户 案例背景 材料是构成各种装备和工程的物质载体,…...
【数据挖掘】实验8:分类与预测建模
实验8:分类与预测建模 一:实验目的与要求 1:学习和掌握回归分析、决策树、人工神经网络、KNN算法、朴素贝叶斯分类等机器学习算法在R语言中的应用。 2:了解其他分类与预测算法函数。 3:学习和掌握分类与预测算法的评…...
go语言并发实战——日志收集系统(三) 利用sarama包连接KafKa实现消息的生产与消费
环境的搭建 Kafka以及相关组件的下载 我们要实现今天的内容,不可避免的要进行对开发环境的配置,Kafka环境的配置比较繁琐,需要配置JDK,Scala,ZoopKeeper和Kafka,这里我们不做赘述,如果大家不知道如何配置环境&#x…...
Go 单元测试之Mysql数据库集成测试
文章目录 一、 sqlmock介绍二、安装三、基本用法四、一个小案例五、Gorm 初始化注意点 一、 sqlmock介绍 sqlmock 是一个用于测试数据库交互的 Go 模拟库。它可以模拟 SQL 查询、插入、更新等操作,并且可以验证 SQL 语句的执行情况,非常适合用于单元测试…...
Prometheus + Grafana 搭建监控仪表盘
目标要求 1、需要展现的仪表盘: SpringBoot或JVM仪表盘 Centos物理机服务器(实际为物理分割的虚拟服务器)仪表盘 2、展现要求: 探索Prometheus Grafana搭建起来的展示效果,尽可能展示能展示的部分。 一、下载软件包 监控系统核心…...
机器人管理系统的增删查改(Python)
#交互模式 robot ["机器人1","机器人2","机器人3","机器人4"] name input("请输入您的姓名:") print("%s您好欢迎使用机器人管理系统"%(name))while True:print("您可以进行 1.查找 2.修改 3.增…...
仿站 做网站/美国疫情最新消息
性质和特点 对象与对象之间的成员变量是相互独立的。要想共用数据,则需要使用静态成员和静态方法。只要在类中声明静态成员变量,即使不定义对象,也可以为静态成员变量分配空间,进而可以使用静态成员变量。(因为静态成…...
app网站模板下载/天津seo顾问
概述:回顾管理软件的发展历史,我们发现,传统ERP在帮助企业规范基础管理方面起到了显著的作用,但在帮助企业实现行业特色管理和企业个性管理方面却捉襟见肘。其灵活性差、不满足实际情况和不适应变化等缺陷催生了新兴的个性化ERP。…...
太原建设网站的公司/写软文的平台有哪些
表单form的提交和servlet的取值一、前言对于后端开发来说,经常要和前端进行联系的两个面就是:1、表单form提交至servlet。2、ajax提交至servlet进行处理。显然,有必要对这两个常用的功能进行一次梳理。1、一个中文乱码的坑在表单传值和后台进…...
请别人做网站注意事项/上海seo优化bwyseo
J3 - 白起技术(NIO # 缓冲区) NIO 的出现就是为了解决传统 IO 上的不足,而 NIO 三大组件中的缓冲区就是提高效率的组件之一。 在 NIO 中缓冲区是占据着非常重要的地位,因为数据就放在缓冲区中,对数据的 CRUD 操作都是…...
如何做新政府网站栏目/做游戏推广一个月能拿多少钱
文章目录7.1 JDBCHikariDataSource7.2 整合 Druid 到 Spring-Boot7.1 JDBCHikariDataSource 需求:演示 Spring Boot 如何通过 jdbcHikariDataSource 完成对 Mysql 操作 说明: HikariDataSource : 目前市面上非常优秀的数据源, 是 springboot2 第一步、创建测试数…...
北京市网站公安备案查询系统/地推项目平台
项目中用到stormkafkazookeeper,在实际应用中zk和kafka常出问题,这里记录下在使用zk过程中的问题。 注:zk版本是3.4.8,kafka是0.8.2.0。zk、storm和kafka都是运行在同一个集群的三台机器上。 CancelledKeyException 在开发环境…...