首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

按功能(特性)分包

请参阅我帖子,了解我们编码智慧墙。 ⚠️:我们达到了DRY,违反了KISS。 ---- 按功能(特性)分包 让我们将这些重新排列成独立功能包。 ? ?...用户管理功能包 新包userManagement包含属于此功能所有:控制器,DAO,DTO和实体。 ? ?...因此,exportProduct应该具有自己DAO,DTO和实体,即使它们看起来与productManagement中相似。抵制重用productManagement中冲动。...通用软件包包含技术配置和可重复使用代码 它包含技术配置(例如用于DI,Spring,对象映射,http客户端,数据库连接,连接池,日志记录,线程池) 它包含可重用有用代码片段。...但是Kotlin使其易于遵循: 使用数据,编写量身定制特定于功能结构(如DTO或实体)仅需几行,而无需样板。 Kotlin允许将多个放在一个文件中。

1K21

非典那年记忆

课程内容主要步骤记录:  【】所包含是对应项目名 1、生成项目 abp new   ,并编译全部 2、修改连接字符串: 【DbMigrator】修改连接字符串,并执行这个项目,就实现数据库创建和写入种子数据...9、添加DTO 【Application.Contracts】添加BookDTO,继承自AuditedEntityDTO 。 所有属性和Book相同。  ...Contracts是协议合同意思,表示这个对象是应用层一个实体,用户交互数据,所以叫Contracts 10,添加实体和DTO映射关系  【Application】ApplicationAutoMapperProfile.cs...不继承其它任何,  成员变量上添加 DataAnnotation ,数据注解! 这个DTO竟然没有ID这个字段,更新时到底会是什么个机制呢???...17、添加国际化内容 【Domain.shared】中添加对应显示内容!

94420
您找到你想要的搜索结果了吗?
是的
没有找到

《Build the BookStore Application using the ABP vNext web application framework》笔记

课程内容主要步骤记录:  【】所包含是对应项目名 1、生成项目 abp new   ,并编译全部 2、修改连接字符串: 【DbMigrator】修改连接字符串,并执行这个项目,就实现数据库创建和写入种子数据...9、添加DTO 【Application.Contracts】添加BookDTO,继承自AuditedEntityDTO 。 所有属性和Book相同。  ...Contracts是协议合同意思,表示这个对象是应用层一个实体,用户交互数据,所以叫Contracts 10,添加实体和DTO映射关系  【Application】ApplicationAutoMapperProfile.cs...不继承其它任何,  成员变量上添加 DataAnnotation ,数据注解! 这个DTO竟然没有ID这个字段,更新时到底会是什么个机制呢???...17、添加国际化内容 【Domain.shared】中添加对应显示内容!

2K30

阿里华为等大厂架构师如何解决空指针问题

NPE事发场景 参数是Integer等包装,自动拆箱时 字符串比较 如ConcurrentHashMap这种不支持K.V为null容器 A对象含B对象,通过A对象字段获得B对象后,没有判空B就调用...这种方式既增加代码量又降低易读性,请使用Java8 Optional消除此类if/else,一行代码进行判空和处理。...NPE原因 DTO字段null含义 JSONDTO反序列化过程,null描述有歧义: 客户端不传某个属性或传null,该属性在DTO中都是null。...数据库字段允许保存null 会进一步增加出错可能性和复杂度。因为如果数据真正落地时候也支持NULL,可能就有NULL、空字符串字符串null三种状态。...下面,我们根据业务需要分别对姓名、年龄和昵称进行更新: 对于姓名,我们认为客户端传null是希望把姓名重置为空,允许这样操作,使用OptionalorElse方法一把空转换为空字符串即可。

1.1K30

springboot第一集:由springbootdto拓展内容

例如,你可以通过在DTO字段上添加@NotBlank和@Email注解来确保输入字符串不为空并符合电子邮件地址格式。...Mapping 映射 使用映射技术可以将一个DTO对象映射到另一个DTO对象,或将DTO对象映射到数据库中实体对象。...Conversion 转换 有时候,我们需要将DTO一些属性从一种类型转换成另一种类型,例如将字符串转换成数字,或将日期字符串转换为Date对象。...Localization 本地化 如果你应用程序需要支持多个国家或地区语言,那么DTO可以包含属性、相应值和区域设置信息,来支持不同本地化需求。...你可以使用Spring Boot国际化支持来实现这个目标。 DTO Projection 投影 DTO Projection允许我们选择DTO特定属性,并将这些属性映射到视图中。

32930

分享几个阿粉常用 IDEA 插件,每一个都能提高工作效率

GenerateAllSetter Postfix Completion 相信大家在日常写代码时候,经常会遇到 DTO,VO 等其他 POJO 进行互换场景,字段类型和名称都相同,就是需要完全一个个进行赋值...这个插件可以将 pom 文件进行下面的形式展示,可以找到冲突包并且一排除,爽歪歪。...GsonFormat-Plus 平常工作时候,经常会遇到要通过 JSON 格式字符串来创建对应 POJO JSON 简单时候还可以通过手来敲,但是当 JSON 格式较为复杂时候,就比较麻烦了...,这个时候 GsonFormat 就很好用,只要将 JSON 字符串填到文本窗口内,然后就可以一生成 POJO ,并且还可以自动创建内部类。...安装完成过后,我们新建一个,然后通过快捷 Ctrl/Command + N 或者右键选择,或者通过菜单栏代码-》生成来触发插件,然后就 JSON 字符串输入进行,在左下角可以进行设置自己风格,最后确认就行

