ibatis升级Mybatis,启动项目出现异常记录

本文介绍了在使用MyBatis时遇到的五种常见异常,包括启动项目报错、查询数据库异常、更新数据库错误、ResultMap冲突和JdbcType解析错误。针对每种异常,详细分析了错误原因并提供了相应的修改代码以解决问题。对于启动项目时的Notypehandlerfoundforproperty错误,原因是resultMap中type指定不当,应改为resultType。对于查询数据库异常,是因为缺少resultMap定义或引用错误。更新数据库报错是由于未处理字段的NULL限制。ResultMap冲突则需确保每个ResultMap的名称唯一。JdbcType解析错误是由于不支持的数据类型,应更正为正确的JdbcType。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

异常1

启动项目报错 : No typehandler found for property XXX

报错前代码
	<resultMap id="TypeLstMap" type="java.lang.String">
		<result property="value" column="CENTER"/>
	</resultMap>
	<select id="TypeLst" parameterType="com.sm.entity.myEntity" resultMap="TypeLstMap">
			SELECT
			CENTER as CENTER
		FROM
			JOKEN 
	</select>
修改后代码
	<select id="TypeLst" parameterType="com.sm.entity.myEntity" resultType="java.lang.String">
			SELECT
			CENTER as CENTER
		FROM
			JOKEN 
	</select>
原因:

原有指定resultMap中type指定是基本数据类型
所以不要使用resultMap
直接修改为resultType
必须删除标签

异常2

运行项目报错 :

Error querying database. Cause: org.apache.ibatis.builder.IncompleteElementException: Could not find result map ‘mapper的namespace名.TypeLst’ referenced from ‘mapper的namespace名.TypeLstMap’

报错前代码
	<select id="TypeLst" resultMap="TypeLstMap">
			SELECT
			CENTER as CENTER
		FROM
			JOKEN 
	</select>
修改后代码
	<resultMap id="TypeLstMap" type="com.sm.entity.myEntity">
		<result property="value" column="CENTER"/>
	</resultMap>
	<select id="TypeLst"  resultMap="TypeLstMap">
			SELECT
			CENTER as CENTER
		FROM
			JOKEN 
	</select>
原因1:

imbatis在select查询定义resultMap, 但是未写<resultMap标签不会报错
而mybatis中出现异常报错, 必须定义<resultMap标签
或者修改将resultMap修改为resultType

原因2:

未在xml中定义resultMap

异常3

登录系统报错 :

org.springframework.jdbc.UncategorizedSQLException:
Error updating database. Cause: java.sql.SQLException: ORA-01407: (“SQPRI”.“KOJIN_INF”.“USER_ID”)をNULLには更新できません。

原因:

update一张表的时候, 由于未做处理check, USER_ID未填写
数据库字段USER_ID设置不能为NULL
导致更新表的时候报错

异常4

启动项目报错:

nested exception is org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. The XML location is ‘file [com.rui.dao.xml.Move.xml]’. Cause: java.lang.IllegalArgumentException: Result Maps collection already contains value for MoveEntityMap

原因:

xml存在两个同名ResultMap
修改其中一个名字即可

异常5

启动项目报错:

Cause: org.apache.ibatis.builder.BuilderException: Error resolving JdbcType. Cause: java.lang.IllegalArgumentException: No enum constant org.apache.ibatis.type.JdbcType.VARCHAR2

原因:

数据库使用oracel
将#{moveId,jdbcType=VARCHAR2}
修改为#{moveId,jdbcType=VARCHAR}

异常6

ibatis 写法
<isEqual property="mTkValue" compareProperty="mTKZ001">
mybatis写法
--正确写法
<if test="mTkValue== mTKZ001">and
--错误写法,不能追加单引号
<if test="mTkValue== 'mTKZ001'">and
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值