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();
        }
  • 相关阅读:
    1. 命令执行漏洞简介
    3. 从零开始学CSRF
    2. DVWA亲测CSRF漏洞
    使用pt-fifo-split 工具往mysql插入海量数据
    如何打印矩阵
    年轻人,你活着不是为了观察K线做布朗运动
    Python 之匿名函数和偏函数
    Python之闭包
    Python之装饰器
    Python之with语句
  • 原文地址:https://www.cnblogs.com/lshan/p/12102740.html
Copyright © 2011-2022 走看看