You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Spring配置的MyBatis中设置全局自定义属性

解决MyBatis Java配置中自定义属性无法在XML映射器引用的问题
  • 确保自定义配置的优先级
    你的配置类需添加@Configuration注解,若Spring容器中存在多个SqlSessionFactory候选Bean,需在sqlSessionFactory()方法上添加@Primary注解,避免Spring Boot自动配置的实例覆盖你的自定义配置。

  • 改用Configuration对象直接设置变量
    setConfigurationProperties可能因加载顺序问题导致属性未生效,直接操作Configuration的variables属性更可靠:

@Configuration
public class MyBatisConfig {
    @Bean
    public DataSource getDataSource() {
        BasicDataSource dataSource = new BasicDataSource();
        dataSource.setDriverClassName(driverClassName);
        dataSource.setUrl(url);
        dataSource.setUsername(userName);
        dataSource.setPassword(password);
        dataSource.setTestWhileIdle(true);
        dataSource.setValidationQuery("SELECT 1");
        return dataSource;
    }
    
    @Bean
    @Primary // 当存在多个SqlSessionFactory时,确保优先使用此实例
    public SqlSessionFactory sqlSessionFactory() throws Exception {
        SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
        sessionFactory.setDataSource(getDataSource());
        
        // 获取现有Configuration或创建新实例
        Configuration configuration = sessionFactory.getConfiguration() != null 
                ? sessionFactory.getConfiguration() 
                : new Configuration();
        // 将自定义属性存入Configuration的变量集合
        configuration.getVariables().put("userStatus", UserStatusCodeEnum.DELETED.getValue());
        
        sessionFactory.setConfiguration(configuration);
        return sessionFactory.getObject();
    }
}
  • 验证XML映射器中的引用格式
    根据属性类型调整引用方式:
    • 数值类型直接引用:
<select id="listDeletedUsers" resultType="com.yourpackage.User">
    SELECT * FROM user WHERE status = ${userStatus}
</select>
  • 字符串类型需包裹单引号:
<select id="listDeletedUsers" resultType="com.yourpackage.User">
    SELECT * FROM user WHERE status = '${userStatus}'
</select>
  • 确认枚举值有效性
    检查UserStatusCodeEnum.DELETED.getValue()返回的类型(如Integer/String)和具体值是否符合预期,避免因类型不匹配或值错误导致引用失效。

内容的提问来源于stack exchange,提问作者Raff

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 14:52:30