初学Mybatis时遇到 Error building SqlSession.的原因,看了半天,终于成功解决了

1、我出现的的错误

Exception in thread "main" java.lang.ExceptionInInitializerError
Caused by: org.apache.ibatis.exceptions.PersistenceException: 
### Error building SqlSession.
### The error may exist in com/lhj/mapper/PersonMapper.xml
### Cause: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. Cause: org.apache.ibatis.builder.BuilderException: Error resolving class. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias 'Person'.  Cause: java.lang.ClassNotFoundException: Cannot find class: Person
	at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:26)
	at org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:54)
	at org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:38)
	at com.lhj.test.Test.(Test.java:21)
Caused by: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. Cause: org.apache.ibatis.builder.BuilderException: Error resolving class. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias 'Person'.  Cause: java.lang.ClassNotFoundException: Cannot find class: Person
	at org.apache.ibatis.builder.xml.XMLConfigBuilder.parseConfiguration(XMLConfigBuilder.java:109)
	at org.apache.ibatis.builder.xml.XMLConfigBuilder.parse(XMLConfigBuilder.java:92)
	at org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:52)
	... 2 more
Caused by: org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. Cause: org.apache.ibatis.builder.BuilderException: Error resolving class. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias 'Person'.  Cause: java.lang.ClassNotFoundException: Cannot find class: Person
	at org.apache.ibatis.builder.xml.XMLMapperBuilder.configurationElement(XMLMapperBuilder.java:120)
	at org.apache.ibatis.builder.xml.XMLMapperBuilder.parse(XMLMapperBuilder.java:92)
	at org.apache.ibatis.builder.xml.XMLConfigBuilder.mapperElement(XMLConfigBuilder.java:322)
	at org.apache.ibatis.builder.xml.XMLConfigBuilder.parseConfiguration(XMLConfigBuilder.java:107)
	... 4 more
Caused by: org.apache.ibatis.builder.BuilderException: Error resolving class. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias 'Person'.  Cause: java.lang.ClassNotFoundException: Cannot find class: Person
	at org.apache.ibatis.builder.BaseBuilder.resolveClass(BaseBuilder.java:103)
	at org.apache.ibatis.builder.xml.XMLStatementBuilder.parseStatementNode(XMLStatementBuilder.java:72)
	at org.apache.ibatis.builder.xml.XMLMapperBuilder.buildStatementFromContext(XMLMapperBuilder.java:135)
	at org.apache.ibatis.builder.xml.XMLMapperBuilder.buildStatementFromContext(XMLMapperBuilder.java:128)
	at org.apache.ibatis.builder.xml.XMLMapperBuilder.configurationElement(XMLMapperBuilder.java:118)
	... 7 more
Caused by: org.apache.ibatis.type.TypeException: Could not resolve type alias 'Person'.  Cause: java.lang.ClassNotFoundException: Cannot find class: Person
	at org.apache.ibatis.type.TypeAliasRegistry.resolveAlias(TypeAliasRegistry.java:117)
	at org.apache.ibatis.builder.BaseBuilder.resolveAlias(BaseBuilder.java:130)
	at org.apache.ibatis.builder.BaseBuilder.resolveClass(BaseBuilder.java:101)
	... 11 more
Caused by: java.lang.ClassNotFoundException: Cannot find class: Person
	at org.apache.ibatis.io.ClassLoaderWrapper.classForName(ClassLoaderWrapper.java:190)
	at org.apache.ibatis.io.ClassLoaderWrapper.classForName(ClassLoaderWrapper.java:89)
	at org.apache.ibatis.io.Resources.classForName(Resources.java:256)
	at org.apache.ibatis.type.TypeAliasRegistry.resolveAlias(TypeAliasRegistry.java:113)
	... 13 more

2、我的配置文件

mybatis-config.xml:






	
	
	
	
	
		
	
	
	
	
		
			
			
				
				
				
				
			
		
	
	
	
	
		
		
	

PersonMapper.xml






	
	
	
	
	
		insert into per value(null,#{name},#{age})
	
	
	
	
		delete from per where id=#{id}
	
	
	
	
		update per set name=#{name},age=#{age} where id=#{id}
	


3、错误原因

我在mybatis-config.xml的这个配置文件里给实体类设置了别名
        
    
,而在PersonMapper.xml这个配置文件中的resultType="Person"、parameterType="Person",我却没有用到这个别名。

解决办法就是把PersonMapper.xml这个配置文件中的修改成resultType="per"、parameterType="per"或者不用别名,直接用包名加类名,例如:resultType="com.lhj.entity.Person"、parameterType="com.lhj.entity.Person"。

哈哈,这样就完美解决了。

你可能感兴趣的:(mybatis)