zoukankan      html  css  js  c++  java
  • java 自定义注解(3)

    注解1:

    带参数:

    @Target({ElementType.TYPE})
    @Retention(RetentionPolicy.RUNTIME)
    public @interface TableRef {
        String value();
    }

    注解2:

    @Target({ElementType.FIELD})
    @Retention(RetentionPolicy.RUNTIME)
    public @interface Rowkey {
    }

    注解3:

    @Target({ElementType.FIELD})
    @Retention(RetentionPolicy.RUNTIME)
    public @interface Column {
        String family() default "info";
        String column() default  "";
    }

    java bean:

    @Data
    @TableRef("ct:calllog")
    public class Calllog {
        @Rowkey
        private String rowkey;
        @Column(family = "caller")
        private String call1;
        @Column(family = "caller")
        private String call2;
        @Column(family = "caller")
        private String calltime;
        @Column(family = "caller")
        private String duration;
        @Column(family = "caller")
        private String flg = "1";
    }

    使用:

        protected void putData(Object obj) throws Exception {
    
            // 反射
            Class clazz = obj.getClass();
            TableRef tableRef = (TableRef)clazz.getAnnotation(TableRef.class);
            String tableName = tableRef.value();
    
            Field[] fs = clazz.getDeclaredFields();
            String stringRowkey = "";
            for (Field f : fs) {
                Rowkey rowkey = f.getAnnotation(Rowkey.class);
                if ( rowkey != null ) {
                    f.setAccessible(true);
                    stringRowkey = (String)f.get(obj);
                    break;
                }
            }
    
            Connection conn = getConnection();
            Table table = conn.getTable(TableName.valueOf(tableName));
            Put put = new Put(Bytes.toBytes(stringRowkey));
    
            for (Field f : fs) {
                Column column = f.getAnnotation(Column.class);
                if (column != null) {
                    String family = column.family();
                    String colName = column.column();
                    if ( colName == null || "".equals(colName) ) {
                        colName = f.getName();
                    }
                    f.setAccessible(true);
                    String value = (String)f.get(obj);
    
                    put.addColumn(Bytes.toBytes(family), Bytes.toBytes(colName), Bytes.toBytes(value));
                }
            }
    
            // 增加数据
            table.put(put);
    
            // 关闭表
            table.close();
        }
  • 相关阅读:
    使用Doxygen生成net帮助文档
    Mac OSX 下配置 LNMP开发环境
    vue相关网站资源收集
    AJAX 相关笔记
    toLocaleDateString()
    前端关于图片的优化
    css 水平垂直居中的方法总结
    Mac下安装Twig模版引擎的方法
    gulp基础使用总结
    js中元素操作的有关内容与对比
  • 原文地址:https://www.cnblogs.com/lshan/p/12102740.html
Copyright © 2011-2022 走看看