注意!!!
全局属性中不能设置非String类型。原因在文末
1,配置文件添加配置(自定义配置项)
mybatis:
global-properties:
testKey1: 'true'
testKey2: 'false'
testKey1: "'test'"
2,解析配置项
@Configuration
public class MybatisGlobalPropertiesConfig {
@ConfigurationProperties(prefix = "mybatis.global-properties")
@Bean("mybatisGlobalProperties")
public Properties globalProperties() {
return new Properties();
}
}
3,数据源配置类引入属性
@javax.annotation.Resource(name = "mybatisGlobalProperties")
public Properties mybatisGlobalProperties;
4,新建 Configuration
// 新建configuration
MybatisConfiguration configuration = new MybatisConfiguration();
configuration.setVariables(mybatisGlobalProperties);
5,在创建 SqlSessionFactory 的时候把属性设置进去
MybatisSqlSessionFactoryBean sqlSessionFactoryBean = new MybatisSqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(datasource);
sqlSessionFactoryBean.setConfiguration(configuration);
6, 示例:
最后打印sql : select * from test where 0 = 0 and 1 = 1 and ‘test’ = ‘test’。
因为 testKey2的值是 false所以不执行 and 2 = 2
<select id="test">
select * from test
where
0 = 0
<if test="${testKey1}">
and 1 = 1
</if>
<if test="${testKey2}">
and 2 = 2
</if>
<if test="${testKey3} == 'test'">
and ${testKey3} = 'test'
</if>
</select>
因为这里使用了getProperties 函数, 当value非String类型的时候,则返回null