jdbctemplate 获取数据表结构的方法&注意事项
2015-05-14 12:11
302 查看
方法一 直接查询:
方法一的ColumnMetaData类代码如下:
方法二 使用RowCountCallbackHandler查询
方法二效率高,但麻烦的是拿到了类型是数字,如果要获得字段的描述信息,比如:int还是varchar等,需要一个对照关系类:
SqlRowSet srcSqlRowSet = srcJdbcTemplate.queryForRowSet("SELECT * FROM tablename LIMIT 0"); //注意limit 0更合适 List<ColumnMetaData> columneMetaList = new LinkedList<ColumnMetaData>(); int columnCount; SqlRowSetMetaData sqlRowSetMetaData = sqlRowSet.getMetaData(); columnCount = sqlRowSetMetaData.getColumnCount(); for (int i = 1; i <= columnCount; i++) { columneMetaList.add(new ColumnMetaData(sqlRowSetMetaData.getColumnName(i), sqlRowSetMetaData.getColumnType(i), sqlRowSetMetaData.getColumnTypeName(i))); //获取字段的名称、类型和描述 } Collections.sort(columneMetaList);
方法一的ColumnMetaData类代码如下:
public class ColumnMetaData implements Comparable<ColumnMetaData> { private String name; // 字段名称 private int type; // 字段类型 private String typeName; // 字段类型名称 private Object value; // 值 public ColumnMetaData(String columnName, int valueType, String typeName) { this.name = columnName; this.type = valueType; this.typeName = typeName; } }
方法二 使用RowCountCallbackHandler查询
String sql = "select * from "+ tableName + " limit 0"; RowCountCallbackHandler rcch = new RowCountCallbackHandler(); this.jdbcTemplateDao.query(sql, rcch); String[] coloumnName = rcch.getColumnNames(); int[] coloumnType = rcch.getColumnTypes();
方法二效率高,但麻烦的是拿到了类型是数字,如果要获得字段的描述信息,比如:int还是varchar等,需要一个对照关系类:
public class SqlTypeAdapter { public static String getTypeName(int type) throws SQLException { switch (type) { case Types.ARRAY: break; case Types.BIGINT: return "BIGINT"; case Types.BINARY: return "BINARY"; case Types.BIT: return "BIT"; case Types.BLOB: return "BLOB"; case Types.BOOLEAN: return "BOOLEAN"; //..代码太多就不多写啦default: break; } return "VARCHAR"; } }
相关文章推荐
- jdbctemplate 获取数据表结构的方法&注意事项
- JS&jQuery高级02(获取数据:AJAX方法)
- 【注意事项】c#通过CallBack获取C++传递的数据
- ASP 使用 Request.ServerVariables(HTTP_REFERER) 方法获取请求页面地址的注意事项
- jdbctemplate方法在调用时 的相关配置以及注意事项
- jquery-ajax请求后台数据转换json显示在select下拉列表&&jquery获取下拉列表的值和显示内容的方法
- 表单和ajax中的post请求&&后台获取数据方法
- 表单和ajax中的post请求&&后台获取数据方法
- 大数据量Elastic数据迁移方法及注意事项
- Form表单和ajax中的post请求&&后台获取数据方法(深度好文)
- ECharts图表初级入门(三):ECharts对象的数据实例化方法汇总以及注意事项
- SELECT INTO和INSERT INTO SELECT的区别 类似aaa?a=1&b=2&c=3&d=4,如何将问号以后的数据变为键值对 C# 获取一定区间的随即数 0、1两个值除随机数以外的取值方法(0、1两个值被取值的概率相等) C# MD5 加密,解密 C#中DataTable删除多条数据
- Oracle数据远程连接的四种设置方法和注意事项
- 关于数据库中varchar/nvarchar类型数据的获取注意事项
- 异步Ext.TreePanel获取后台数据时的注意事项
- JSONP一种使用<script>元素获取数据的方法
- Redis 数据类型分析 字符串 哈希 列表 集合 有序集合 优缺点 分析 注意事项 存储结构
- $_SERVER['HTTP_REFERER'] 获取前一页面的 URL 地址注意事项
- C++之旅<静态数据成员与静态方法注意事项>
- Oracle数据远程连接的四种设置方法和注意事项