冗餘欄位更新/填充框架rdt-v2
阿新 • • 發佈:2018-12-21
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 RdtSupport rdtSupport() { return rdtProperties().builder(rdtResolver()); } //持久層操作物件 public RdtOperation mongoRdtOperation() { MongoRdtOperation operation = new MongoRdtOperation(rdtSupport()) { }; operation.setMongoTemplate(mongoTemplate); return operation; }