獲取映射註解,查詢數據庫字段的信息

//通過循環 可以獲得 註解中的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)+
     ")";

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章