我在春天使用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'
,不需要列出每个枚举类型?
答案 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))
}