获取映射注解,查询数据库字段的信息
2014-05-23 16:34
513 查看
//通过循环 可以获得 注解中的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)+
")";
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)+
")";
相关文章推荐
- 获取通过sql查询数据库的表,字段,主键,自增,字段类型等信息。
- VB.net 查询获取数据库数据信息
- Sqlite 数据库插入标示字段 获取新Id 及利用索引优化查询
- 查询语句自动增加序列号、获取字段长度、返回字符在字段中的位置信息、从第几个位置替换字符串
- 通过数据库读取,获取MVM各扫描任务的漏扫数量趋势统计以及详细信息查询
- 数据库查询语句,oracle查询一个表中字段相同信息的个数并按个数排序
- VB.net查询获取数据库数据信息
- JDBC获取数据库表字段信息
- 获取数据库表字段描述 类型 大小等信息
- 构造From窗体获取数据库数据,去除数据库中无用信息,并赋值给字段,最后画出图
- DICOM查询/获取信息模型的研究及关系数据库实现
- sqlserver2005 查询数据库所有表的字段信息
- 查询MySql数据库架构信息:数据库,表,表字段
- JDBC获取数据库表字段信息
- SQL Server查询数据库字段信息
- 获取mysql表中字段备注信息以及选中数据库中表的备注信息
- MSSQL 查询数据库表信息及表字段的详细信息
- postgres数据库获取表的信息与字段的信息
- Oracle 查询表信息获取表字段及字段注释
- 【数据库】获取pg的数据表及字段信息