博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于注解的初级认识
阅读量:5058 次
发布时间:2019-06-12

本文共 1817 字,大约阅读时间需要 6 分钟。

/**

* 通过注解拼接建表语句
* 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("");
}

转载于:https://www.cnblogs.com/hwgok/p/5377579.html

你可能感兴趣的文章
css3动画属性
查看>>
第九次团队作业-测试报告与用户使用手册
查看>>
Equal Sides Of An Array
查看>>
CentOS笔记-用户和用户组管理
查看>>
Mongodb 基本命令
查看>>
Qt中QTableView中加入Check列实现
查看>>
“富豪相亲大会”究竟迷失了什么?
查看>>
控制文件的备份与恢复
查看>>
返回代码hdu 2054 A==B?
查看>>
Flink独立集群1
查看>>
iOS 8 地图
查看>>
20165235 第八周课下补做
查看>>
[leetcode] 1. Two Sum
查看>>
iOS 日常工作之常用宏定义大全
查看>>
PHP的SQL注入技术实现以及预防措施
查看>>
MVC Razor
查看>>
软件目录结构规范
查看>>
Windbg调试Sql Server 进程
查看>>
linux调度器系列
查看>>
mysqladmin
查看>>