Mybatis中遇到的异常

本文详细解析了MyBatis使用过程中常见的错误,包括配置文件错误、数据无法写入数据库、字段类型错误、映射结果集错误等问题,并提供了具体的解决方法。

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

配置文件错误

在这里插入图片描述
报错内容:org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: org.apache.ibatis.builder.BuilderException: Error creating document instance. Cause: org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; 前言中不允许有内容。
原因:在配置文件中没有指定映射文件的位置。
处理:在配置文件中配置映射文件的位置

<mappers>
    <mapper resource="映射文件的全路径名"/>
</mappers>

数据无法写到数据库

在这里插入图片描述
问题:程序并未报错,但返回插入或者更新删除是返回值正确的(不为零)查询数据库发现数据并未写入进数据库
原因:mybatis除了查询,其他事务需要手动提交
解决:在执行操作之后,调用Sqlsession 的 commit()方法手动提交

字段类型错误(sql语句异常)

在这里插入图片描述
异常:Exception in thread “main” org.apache.ibatis.exceptions.PersistenceException:
Caused by: org.apache.ibatis.reflection.ReflectionException: There is no getter for property named ‘sanme’ in ‘class com.qianfeng.bean.Story’
原因:字段名拼写错误,找不到对应的字段名
处理:根据报错信息找到对应的错误字段名:Caused by: org.apache.ibatis.reflection.ReflectionException: There is no getter for property named ‘sanme’ in ‘class com.qianfeng.bean.Story’,找到并修改成正确字段即可

映射结果集错误

在这里插入图片描述
异常:Exception in thread “main” org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 2
原因:Mybatis在处理数据库表关系是存在一对一、一对多、多对多的关系,报错原因是混淆一对多和多对多的场景,在只需要一条数据时,查询返回多条数据信息,就会产生报错。
处理:1、更改映射文件中混淆的一对多、多对多的查询查询场景,
2、更改mapper中返回值类型,让多对多查询情况中返回集合,而不是单个的对象。
在这里插入图片描述
异常:映射结果集是,映射结构为空,但查到的数据条数是正确的
原因:在子查询时,查询存在一对多或者多对多时,返回的映射结果应当是resultMap类型,并在resultMap设置字段名
处理:1.在映射文件中子查询语句返回值类型应该时resultMap类型
2.映射结果集时,要额外建立一个resultMap,设置字段名获取映射结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值