如何根据表名获取表中所有字段的信息?

需要每一个字段的名字、类型、注释。

评论区

kyytyp

2017-12-05 09:14

每个数据库写法不一样 建议你百度一下

Dreamlu

2017-12-05 09:52

有个TableMapping不过是根据Model.class拿的

nicklee

2017-12-06 11:04

@nbjgl 类似
SELECT COLUMN_NAME,DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '你的表名';
SELECT COLUMN_NAME,COLUMN_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '你的表名';

杜福忠

2017-12-06 13:49

DruidPlugin druidPlugin = new DruidPlugin( jdbcUrl, userName, passWord);

druidPlugin.start();
DruidDataSource dataSource = (DruidDataSource)druidPlugin.getDataSource();
Properties properties = new Properties();
properties.setProperty("remarks", "true");
properties.setProperty("useInformationSchema", "true");
dataSource.setConnectProperties(properties);

DataSource dataSource = getDataSource();

MetaBuilder metaBuilder = new MetaBuilder(dataSource);
// 没有主键的 表可以排除
metaBuilder.addExcludedTable("courseplan_back");
// 默认是Mysql, 如果是其他的, 就换
//metaBuilder.setDialect(new MysqlDialect());
// 表的 集合
List< TableMeta> build = metaBuilder.build();

// List 转 Map 然后 静态存起来, 供其他地方使用, 例:
Map< String, TableMeta> tableMetas = new HashMap< String, TableMeta>();
for (TableMeta tableMeta : build) {
tableMetas.put(tableMeta.name, tableMeta);
}
// 使用
TableMeta tableMeta = tableMetas.get("test");
可以看下Jfinal源码中字典等生成器

nbjgl

2017-12-06 18:04

Thanks

热门反馈

扫码入社