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();
        }
  • 相关阅读:
    .NET MVC AjaxHelper
    .NET MVC HtmlHepler
    堆栈存储的区别
    两个对象的 hashCode()相同,则 equals()也一定为 true,对吗?
    == 和 equals 的区别是什么
    JDK 和 JRE 有什么区别?
    javaInt占几个字节
    java代码如何在没有安装JDK的Windows下运行
    java跨平台的原因
    MyBatis JdbcType 与Oracle、MySql数据类型对应关系详解
  • 原文地址:https://www.cnblogs.com/lshan/p/12102740.html
Copyright © 2011-2022 走看看