43320

从头编写 asp.net core 2.0 web api 基础框架 (4) EF配置

简单情况下,ORM可以把数据库中表和Model对象一一映射起来;也有比较复杂情况,ORM允许使用OO(面向对象)功能来做映射,例如:Person作为基,Employee作为Person派生,...他们俩可以在数据库中映射成一个表;或者在没有继承情况下,数据库中一个表可能和多个映射关系。...创建 Entity Entity就是普通C#,就像Dto一样。...Dto是与外界打交道Model,entity则不一样,有一些Dto计算属性我们并不像保存在数据库中,所以entity中没有这些属性;而数据从entity传递到Dto后某些属性也会和数据库里面的形式不一样...它是: 如何安全保存敏感配置数据,例如:连接字符串 保存连接字符串,你可能会想到appSettings.json这不是一个好想法。

2.2K70

关于领域模型转换那些事儿

// JSON.toJSONString将对象序列化成字符串JSON.parseObject将字符串反序列化为OderVO对象 orderVO = JSON.parseObject(JSON.toJSONString...使用以上库虽然可以不用手动编写get/set方法,但是他们都不能对不同名称对象属性进行映射。在定制化属性映射方面做得比较好就是Dozer了。...Dozer底层是使用reflect包下Fieldset(Object obj, Object value)方法进行属性赋值,执行速度上不是那么理想。...框架: 基于JSR269Java注解处理器,通过注解配置映射关系,在编译时自动生成接口实现。...第九种,Orika框架: 支持在代码中注册字段映射,通过javassist库生成Bean映射字节码,之后直接加载执行生成字节码文件。

1.1K10

【翻译】Kotlin致简代码之路

它只是处理一些错误分类( null 空指针响应和错误 HTTP 状态码 )。它甚至没有做实际映射机制。尽管如此,这些代码很冗繁并且包含有语法噪点。...有时候,这种能够达到一致目的并非必须。 可读性打败把一切压缩到单行 不可变性 在 Kotlin 中使用不可变性感觉非常自然且容易。实际上,这是 Kotlin 中一种惯用写代码方式。...第二, Kotlin 支持命名式参数,这明显提升了代码可读性和健壮性。我们再也不会意外地混淆了具有相同类型参数了。 而且,我们还能够通过使用属性缩写访问语法来访问这些属性值。...我们假定需要在一个映射中放一个可空字符串,这个字符串要满足不为 null 且非空白条件。听起来很简单,对吗?看一下下面的实现方式: // 不要这样做 value?.emptyToNull()?....所以,即使你不喜欢这两种设计方式,你不得不承认 Kotlin 代码基本上更具可读性,直观性,富有表现力和安全性。这不就是致简代码所要表达目的吗?

1.4K30

FreeSql 新八大骚功能

功能一:MapType 使用 codefirst 时序列化 json 或 jsonb 数据类型报错 使用 postgresql + ef 配置数据映射关系,使用 FreeSql 映射扩展时,对于json...FreeSql 本身支持了丰富类型,不限于 json,但是限定了类型映射,比如 JToken/JObject/JArray 实体类型才可以映射至 PostgreSQL 数据库 json 类型。...,代表联合唯一,现已支持迁移。...dotnet add package FreeSql.DbContext 功能四:ToList & Mapper 现在支持 ToList(a => new Dto()) 这样简单数据映射。...即 Dto 只要有属性名与实体属性相同,就会根据匹配到字段查询(不是查询所有字段回来再映射)。 然后这个骚操作,还支持多表查询映射,怎么解决多表存在相同名字字段问题呢?

1.6K30

Spring认证中国教育管理中心-Spring Data Redis框架教程一

它与 memcached 类似,数据集不是易失性,值可以是字符串,就像在 memcached 中一样,但也可以是列表、集合和有序集合。...此外,模板提供操作视图(遵循 Redis 命令参考中分组),提供丰富通用接口,用于针对特定类型或特定(通过KeyBound接口)工作,如下表所述: 配置后,模板是线程安全,可以跨多个实例重复使用...除了绑定到String之外,模板和连接使用StringRedisSerializer底层,这意味着存储和值是人类可读(假设在 Redis 和您代码中使用相同编码)。...理想情况下,可以使用普通JSON 存储为值。您可以通过使用 Redis 哈希来实现更复杂结构化对象映射。...简而言之,它允许您将几乎任何公开为 MDP(尽管有一些限制)。

1.2K10

DTO 替代品!!

