Skip to content

Commit 8edce61

Browse files
committed
Add configurationProperties on MybatisProperties
1 parent d147e0e commit 8edce61

File tree

3 files changed

+89
-0
lines changed

3 files changed

+89
-0
lines changed

mybatis-spring-boot-autoconfigure/src/main/java/org/mybatis/spring/boot/autoconfigure/MybatisAutoConfiguration.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,9 @@ public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Excepti
117117
factory.setConfigLocation(this.resourceLoader.getResource(this.properties.getConfigLocation()));
118118
}
119119
factory.setConfiguration(properties.getConfiguration());
120+
if (this.properties.getConfigurationProperties() != null) {
121+
factory.setConfigurationProperties(this.properties.getConfigurationProperties());
122+
}
120123
if (!ObjectUtils.isEmpty(this.interceptors)) {
121124
factory.setPlugins(this.interceptors);
122125
}

mybatis-spring-boot-autoconfigure/src/main/java/org/mybatis/spring/boot/autoconfigure/MybatisProperties.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import java.util.ArrayList;
2020
import java.util.Arrays;
2121
import java.util.List;
22+
import java.util.Properties;
2223

2324
import org.apache.ibatis.session.Configuration;
2425
import org.apache.ibatis.session.ExecutorType;
@@ -69,6 +70,11 @@ public class MybatisProperties {
6970
*/
7071
private ExecutorType executorType;
7172

73+
/**
74+
* Global properties for configuration.
75+
*/
76+
private Properties configurationProperties;
77+
7278
/**
7379
* A Configuration object for customize default settings. If {@link #configLocation}
7480
* is specified, this property is not used.
@@ -142,6 +148,14 @@ public void setExecutorType(ExecutorType executorType) {
142148
this.executorType = executorType;
143149
}
144150

151+
public Properties getConfigurationProperties() {
152+
return configurationProperties;
153+
}
154+
155+
public void setConfigurationProperties(Properties configurationProperties) {
156+
this.configurationProperties = configurationProperties;
157+
}
158+
145159
public Configuration getConfiguration() {
146160
return configuration;
147161
}

mybatis-spring-boot-autoconfigure/src/test/java/org/mybatis/spring/boot/autoconfigure/MybatisAutoConfigurationTest.java

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import static org.junit.Assert.assertEquals;
2121
import static org.junit.Assert.assertFalse;
2222
import static org.junit.Assert.assertTrue;
23+
import static org.junit.Assert.assertNull;
2324

2425
import java.math.BigInteger;
2526
import java.util.Map;
@@ -407,6 +408,77 @@ public void testConfigFileAndConfigurationWithTogether() {
407408
this.context.refresh();
408409
}
409410

411+
@Test
412+
public void testWithoutConfigurationVariablesAndProperties() {
413+
EnvironmentTestUtils.addEnvironment(this.context);
414+
this.context.register(EmbeddedDataSourceConfiguration.class,
415+
MybatisAutoConfiguration.class,
416+
PropertyPlaceholderAutoConfiguration.class);
417+
this.context.refresh();
418+
419+
Properties variables = this.context.getBean(SqlSessionFactory.class).getConfiguration().getVariables();
420+
assertNull(variables);
421+
}
422+
423+
@Test
424+
public void testWithConfigurationVariablesOnly() {
425+
EnvironmentTestUtils.addEnvironment(this.context,
426+
"mybatis.configuration.variables.key1:value1");
427+
this.context.register(EmbeddedDataSourceConfiguration.class,
428+
MybatisAutoConfiguration.class,
429+
PropertyPlaceholderAutoConfiguration.class);
430+
this.context.refresh();
431+
432+
Properties variables = this.context.getBean(SqlSessionFactory.class).getConfiguration().getVariables();
433+
assertEquals(1, variables.size());
434+
assertEquals("value1", variables.get("key1"));
435+
}
436+
437+
@Test
438+
public void testWithConfigurationPropertiesOnly() {
439+
EnvironmentTestUtils.addEnvironment(this.context,
440+
"mybatis.configuration-properties.key2:value2");
441+
this.context.register(EmbeddedDataSourceConfiguration.class,
442+
MybatisAutoConfiguration.class,
443+
PropertyPlaceholderAutoConfiguration.class);
444+
this.context.refresh();
445+
446+
Properties variables = this.context.getBean(SqlSessionFactory.class).getConfiguration().getVariables();
447+
assertEquals(1, variables.size());
448+
assertEquals("value2", variables.get("key2"));
449+
}
450+
451+
@Test
452+
public void testWithConfigurationVariablesAndPropertiesOtherKey() {
453+
EnvironmentTestUtils.addEnvironment(this.context,
454+
"mybatis.configuration.variables.key1:value1",
455+
"mybatis.configuration-properties.key2:value2");
456+
this.context.register(EmbeddedDataSourceConfiguration.class,
457+
MybatisAutoConfiguration.class,
458+
PropertyPlaceholderAutoConfiguration.class);
459+
this.context.refresh();
460+
461+
Properties variables = this.context.getBean(SqlSessionFactory.class).getConfiguration().getVariables();
462+
assertEquals(2, variables.size());
463+
assertEquals("value1", variables.get("key1"));
464+
assertEquals("value2", variables.get("key2"));
465+
}
466+
467+
@Test
468+
public void testWithConfigurationVariablesAndPropertiesSameKey() {
469+
EnvironmentTestUtils.addEnvironment(this.context,
470+
"mybatis.configuration.variables.key:value1",
471+
"mybatis.configuration-properties.key:value2");
472+
this.context.register(EmbeddedDataSourceConfiguration.class,
473+
MybatisAutoConfiguration.class,
474+
PropertyPlaceholderAutoConfiguration.class);
475+
this.context.refresh();
476+
477+
Properties variables = this.context.getBean(SqlSessionFactory.class).getConfiguration().getVariables();
478+
assertEquals(1, variables.size());
479+
assertEquals("value2", variables.get("key"));
480+
}
481+
410482
@Configuration
411483
@EnableAutoConfiguration
412484
@MapperScan("org.mybatis.spring.boot.autoconfigure.mapper")

0 commit comments

Comments
 (0)