Najpierw problem: używam zapytań zdefiniowanych przez XML, a SQL zawiera nazwę bazy danych jako część nazwy tabeli. Na przykład: SELECT * from mydb.bar
. Niestety, bazy danych są tworzone/nazywane w całym miejscu, a część jest bardzo dynamiczna i może się zmieniać w każdej chwili. Więc chciałem wymienić go na własność tak to będzie wyglądać SELECT * FROM ${dbname}.bar
a potem określono następującą sekcję mybatis-config.xml:MyBatis - definiowanie globalnego parametru
<properties>
<property name="dbname" value="mydb"/>
</properties>
Ale kiedy uruchomić kwerendę ${dbname}
ma wartość null. To samo dzieje się, jeśli zdefiniuję tę właściwość w pliku właściwości. Nie chciałbym przekazać tego jako części każdego parametru wywołania, ponieważ jest to prawdziwie globalna właściwość. Czy można to zrobić? A jeśli tak - jak?
Dzięki !. Niestety używam Springa do abstrakcyjnego MyBatis, a wszystkie moje konfiguracje są zdefiniowane w applicationContext.xml. Zastanawiam się jednak, czy te zmienne są narażone i można je ustawić za pomocą konfiguracji XML w pliku applicationContext.xml, zajmie się tym – Bostone
Wygląda na to, że powinno działać. Spojrzałem na kod źródłowy dla SqlSessionFactoryBean, wydaje się, aby ustawić zmienne na właściwości be. Nie pracowałem z integracją sprężynową, ale spróbowałem debugowania metody buildSqlSessionFactory w SqlSessionFactoryBean, aby zobaczyć, gdzie ładuje właściwości. – Andy
Właściwości przekazane do 'SqlSessionFactoryBean.setConfigurationProperties()' zostaną ustawione jako zmienne w konfiguracji MyBatis. Powinieneś być w stanie utworzyć właściwości w Spring xml i używać go podczas konfigurowania komponentu bean. – AngerClown