Primero, el problema: estoy usando consultas XML-defined y el SQL contiene el nombre de la base de datos como parte de un nombre de tabla. Por ejemplo: SELECT * from mydb.bar
. Lamentablemente, las bases de datos se crean/nombran por todas partes y la parte mudb
es realmente dinámica y puede cambiar en cualquier momento. Así que quería sustituirla por una propiedad por lo que se vería como SELECT * FROM ${dbname}.bar
y luego he definido la siguiente sección en SqlMapConfig.xml:MyBatis - definición de un parámetro global
<properties>
<property name="dbname" value="mydb"/>
</properties>
Pero cuando corro la consulta ${dbname}
evalúa como null. Lo mismo sucede si defino esta propiedad en el archivo de propiedades. No me gustaría pasar esto como parte de los parámetros de cada llamada ya que esta es realmente una propiedad global. Se puede hacer esto? Y si es así, ¿cómo?
¡Gracias !. Desafortunadamente estoy usando Spring para resumir MyBatis y todas mis configuraciones están definidas en applicationContext.xml. Sin embargo, me pregunto si estas variables están expuestas y se pueden establecer a través de la configuración XML en applicationContext.xml, yendo a buscar en este – Bostone
Parece que debería funcionar. Miré el código fuente de SqlSessionFactoryBean, parece configurar las variables a las propiedades be. No he trabajado con la integración de Spring, pero trataría de depurar el método buildSqlSessionFactory en SqlSessionFactoryBean para ver dónde está cargando las propiedades. – Andy
Las propiedades pasadas a 'SqlSessionFactoryBean.setConfigurationProperties()' se establecen como variables en la configuración de MyBatis. Debería poder crear un Propiedades en Spring xml y usarlo al configurar el bean de fábrica. – AngerClown