mybatis报Mapper配置文件出错

最近学习mybatis框架时,遇到一坑,记录一下debug过程。

操作表一对一查询时,运行junit测试类时报错如下:

org.apache.ibatis.exceptions.PersistenceException: 
### Error building SqlSession.
### The error may exist in com/annoDemo/dao/IAccountDao.xml
### The error occurred while processing mapper_resultMap[accountUserMap]
### Cause: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. The XML location is 'com/annoDemo/dao/IAccountDao.xml'. Cause: org.apache.ibatis.builder.BuilderException: Error resolving class. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias 'account'.  Cause: java.lang.ClassNotFoundException: Cannot find class: account

根据错误提示,第一时间检查了mapper的xml文件名称以及对应的包名是否跟dao接口类的一致,确认没有问题后,初步判定原因是mapper映射文件问题,mapper内容如下:







    
        
        
        

        
        
            
            
            
            
            
        
    

    

随后检查mapper文件中返回类型以及实体类属性、数据表对应字段,发现应该是由于resultMap定义的返回类型有问题,于是检查mybatis主配置文件







    
    
    
    
        
            
            
            
            
                
                
                
                
                
            
        
    

    
        
        
    


果不其然,调试后明确问题:
由于主配置文件只配置了标签下的指定了dao接口所在包,没有配置下的指定实体类的别名,因此mapper文件中返回的实体类名称不能使用简写,需要写完整全限定类名

    
    
        
        
    

主配置文件指定实体类别名后测试,测试类正常返回一对一查询的数据

你可能感兴趣的:(mybatis报Mapper配置文件出错)