码迷,mamicode.com
首页 > 数据库 > 详细

获取映射注解,查询数据库字段的信息

时间:2014-05-24 16:34:29      阅读:304      评论:0      收藏:0      [点我收藏+]

标签:查询备注信息   反射   注解   注释   

//通过循环 可以获得 注解中的name值@Column(name="EO_XXX"),本方法获取的是 get方法的注解

Method[] methods= EoOrderMaterielModel.class.getMethods();
  Map<String,String> modelColumns=new HashMap<String, String>();
  for(Method m:methods){
   Annotation ats[]=m.getAnnotations();
   if(ats!=null&&ats.length>0){
           if(ats[0] instanceof Column){
            Column colInt = (Column) ats[0];
            String columnName = colInt.name();
            String value=lowerKey(m.toGenericString().substring(m.toGenericString().lastIndexOf(".")+4, m.toGenericString().length()-2));
            modelColumns.put(columnName,value);
           }
          }
  }

//获取private int id的注解

Field field = EoOrderMaterielModel.class.getDeclaredField(modelColumns.get(validators[j]));
     field.setAccessible(true);

Annotation ats[]=field.getAnnotations();
   if(ats!=null&&ats.length>0){
           if(ats[0] instanceof Column){
            Column colInt = (Column) ats[0];
            String columnName = colInt.name();
            }

    }

//实体类 实例

@Table(name = "T_EO_ORDER")

public class EoOrderMaterielModel{

    @Column(name = "EO_ID")

    private int id;

    @Column(name = "EO_ID")

    public Long getId() {
      return id;
     }

     public void setId(Long id) {
      this.id= id;
     }

 

//获取表名 @Table(name="T_EO_ORDER")
  Table table = EoOrderMaterielModel.class.getAnnotation(Table.class);  

 

// 通过字段值和表名 可以查询其备注信息(数据库中的注释信息)

String sqlColumn=" ";
  for(String name:columnName){
   sqlColumn+=" ‘ "+name+" ‘, ";
  }
  return "SELECT  a1.column_name AS name," +
     "CASE"+
     " WHEN a2.comments IS NULL THEN ‘未知‘ "+
     " ELSE a2.comments "+
     " END  AS comments "+
     " FROM    USER_TAB_COLUMNS         a1 "+
     " LEFT JOIN USER_COL_COMMENTS      a2 "+
     " ON  a1.table_name = a2.table_name "+
     " AND a1.column_name = a2.column_name "+
     " WHERE   a1.table_name = upper(‘ "+
     tableName+
     " ‘ ) and a1.column_name in("+
     sqlColumn.substring(0, sqlColumn.length()-1)+
     ")";

获取映射注解,查询数据库字段的信息,布布扣,bubuko.com

获取映射注解,查询数据库字段的信息

标签:查询备注信息   反射   注解   注释   

原文地址:http://6708689.blog.51cto.com/6698689/1416347

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!