Prima il problema: sto utilizzando query definite da XML e SQL contiene il nome del database come parte di un nome di tabella. Ad esempio: SELECT * from mydb.bar
. Sfortunatamente, i database vengono creati/nominati dappertutto e la parte mudb
è davvero dinamica e può cambiare in qualsiasi momento. Così ho voluto sostituirlo con una proprietà in modo che sarebbe simile SELECT * FROM ${dbname}.bar
e poi ho definito la seguente sezione nel mybatis-config.xml:MyBatis - definizione di un parametro globale
<properties>
<property name="dbname" value="mydb"/>
</properties>
Ma quando si esegue la query ${dbname}
restituisce null. Lo stesso succede se definisco questa proprietà nel file delle proprietà. Oserei passare questo come parte dei parametri di ogni chiamata poiché questa è veramente una proprietà globale. Può essere fatto? E se sì - come?
Grazie !. Sfortunatamente sto usando Spring per astrarre MyBatis e tutte le mie configurazioni sono definite in applicationContext.xml. Mi chiedo però se queste variabili sono esposte e possono essere impostate tramite la configurazione XML in applicationContext.xml, andando a guardare in questo – Bostone
Sembra che dovrebbe funzionare. Ho guardato il codice sorgente per SqlSessionFactoryBean, sembra impostare le variabili sulle proprietà be. Non ho lavorato con l'integrazione di primavera, ma proverei a eseguire il debug del metodo buildSqlSessionFactory in SqlSessionFactoryBean per vedere dove sta caricando le proprietà. – Andy
Le proprietà passate a "SqlSessionFactoryBean.setConfigurationProperties()" vengono impostate come variabili nella configurazione MyBatis. Dovresti essere in grado di creare una proprietà in Spring xml e usarla quando si configura il bean factory. – AngerClown