【问题标题】:How to use 'EnumOrdinalTypeHandler' with mybatis's typeHandler in Spring's xml?如何在 Spring 的 xml 中将“EnumOrdinalTypeHandler”与 mybatis 的 typeHandler 一起使用?
【发布时间】:2025-11-27 11:40:02
【问题描述】:

我正在使用带有spring的mybatis。 我想在mysql中存储带有int值的Enum类型(称为'ordinal')。mybatis中有一个简单的方法:

<!-- mybatis-config.xml -->
<typeHandlers>
<typeHandler handler="org.apache.ibatis.type.EnumOrdinalTypeHandler"     javaType="com.*.MyEnumType"/>
</typeHandlers>

所以当执行 select 或 insert sql 时,auto-mapper 会自动使用 EnumOrdinalTypeHandler。

我的问题是:

1:如何在 Spring 的 context.xml 中像这样或任何其他方式使用它:

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="typeHandlers">
     ...
    </property>
</bean>

2:如何配置'component-scan''MapperScannerConfigurer'等代码较少的所有枚举类型,无需列出每个枚举类型?

【问题讨论】:

    标签: java mysql spring enums mybatis


    【解决方案1】:

    1.通过以下方式设置您的mybatis-config.xml位置:

    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
      <property name="dataSource" ref="dataSource" />
      <property name="configLocation" value="mybatis-config.xml" />
    </bean>
    

    2.如果您使用java config,请尝试使用循环:

    TypeHandlerRegistry typeHandlerRegistry = sqlSessionFactory.getObject().getConfiguration().getTypeHandlerRegistry();
    for (Class<?> cls: EnumClassArrays) {
        typeHandlerRegistry.register(cls, new EnumOrdinalTypeHandler<>(cls))
    }
    

    【讨论】:

      最近更新 更多