初学Mybatis时遇到 Error building SqlSession.的原因,看了半天,终于成功解决了
2017-11-16 11:06
656 查看
1、我出现的的错误
Exception in thread "main" java.lang.ExceptionInInitializerErrorCaused 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.<clinit>(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:<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 元素允许在主配置文件之外提供
4000
一个properties格式对应文件,从而使得主配置文件更加通用。这样对部署非常有用 -->
<properties resource="db.properties"></properties>
<!-- 设置别名,一定要放在properties下面 -->
<typeAliases>
<typeAlias alias="per" type="com.lhj.entity.Person"/>
</typeAliases>
<!-- 配置数据源相关的信息 -->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<!-- 映射文件 -->
<mappers>
<mapper resource="com/lhj/mapper/PersonMapper.xml"/>
</mappers>
</configuration>
PersonMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.lhj">
<!-- 查找 -->
<select id="findPerson" parameterType="int" resultType="Person">
select * from per where id=#{id}
</select>
<!-- 插入 -->
<insert id="addPerson" parameterType="Person"
useGeneratedKeys="true" keyProperty="id">
insert into per value(null,#{name},#{age})
</insert>
<!-- 删除 -->
<delete id="delPerson" parameterType="int">
delete from per where id=#{id}
</delete>
<!-- 修改 -->
<update id="updatePerson" parameterType="Person">
update per set name=#{name},age=#{age} where id=#{id}
</update>
</mapper>
3、错误原因
我在mybatis-config.xml的这个配置文件里给实体类设置了别名<typeAliases><typeAlias alias="per" type="com.lhj.entity.Person"/>
</typeAliases>,而在PersonMapper.xml这个配置文件中的resultType="Person"、parameterType="Person",我却没有用到这个别名。
解决办法就是把PersonMapper.xml这个配置文件中的修改成resultType="per"、parameterType="per"或者不用别名,直接用包名加类名,例如:resultType="com.lhj.entity.Person"、parameterType="com.lhj.entity.Person"。
哈哈,这样就完美解决了。
相关文章推荐
- 初玩mybatis遇到Error building SqlSession.
- 初学Mybatis 构建sqlSession 错误问题 Error building SqlSession Mybatis java.lang.NullPointerException
- mysql 短连接压测遇到的问题及查找解决思路[终于找到原因了]
- MySQL SQLSTATE[42000]: Syntax error or access violation: 1286 Unknown table engine 'InnoDB' 错误的原因及解决
- 出现 DB2 SQL Error: SQLCODE = -798, SQLSTATE = 428C9 错误的原因及解决方法
- 解决mybatis继承SqlSessionDaoSupport方式操作数据库不打印sql日志的问题。
- android编程中遇到的关于Error parsing XML: unbound prefix错误的原因及解决办法
- 多文件、多图片上传时遇到Error Initializing Session的解决办法
- ### Error building SqlSession. ### The error may exist in sqlmap/User.xml
- provider:SQL Network Interfaces,error:26 - 定位指定的服务器/实例时出错--错误原因及解决办法
- 出现 DB2 SQL Error: SQLCODE = -798, SQLSTATE = 428C9 错误的原因及解决方法
- 配置spring+mybatis时出现Error creating bean with name 'sqlSessionTemplate‘
- [cacti]出错,ERROR: SQL Assoc Failed!, Error:'145' 查找原因并解决
- DWR Weblogic Session Error 困扰我半天的解决办法
- Error building SqlSession.
- 举例说明android编程中遇到Error parsing XML: unbound prefix错误的原因及解决办法
- ### Error building SqlSession.
- DB2 SQL Error: SQLCODE=-964, SQLSTATE=57011的原因及解决方法
- 解决MyBatis的SqlSession不及时close导致的内存泄露一例
- SQL Develper 每次遇到这种情况我都郁闷,今天终于解决了。