冗余字段同步更新/填充框架rdt-v2

7 篇文章 0 订阅

rdt-v2

rdt-v2是基于注解维护实体对象之间的冗余字段关系,然后可以进行批量更新或填充数据,避免重复编写逻辑代码及减少复杂关系维护的操作框架.

项目地址: 直达

特性:

使用简单,依赖性低
完成java bean类数据关系的维护
基于条件注解和依赖字段注解,通过条件标识对应持久化类中唯一数据
对数据操作层进行抽象,可根据具体场景自行实现/覆盖数据层数据的操作方法
基于方法可定制化,均可覆盖大部分所提供解析的方法
支持持久化数据相关的冗余数据更新
支持vo,dto,pojo等的数据列表填充(提供多组参数值配置,适用性高,并对传入的数据进行条件分类,减少数据层的操作次数)

注意事项

关于字段的注解仅支持在字段上配置
合理利用字段transient特性,以提升性能(可避免框架中不必要的逻辑处理)
RdtResolver可配置提供外的注解,包含全局持久化类注解,id注解,transient注解,建议提供toJson方法的支持
建议唯一性数据标识不存在重复

如何引用

请自行根据需要打包所依赖jar,rdt-core及rdt-annotation作为核心jar
rdt-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);

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值