2010-09-24 44 views

回答

2

這不是一個典型的要求(99.99%的應用程序使用iBatis或任何ORM知道數據庫架構)。 iBatis是一個SQL映射器,您必須自己編寫SQL查詢。並沒有標準的SQL查詢(AFAIK),可以給你一個表中的列數。

我只能建議兩種方法:

  1. 做一個SQL查詢從目錄表中選擇。這是瞭解數據庫元數據的正常方式。但這取決於您的特定數據庫引擎。這與iBatis無關。

  2. QUICK和髒:做一個臨時查詢SELECT * FROM MYTABLE LIMIT 1(用你的數據庫模擬替代LIMIT),通過HashMap映射到iBatis,並在你的DAO中計算鍵的數量。

+0

存在大量密切相關的表格的情況,其中所述表格共享5列,但具有基於特定表格而變化的附加列。有點像數據庫中的強制繼承情況。不愉快的工作,但我在幾個案例中看到它。爲此,我非常贊同方法2。相當強大的方法。我只想澄清一下你想要一個HashMap的集合,因爲每個HashMap都代表一個列。 – demongolem 2012-02-09 15:30:49

0

對於Mybatis:您需要使用resultType而不是resultmap。 resultType必須是返回集合數據類型,通過知道集合的大小,您可以得到否。如果你使用HashMap,你可以在鍵中獲得列名。