如何在Spring的xml中使用'EnumOrdinalTypeHandler'和mybatis的typeHandler?

时间:2014-09-19 17:31:03

标签: java mysql spring enums mybatis

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

<!-- mybatis-config.xml -->
<typeHandlers>
<typeHandler handler="org.apache.ibatis.type.EnumOrdinalTypeHandler"     javaType="com.stackoverflow.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',不需要列出每个枚举类型?

1 个答案:

答案 0 :(得分:3)

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配置,请尝试使用循环:

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