zoukankan      html  css  js  c++  java
  • 开发总结--续(上一个开发总结貌似字数限制)

    在java层,我还定义了一个可以获五个字段的类

    /**
    		 * 规则号
    		 */
    	    public String ruleNo;
    	    /**
    	     * 公司账套
    	     */
    	    @RuleDtlTypeInfo(value ="30")
    		private String businessBook;
    		/**
    		 * 公司账套名称
    		 */
    		private String businessBookDesc;
    	    /**
    	     * 机构级别
    	     */
    		@RuleDtlTypeInfo(value ="31")
    		private String branchLevel;
    		/**
    		 * 机构名称
    		 */
    	    private String branchLevelDesc;
    	    /**
    	     * 所在预算中心
    	     */
    		@RuleDtlTypeInfo(value ="32")
    		private String placeBudgetCenter;
    		/**
    		 * 所在预算中心名称
    		 */
    	    private String placeBudgetCenterDesc;
           ......等等

    可以发现我为每个写了注解

    /**功能描述:该注释是用来标识使用该注释的字段是属于规则明细设置表中哪种类型
    * @author fangjunjie.wb
    * @date 2020/4/22
    * @return
    */
    @Target( { ElementType.FIELD })
    @Retention(RetentionPolicy.RUNTIME)
    public @interface RuleDtlTypeInfo {
    
    	/**
    	 * 规则明细类型值
    	 * 
    	 * @return
    	 */
    	String value();
    
    }
    

    最后根据反射解析五个字段(貌似不知5个)核心代码如下,需要保存的字段我都添加了@RuleDtlTypeInfo

     @Override
        public List<RuleDetailSetDomain> analysisFilterMask(Object o,String ruleNo) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
            List<RuleDetailSetDomain> ruleDetailSetDomainList=new ArrayList<RuleDetailSetDomain>();
            Field[] field = o.getClass().getDeclaredFields();
    
            for (int i = 0; i < field.length; i++) {
                //获取注解的规则明细类型,如果字段没有添加RuleDtlTypeInfo注解,则不进行保存
                RuleDtlTypeInfo ruleDtlTypeInfo=  field[i].getAnnotation(RuleDtlTypeInfo.class);
                if (ruleDtlTypeInfo!=null){
                    RuleDetailSetDomain ruleDetailSetDomain=new RuleDetailSetDomain();
                    String ruleDtlNo = commonService.getSequence("BEPRULE", "RULE_DETAIL_SET", "RULE_DETAIL_NO");
                    ruleDetailSetDomain.setRuleNo(ruleNo);
                    ruleDetailSetDomain.setRuleDetailNo(ruleDtlNo);
                    ruleDetailSetDomain.setRuleDtlType(ruleDtlTypeInfo.value());
    
                    // 获取属性的名字
                    String name = field[i].getName();
                    // 将属性的首字母大写
                    Method m = o.getClass().getMethod("get" + StringUtil.UpperFirst(name));
                    // 调用getter方法获取属性值
                    String ruleDtlValue = (String) m.invoke(o);
                    ruleDetailSetDomain.setRuleDtlValue(ruleDtlValue);
    
                    ruleDetailSetDomainList.add(ruleDetailSetDomain);
                }
    
            }
            return ruleDetailSetDomainList;
        }
    

      

  • 相关阅读:
    Qt中暂停线程的执行(主线程和工作线程共用一把锁,一旦主线程将它锁上,工作线程就无法运行了,这也是一个办法)
    罗振宇 知识就是力量:怎样逼自己成为一个上进的人
    GammaRay 是一个允许你查看 Qt 应用程序甚至在某种程度上修改它的独特应用,可谓是 Debugger 的良好补充
    VSCode高效开发插件
    微软白板Excel xls列号数字转字母
    如何渡过中年危机
    增量数据同步中间件
    N位N进制里有多少个N
    Orchard Core学习一
    Consul做服务发现
  • 原文地址:https://www.cnblogs.com/imfjj/p/14084515.html
Copyright © 2011-2022 走看看