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

//通过循环 可以获得 注解中的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

时间: 2024-12-16 12:55:36

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

MySQL获取或者查询数据库字段的特定几位

更多:http://www.webyang.net/Html/web/article_138.html mysql经常会用来查询特定字段,偶尔会需要展示特定字段中值的某部分,这个时候怎么处理呢? 然后还有模糊查询的时候,如果需要匹配中间的某部分值,这个时候like就很尴尬,会多出一些不相干的记录,这又该怎么处理呢? 一.获取特定的几位: 1.取url字段后三位字符 select SUBSTRING(url, -3) from link; #这种只能针对固定长度,比说url共8个字符,可以下面这种

【java 获取数据库信息】获取MySQL或其他数据库的详细信息

1.首先是 通过数据库获取数据表的详细列信息 1 package com.sxd.mysqlInfo.test; 2 3 import java.sql.Connection; 4 import java.sql.DatabaseMetaData; 5 import java.sql.DriverManager; 6 import java.sql.PreparedStatement; 7 import java.sql.ResultSet; 8 import java.sql.ResultSe

sql语句查询数据库表结构信息

开发中经常用到查询指定表及其字段的信息,以下是我整理的SQL语句查询方法,供自己平时使用也提供给大家参考! 1.适用MS SQL SERVER: 1 SELECT 2 表名 = case when a.colorder=1 then d.name else '' end, 3 表说明 = case when a.colorder=1 then isnull(f.value,'') else '' end, 4 字段序号 = a.colorder, 5 字段名 = a.name, 6 标识 = c

Mysql查询数据库状态及信息

使用MySQL时,需要了解当前数据库的情况,例如当前的数据库大小.字符集.用户等等.下面总结了一些查看数据库相关信息的命令 1:查看显示所有数据库 mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | INVOICE | | mysql | | performance_schema | | test | +----------------

MySQL指定模糊查询范围 或 获取或者查询数据库字段的特定几位

SUBSTR 函数 正常的: select * from sky_user WHERE name LIKE "%name%" 现在我需要匹配name的前五位 select * from sky_user WHERE SUBSTR(name,1,5) LIKE "%name%" SQL 中的 substring 函数是用来抓出一个栏位资料中的其中一部分.这个函数的名称在不同的资料库中不完全一样: MySQL: SUBSTR( ), SUBSTRING( ) Oracl

查询数据库表字段信息

SELECT (case when a.colorder=1 then d.name else null end) 表名, a.colorder 字段序号,a.name 字段名,(case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else '' end) 标识, (case when (SELECT count(*) FROM sysobjects WHERE (name in (SELECT name FROM sysi

oracle查询数据库所有用户信息

看到网上说的查询用户的语句: SELECT * FROM dba_users;这句好像只能系统管理员才能成功执行,普通用户无法执行 SELECT count(*) FROM all_users; , SELECT * FROM USER_USERS;普通用户和系统管理员均可执行 原打算删除创建的一个测试用户,发现这三个dba_users,all_users, user_users都是视图,不能删除,打开all_users视图,查看sql语句,发现他是基于两个表创建的,代码如下: CREATE O

查询数据库字段

select AA.columnname,AA.tablename , AA.typename, AA.max_length, AA.precision, AA.scale ,BB.remark from ( select a.name as columnname,b.name tablename , c.name typename, a.max_length, a.precision, a.scale from sys.columns a, sys.objects b, sys.types c

MySQL数据库中查询数据库表、字段总数量,查询数据总量

最近要查询一些数据库的基本情况,由于以前用oracle数据库比较多,现在换了MySQL数据库,就整理了一部分语句记录下来. 1.查询数据库表数量 1 #查询MySQL服务中数据库表数据量 2 SELECT COUNT(*) TABLES, table_schema FROM information_schema.TABLES GROUP BY table_schema; 3 #查询指定数据库表数量 4 SELECT COUNT(*) TABLES, table_schema FROM infor