由于每次调用大部分成本都与客户端和服务器之间往返时间有关,因此减少调用次数一种方法是使用一个对象(DTO)来聚合本应传输数据由几个呼叫,仅由一个呼叫提供服务。...但是,传统 DTO 流程还有其他替代方案: 从服务层返回一个业务对象 请注意,我之前从事项目,我们直接将 BO 映射到从数据库读取实体。...将 BO 转换为表示层中 DTO 从表示层返回 DTO 1 返回实体本身 当实体属性是需要显示属性超集时,不需要聚合其他属性。将实体转换为 DTO 不仅是矫枉过正。它会阻碍性能。...本质上,查询中投影允许精确地选择想要数据。...这是一个例子;给定一个Person实体和一个PersonDetails普通: CriteriaQuery q = cb.createQuery(PersonDetails.class

1K30

架构师教你kill祖传石山代码重复大量ifelse

用户同样需要收取商品价格10%快递费,购买两件以上相同商品时,第三件开始享受一定折扣 内部用户可以免运费,无商品折扣 实现三种类型购物车业务逻辑,把入参Map对象(K:商品ID,V:商品数量),转换为出参购物车类型...就只能不断增加更多购物车,写重复购物车逻辑、写更多if逻辑吗? 当然不是,相同代码应该只在一处出现!...即使数出有90行代码,也不一定正确,因为属性可能重复赋值 有时字段名相近,比如complainable和commentable,容易搞反 对两个目标字段重复赋值相同来源字段 明明要把DTO值赋值到DO...有多个并行实现相似的代码逻辑 考虑提取相同逻辑在父中实现,差异逻辑通过抽象方法留给子类实现。使用类似的模板方法把相同流程和逻辑固定成模板,保留差异同时尽可能避免代码重复。...业务代码中常见DO、DTO、VO转换时大量字段手动赋值,遇到有上百个属性复杂类型,非常非常容易出错 不要手动进行赋值,考虑使用Bean映射工具进行。

71110

【后端】MapStruct 使用详解

Dto(Data Transfer Object): 代表数据传输对象意思。...常见场景: 比如一个 insert 方法, 在前端传输数据时候, 为了隐藏后端表结构, 我们会选择构建一个 Dto 来接收数据, 再将 Dto 值传递给 Entity , 这样省不了大量 getter...这时候如果有一个非常方便属性映射框架, 可以大大提高我们效率. 下面进入正题, 来聊聊 MapStruct....MapStruct 说明 mapstruct 是专门用来处理上面常见实体与属性属性映射, 我们只需定义 mapper 接口,mapstruct 在编译时候就会自动帮我们实现这个映射接口,避免了麻烦复杂映射实现...多参数转换,如果遇到多参数转换,在实际业务场景中,我们会经常遇到 json 转换字符串存入某个属性中,或者好几个组合成一个新返回。

1.3K20

入参校验1

通常情况下我们希望遇到校验异常就立即返回,此时可以通过一些简单配置,开启 Fali Fast 模式,一旦校验失败就立即返回。...如果允许空值,则接口中变量需要使用包装来声明。 defaultValue:参数默认值,如果请求中没有同名参数时,该变量默认为此值。...指定值,value是字符串类型 byte/short/int/long/float/double及其对应包装;包装对象not null时才校验 @DecimalMin(value) 限制必须大于等于...value指定值,value是字符串类型 byte/short/int/long/float/double及其对应包装;包装对象not null时才校验 @Digits(integer, fraction...) @RequestBody TestTableDTO dto) log.info(JSON.toJSONString(dto)); } 校验实体 import lombok.Data;

21240

【周一通勤电台】Java8-15新特性,你知道几个?

好在Java 8为我们引入了Optional,Java 10完善了这一机制。 从本质上讲,Optional允许你包装一个变量,然后使用包装器方法来更简洁地处理Null问题。...Record DTO(Data Transfer Object)我们都很熟悉,通常用来对数据库、文件系统等存储数据进行存储和传输。...例3.1展示了引入Record之前怎么定义一个DTO。...Sealed class —— 封闭 Java 15引入了封闭概念。简而言之,新sealed关键字允许你定义哪些可以子类化一个接口。...在上面这个例子,我们使用sealed关键字来指定哪些允许扩展Pet。 8. 结语 以上就是我总结六个实用Java新特性,你理解了吗?

35220

深入学习下 TypeScript 中泛型

这意味着 TypeScript 会将数据识别为具有字符串类型和任意类型对象,从而允许您访问其属性。 类型参数约束 在某些情况下,泛型类型参数需要只允许将某些形状传递给泛型。...为此,您可以创建一个函数,它接受任何对象并返回另一个对象,该对象具有与原始对象相同所有值都转换为字符串。这个函数将被称为 stringifyObjectKeyValues。...type { [K in keyof T]: string } 创建一个新类型,它具有与 T 相同所有值都设置为字符串类型,这称为映射类型,本教程将在后面的部分中进一步探讨。...第一个,Keys,是你想要确保你对象拥有的所有。在这种情况下,它是所有商店代码联合。 T 是当嵌套对象字段具有与父对象上相同类型,在这种情况下,它表示运送到自身商店位置。...这意味着它应该具有相同属性,属性类型设置为不同东西。对于这种情况,使用映射类型可以重用初始类型形状并减少应用程序中重复代码。

38.8K30
领券