【问题标题】:adding tables dynamicly in spring via jdbctemplate通过 jdbctemplate 在 spring 中动态添加表
【发布时间】:2013-08-18 19:14:23
【问题描述】:

在 springJdbctemplate crud 应用程序中,我想给用户一个选项来创建一个带有自定义字段的新自定义表。问题是如果我创建查询来创建表,我怎样才能给用户自定义它的选项,作为域类是固定的。有人建议在 xml 中转储数据。

谢谢

【问题讨论】:

  • 你能更好地解释你的目标吗?目前尚不清楚您的需求是什么。举例说明您尝试过什么或想要实现什么
  • 在 springJdbctemplate crud 应用程序中我想给用户一个选项来创建一个带有自定义字段的新表。问题是如果我创建查询来创建表,我怎样才能给用户自定义它的选项,因为域类是固定的。有人建议在 xml 中转储数据。

标签: mysql spring spring-mvc spring-jdbc


【解决方案1】:

您需要以这种方式定义用户表元数据:
域类(伪代码):

class UserTableMetadata {
  String tableName;
  // List of personalisable columns
  List<UserTableColumnMetadata> columns;
  // List of personalisable indexes
  List<UserTableIndexMetadata> indexes;
}

class UserTableColumnMetadata {
  // Owner table
  UserTableMetadata table;
  String columnName;
  int jdbcType;
  int lenght;
  int precision;
  boolean nullable;
}

class UserTableIndexMetadata {
  // Owner table
  UserTableMetadata table;
  String indexName;
  boolean unique;
  boolean primary;
  // Index columns
  List<UserTableColumnMetadata> columns;
}

您可以看到域类是固定的,但您可以使用名称、列和索引构建一个简单的表定义。
之后可以很容易 - 处理元数据 - 以动态方式构建create table SQL 代码(或alter table,如果用户更改列定义并且表已经存在)。
元数据可以存储在数据库中,也可以存储在 XML 中,这只是基于您的偏好和要求的选择。
享受吧!

【讨论】:

  • 非常感谢您的回复。是否必须手动为每个表创建域类,还是可以自动完成。
  • 你的意思是每个用户表?如果是,您不能手动创建域类,但必须使用 Javassist(例如);你的域类是我上面写的表元数据,你必须动态管理所有。这就是我能说的,我给你一个很好的建议,其余的必须由你编写,使用你的能力和知识(并学习如何逐步解决问题)。解决这个问题是一个有趣的工作,享受它! :)
猜你喜欢
  • 2010-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多