zoukankan      html  css  js  c++  java
  • 关于注解的初级认识

    /**
    * 通过注解拼接建表语句
    * create table test_person(
    *   pid number(10) primary key,
    *   person_name varchar2(255)
    * );
    * 思路:
    *
    *
    */
    @Table(name="test_person")
    public class Person {
      @Id
      private Integer pid;
      @Column(name="person_name")
      private String pname;
      public Integer getPid() {
        return pid;
      }
      public void setPid(Integer pid) {
        this.pid = pid;
      }
      public String getPname() {
        return pname;
      }
      public void setPname(String pname) {
        this.pname = pname;
      }
      public static void main(String[] args) {
        Class clazz = Person.class;
        Table table = (Table)clazz.getAnnotation(Table.class);
        StringBuffer sql = new StringBuffer("create table "+table.name()+" (");
        Field[] fields = clazz.getDeclaredFields();
        for(int i = 0;i<fields.length;i++){
          String fieldName = fields[i].getName();
          Column col = fields[i].getAnnotation(Column.class);
          String colName = col==null?fieldName:col.name();//获取列名
          sql.append(colName);
          if(fields[i].getType()==Integer.class){
            sql.append(" number(10) ");
          }else if(fields[i].getType()==String.class){
            sql.append(" varchar2(255) ");
          }
          Id id = fields[i].getAnnotation(Id.class);
          String pkContent = id==null?",":"primary key,";
          sql.append(pkContent);
        }
        sql.deleteCharAt(sql.length()-1);
        sql.append(")");
        System.out.println(sql);
      }
    }

    @Retention(RetentionPolicy.RUNTIME)
    @Target(ElementType.TYPE)
    public @interface Table {
      public String name() default("");
    }

    @Retention(RetentionPolicy.RUNTIME)
    @Target({ElementType.METHOD,ElementType.FIELD})
    public @interface Id {

    }

    @Retention(RetentionPolicy.RUNTIME)
    @Target({ElementType.METHOD,ElementType.FIELD})
    public @interface Column {
      public String name() default("");
    }

  • 相关阅读:
    Preparing for Merge Sort(二分)
    Polycarp's phone book(unordered_mpa 大法好)
    Yet Another Task with Queens
    nginx 初时
    JSON.stringfiy 序列化
    css grid布局使用
    遍历对象属性5种方法,排列顺序规则
    归并方法
    处理地图经纬度,保留6位小数
    js 操作方法
  • 原文地址:https://www.cnblogs.com/hwgok/p/5377579.html
Copyright © 2011-2022 走看看