2013-08-18 32 views
-1

在springJdbctemplate crud應用程序中我想給用戶一個選項來創建一個新的自定義表格的自定義表格。問題是如果我創建查詢來創建表格,我該如何給用戶選項來定製它,因爲域類是固定的。有人建議在XML中轉儲數據。春季通過jdbctemplate動態添加表格

感謝

+0

你能更好地解釋你的目標嗎?目前尚不清楚您的需求。提供你嘗試過什麼或想實現什麼的例子 –

+0

在springJdbctemplate crud應用程序中,我想給用戶一個選項來創建一個帶有自定義字段的新表。問題是如果我創建查詢來創建表,我該如何給用戶可以選擇自定義它,因爲域類是固定的。有人建議在XML中轉儲數據。 – amzi

+0

編輯您的問題 –

回答

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; 
} 

正如你所看到的域類是固定的,但你可以用Name,Columns和Indexes建立一個簡單的表格定義。
之後可以很容易 - 處理元數據 - 以動態方式構建create table SQL代碼(或如果用戶更改列定義並且表已存在,則爲alter table)。
元數據既可以存儲在數據庫中,也可以存儲在XML中,它只是根據您的偏好和要求進行選擇。
享受!

+0

非常感謝您的答覆。是否需要手動爲每個表創建域類,或者是否可以自動完成。 – amzi

+0

你是否指每個用戶表?如果是,您不能手動創建域類,但必須使用Javassist(例如);你的域類是我上面寫的表元數據,你必須動態管理所有的元數據。這就是我所能說的,我給你一個很好的建議,其餘的必須由你編碼,使用你的能力和知識(並學習如何逐步解決問題)。解決這個問題是一個有趣的工作,享受它! :) –

+0

謝謝我會研究它。 – amzi