冗余字段同步更新/填充框架rdt-v2
发布日期:2021-11-12 15:29:16
浏览次数:1
分类:技术文章
本文共 2958 字,大约阅读时间需要 9 分钟。
rdt-v2
rdt-v2是基于注解维护实体对象之间的冗余字段关系,然后可以进行批量更新或填充数据,避免重复编写逻辑代码及减少复杂关系维护的操作框架.
项目地址:
特性:
使用简单,依赖性低完成java bean类数据关系的维护基于条件注解和依赖字段注解,通过条件标识对应持久化类中唯一数据对数据操作层进行抽象,可根据具体场景自行实现/覆盖数据层数据的操作方法基于方法可定制化,均可覆盖大部分所提供解析的方法支持持久化数据相关的冗余数据更新支持vo,dto,pojo等的数据列表填充(提供多组参数值配置,适用性高,并对传入的数据进行条件分类,减少数据层的操作次数)
注意事项
关于字段的注解仅支持在字段上配置合理利用字段transient特性,以提升性能(可避免框架中不必要的逻辑处理)RdtResolver可配置提供外的注解,包含全局持久化类注解,id注解,transient注解,建议提供toJson方法的支持建议唯一性数据标识不存在重复
如何引用
请自行根据需要打包所依赖jar,rdt-core及rdt-annotation作为核心jarrdt-jpa及rdt-spring-mongodb为已提供的数据层操作实现,可作为具体使用框架实现的参考
注解介绍:
api介绍:
使用配置:
//属性配置类public RdtProperties rdtProperties() { RdtProperties properties = new RdtProperties(); //读取class所在的包; 支持,分割 properties.setBasePackage(basePackage); //是否通过saveAll保存 properties.setComplexBySaveAll(false); return properties;}//框架依赖于该对象的功能解析,可覆盖相应实现方法public RdtResolver rdtResolver() { return new RdtResolver() { //base class注解类,用于解析为存在的持久化实体类,默认包含提供的@RdtBaseEntity @Override protected Class [] customBaseEntityAnnotations() { return new Class[] {Document.class}; } @Override protected boolean isBaseClassByAnalysis(Class entityClass) { return false; } @Override protected String getColumnNameByAnalysis(Class entityClass, Field field) { return null; } @Override protected String getEntityNameByAnalysis(Class entityClass) { return null; } //class类的id,默认提供@RdtId(仅作为读取当前类中的id属性字段) @Override protected Class [] primaryIdAnnotations() { return new Class[]{Id.class}; } @Override protected String getPrimaryIdByAnalysis(Class aClass, Field field) { return null; } //transient注解,用于设置对应字段列属性 @Override protected Class [] columnTransientAnnotations() { return new Class[] {Transient.class}; } //log中输出json文本的依赖方法 @Override public String toJson(Object o) { //return SerializationUtils.serializeToJsonSafely(o); return JSON.toJSONString(o); } };}//作为读取配置的对象 public RdtConfiguration rdtConfiguration() { return RdtConfigurationBuilder.build(rdtProperties(), rdtResolver()); } //持久层操作对象,默认提供mongodb与jpa的一些支持,但可能仍需要情况来提供 //对应的方法实现,也可以覆盖已存在的实现方法。 //未存在的可继承相关Operation父类,实现具体的查询/更新方法即可。 public RdtOperation mongoRdtOperation() { MongoRdtOperation operation = new MongoRdtOperation(rdtConfiguration()) { }; operation.setMongoTemplate(mongoTemplate); return operation; }
api使用
//更新方法//更新当前对象的所有相关冗余字段数据updateMulti(Object current);//根据当前对象与之前对象数据对比后,更新被引用字段值所发生改变后的相关冗余字段数据updateMulti(Object current, Object before);//填充方法fill(Collection collection, boolean allowedNullValue, boolean checkValue, boolean clear);//填充所要展示的数据字段fillForShow(Collection collection);//填充所要保存的数据字段fillForSave(Collection collection, boolean allowedNullValue);
转载地址:https://blog.csdn.net/if_you_can_please_do/article/details/84104424 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年03月24日 22时31分33秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
linux下vi编辑器的命令大全,linux下VI编辑器命令大全(超级完整版)
2019-04-21
C语言极坐标转直角坐标,C语言实现直角坐标转换为极坐标的方法
2019-04-21
16F877A和24C02通信汇编语言,PIC16f877A读写24c02程序
2019-04-21
用c语言编写小于n的所有素数,关于求N以内素数的一点小问题(N小于一亿)
2019-04-21
华为100万部鸿蒙,2019年Q4发布 华为100万部鸿蒙OS手机已开测
2019-04-21
html5 video视频资源保护,HTML5 视频播放 <video>
2019-04-21
编程之类的文案_如何锻炼写文案的能力?
2019-04-21
vscode 不能使用中文输入法_vscode中vim插件设置
2019-04-21
当集合a为空集时a的取值范围_1.1.2 集合间的基本关系
2019-04-21
vue 可合并表格组件_Vue实战046:详解Mixins混入使用和注意事项
2019-04-21
python包怎么做双重差分did分析_多变量相关性分析(一个因变量与多个自变量)
2019-04-21
fi sap 凭证冲销 稅_SAP中的成本要素
2019-04-21
mysql幻读是什么意思_MySQL中的幻读,你真的理解吗?
2019-04-21