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();
        }
  • 相关阅读:
    数据结构与算法
    c++学习笔记
    红黑树(map与unorder_map)B B+树
    数据库笔记
    多路复用IO:select poll epoll
    https加密过程!!! 这才是差不多非常详细的https双方获取共用的秘钥过程!!!!!
    助教周报(第一轮)——范青青
    第二十二周助教总结(2021.6.28-7.4)
    第二十一周助教总结(2021.6.21-6.27)
    第二十周助教总结(2021.6.14-6.20)
  • 原文地址:https://www.cnblogs.com/lshan/p/12102740.html
Copyright © 2011-2022 走看看