首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何映射EnumOrdinalTypeHandler的马提斯弹簧启动?

如何映射EnumOrdinalTypeHandler的马提斯弹簧启动?
EN

Stack Overflow用户
提问于 2017-06-22 05:27:01
回答 2查看 2.1K关注 0票数 3

我现在用的是带弹力靴的迈克提斯。我没有添加mybatis-config.xml。我通过application.properties根据马提斯-弹簧-引导-自动配置的说明对数据源和mybatis进行了以下所有配置

代码语言:javascript
复制
### Database Configuration
spring.datasource.url=jdbc:sqlserver://localhost;databaseName=mywebsite;catalogName=mywebsite
spring.datasource.username=sa
spring.datasource.password=root
spring.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver

### Mybatis Configurations ###
mybatis.type-aliases-package=com.mycom.myproducts.mywebsite.config.bean
mybatis.type-handlers-package=org.apache.ibatis.type.EnumOrdinalTypeHandler
mybatis.mapperLocations=classpath:mybatis/mapper/**/*.xml
mybatis.configuration.default-fetch-size=100
mybatis.configuration.default-statement-timeout=30

问题是mybatis无法映射我的枚举类型,并且错误显示

代码语言:javascript
复制
Caused by: org.apache.ibatis.executor.result.ResultMapException: Error attempting to get column 'gender' from result set.  
Cause: java.lang.IllegalArgumentException: No enum constant com.mycom.myproducts.mywebsite.config.bean.config.UserBean.Gender.0

这可以由mybatis-config.xml

代码语言:javascript
复制
    <typeHandlers>
       <typeHandler handler="org.apache.ibatis.type.EnumOrdinalTypeHandler" javaType="com.mycom.myproducts.mywebsite.config.bean.config.UserBean$Gender"/>
    </typeHandlers>

但我不知道application.properties文件怎么能做到这一点?

EN

回答 2

Stack Overflow用户

发布于 2019-03-01 18:00:46

尝尝这个

代码语言:javascript
复制
package com.example.typehandler;
@MappedTypes({Gender.class})
public class GenderTypeHandler extends EnumOrdinalTypeHandler {}
代码语言:javascript
复制
mybatis.type-handlers-package=com.example.typehandler
代码语言:javascript
复制
    @Select(...)
    @Results(value = {
             @Result(property="gender", column="gender", typeHandler="com.example.typehandler.Gender"),
             ...

如果使用typeHandler,则@Result中的@MappedTypes可能是不必要的。

票数 3
EN

Stack Overflow用户

发布于 2017-06-22 12:24:46

您需要直接指定包而不是TypeHandler类。

所以你可以用它做下一个:

代码语言:javascript
复制
mybatis.type-handlers-package=org.apache.ibatis.type

手册页面显示,type-handlers-package get包用于搜索类型别名。

用于搜索类型处理程序的type-handlers-package包。(包分隔符为",;\t\n")

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44690789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档