首先是問題:我使用XML定義的查詢,並且SQL包含數據庫名稱作爲表名稱的一部分。例如:SELECT * from mydb.bar
。不幸的是,數據庫被創建/命名到處都是,並且mudb
部分確實是動態的,並且可以在任何時候改變。所以,我想用一個屬性來替代它,所以它看起來像SELECT * FROM ${dbname}.bar
,然後我定義中的MyBatis-config.xml中的以下部分:MyBatis - 定義全局參數
<properties>
<property name="dbname" value="mydb"/>
</properties>
但是當我運行查詢${dbname}
值爲空。如果我在屬性文件中定義此屬性,也會發生同樣的情況我不願意將它作爲每個調用參數的一部分傳遞,因爲這是一個真正的全局屬性。這可以做到嗎?如果是 - 如何?
謝謝!不幸的是,我使用Spring來抽象MyBatis,我的所有配置都是在applicationContext.xml中定義的。我想知道,如果這些變量是公開的,並且可以通過applicationContext.xml中的XML配置來設置,那麼看看這個 – Bostone
它看起來應該可以工作。我查看了SqlSessionFactoryBean的源代碼,它似乎將變量設置爲屬性。我沒有與Spring集成一起工作,但我想嘗試調試SqlSessionFactoryBean中的buildSqlSessionFactory方法,以查看它加載屬性的位置。 – Andy
傳遞給'SqlSessionFactoryBean.setConfigurationProperties()'的屬性在MyBatis配置中被設置爲變量。您應該能夠在Spring xml中創建一個屬性,並在配置工廠bean時使用它。 – AngerClown