初学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.<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>

	<!-- 元素允许在主配置文件之外提供一个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"。

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

回答: 错误构建SqlSession的问题可能有多种原因。根据引用\[1\]中的描述,可能是在写mybatis,对sqlSessionFactory的配置出现了问题。在执行sqlSessionFactory.openSession(false)之后,将其改回true或置空,一直报错。另外,根据引用\[2\]中的描述,错误可能是由于类型转换问题导致的。具体地说,可能是将Long类型转换为Integer类型出现了错误。此外,根据引用\[3\]中的描述,错误也可能是由于资源过滤问题导致的。解决方法是手动配置资源过滤,确保配置文件能够被正确导出。根据提供的信息,无法确定具体的错误原因解决方法。建议检查代码中的配置和类型转换,以及确保资源过滤配置正确。 #### 引用[.reference_title] - *1* [Error building SqlSession.解决办法](https://blog.csdn.net/cxyxiaoliu/article/details/120293431)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Error building SqlSession问题](https://blog.csdn.net/qq_45898383/article/details/123752064)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Error building SqlSession.一招解决](https://blog.csdn.net/weixin_43654123/article/details/121447006)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值