springboot配置跨mapper.xml的全局变量
有这样的需求,mybatis
框架的mapper.xml
,即映射文件里,如果需要配置一个全局变量,然后,在所有的mapper.xml
里都能拿到使用。
这需求也不苛刻吧~
后来查了下,发现对于springboot
来说,配置这个竟然太简单。
因为是在mapper
的xml
里引用这个全局变量,所以mybatis
框架必须要先配置成功,如果不知道springboot的mybatis配置
,可以参考这篇[spring boot配置mybatis和事务管理];
配置mapper.xml的全局变量
仅仅需要在配置的mybatis
框架成功的基础之上,配置文件application.properties
里添加如下:
mybatis.configuration.variables.myConfigName=b
我是放到了与mybatis
配置放在了一起,具体如下:
mybatis.mapper-locations=classpath:mapper/*/*Mapper.xml
mybatis.type-aliases-package=znxd.tjzb.model.*
mybatis.configuration.mapUnderscoreToCamelCase=true
mybatis.configuration.variables.myConfigName=b1
其中myConfigName
就是全局变量的名,b1
即是对应的值。
mapper.xml引用全局变量
在随便一个mapper.xml
里,如下这样引用:
<select id="selectTest" resultType="java.util.Map">select * from ${myConfigName}</select>
即,使用的是${}
来引用配置的全局变量,这样就可以使用了。
有个小问题:
直接使用${myConfigName}可以获取到,但是如果我在if标签中获取myConfigName的值进行判断时,就会报错,找不到参数
原因:if标签的参数好像只能是method方法中传入的值,获取不到全局参数,自己的理解,可能不准确。