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;
        }
    

      

  • 相关阅读:
    springboot之手动控制事务
    Java的几种常见排序算法
    Java之协程(quasar)
    中文字符和中文标点符号的正则表达式
    【转】SignalR与ActiveMQ结合构建实时通信
    【转】根据Quartz-Cron表达式获取最近几次执行时间
    【转】IIS请求筛选模块被配置为拒绝超过请求内容长度的请求
    【转】C# 中Linq查询所有上级节点或所有下级节点
    【转】FluentAPI详细用法
    【转】SQL数据库日志文件收缩
  • 原文地址:https://www.cnblogs.com/imfjj/p/14084515.html
Copyright © 2011-2022 走看看