gpt4 book ai didi

MyBatis 在解析 SQL Mapper 配置处理程序时不解析内部类

转载 作者:行者123 更新时间:2023-12-04 01:30:15 34 4
gpt4 key购买 nike

使用 MyBatis 3.2.8,我试图将枚举类型(状态)映射到 jdbc VARCHAR 类型(只能使用我的实体 bean 中的枚举)。所以我定义了 TypeHandler UserStatusHandler

import com.sample.User.Status;
import org.apache.ibatis.type.EnumTypeHandler;

public class UserStatusHandler extends EnumTypeHandler<Status>
{
public UserStatusHandler(Class<Status> type)
{
super(type);
}
}

我在 xml 配置文件和 UserDao.xml 中正确声明了处理程序(将属性 Status 映射到 resultMap 中的 VARCHAR ...)
样本 :
In the XML config file:
<typeHandlers>
<typeHandler handler="com.sample.dao.UserStatusHandler" javaType="com.sample.User.Status"/>
</typeHandlers>

In the DAO mapper XML file:
<resultMap id="UserResultMap" type="User">
<id property="id" column="ID" javaType="long"/>
<result property="status" column="STATUS" typeHandler="com.sample.dao.UserStatusHandler" javaType="com.sample.User.Status"/>
xxxxx
</resultMap>

但是来自 MyBatis 的问题是 MyBatis 找不到我的 java enum 类,因为它是在另一个接口(interface)中定义的
public interface User
{
public enum Status
{
A, B, C
}
...
}

当我在一个单独的文件中定义这个枚举类时,它可以正常工作,但我不想改变我的设计(因为有限制?),我搜索以了解为什么 MyBatis 在这种情况下找不到该类?这是解决这个问题的方法吗?

MyBatis 无法构建 SqlSession。在执行简单测试以查找用户时,出现以下异常
Cause: org.apache.ibatis.builder.BuilderException: 
Error parsing SQL Mapper Configuration. Cause:
org.apache.ibatis.builder.BuilderException: Error resolving class.
Cause: org.apache.ibatis.type.TypeException: Could not resolve type
alias 'com.sample.User.Status'.
Cause: java.lang.ClassNotFoundException: Cannot find class:
com.sample.User.Status

最佳答案

最后我通过在 XML 配置文件中写入内部枚举的名称来解决它,就像它在 jar 中关联的编译文件名一样,即通过添加美元 $在被包围的类(Class)和内部类(Class)之间。
com.sample.User$Status
它在 MyBatis 中出现了一个错误或限制..

关于MyBatis 在解析 SQL Mapper 配置处理程序时不解析内部类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28855867/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com