广告
返回顶部
首页 > 资讯 > 后端开发 > Python >解决Mybatis映射文件mapper.xml中的注释问题
  • 180
分享到

解决Mybatis映射文件mapper.xml中的注释问题

2024-04-02 19:04:59 180人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录mybatis映射文件mapper.xml的注释问题报错信息解决办法mapper.xml文件中的注释注释方式‘无效的列索引’bug和解决小结一下Mybat

Mybatis映射文件mapper.xml的注释问题

从昨天夜晚9点到今天中午,一直被项目bug所困惑,中间这段时间一直未解决这个问题,也咨询很多群里大佬,也未能解决

有的说是我代码写的有问题,如mapper文件中没有写入参数类型parameterType,也有说是我项目结构目录构建出错,按照他们的建议进行修正,也是未尽人意,启动项目运行始终报出同一个错误,现在问题解决了,感觉有必要记录这个很不经意的问题,造成这个bug的问题根本原因还是自己编码不规范造成。

报错信息

12:12:11 [Http-NIO-8081-exec-8] ERROR w.g.z.c.exception.BDExceptionHandler - nested exception is org.apache.ibatis.type.TypeException: Could not set parameters for mapping: ParameterMapping{property='limit', mode=IN, javaType=int, jdbcType=null, numericScale=null, resultMapid='null', jdbcTypeName='null', expression='null'}. Cause: org.apache.ibatis.type.TypeException: Error setting non null for parameter #4 with JdbcType null . Try setting a different JdbcType for this parameter or a different configuration property. Cause: java.sql.SQLException: Parameter index out of range (4 > number of parameters, which is 3).
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.type.TypeException: Could not set parameters for mapping: ParameterMapping{property='limit', mode=IN, javaType=int, jdbcType=null, numericScale=null, resultMapId='null', jdbcTypeName='null', expression='null'}. Cause: org.apache.ibatis.type.TypeException: Error setting non null for parameter #4 with JdbcType null . Try setting a different JdbcType for this parameter or a different configuration property. Cause: java.sql.SQLException: Parameter index out of range (4 > number of parameters, which is 3).
    at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:79)
    at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:447)
    at com.sun.proxy.$Proxy104.selectList(Unknown Source)
    at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:231)
    at org.apache.ibatis.binding.MapperMethod.executeFORMany(MapperMethod.java:137)
    at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:75)
    at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:59)
    at com.sun.proxy.$Proxy120.list(Unknown Source)

项目报错根本原因在下面的xml文件中

DuesMapper.xml

 <select id="list" resultType="whut.glxiang.zqly.dues.domain.DuesDO">
        
        select d.user_id,
              su.username,
              d.dues,
              d.status,
              d.total_price,
              d.pay_time
        from dues d
        left join sys_user su
        on d.user_id=su.user_id
        <where>
            <if test="userId != null and userId != ''"> and d.user_id = #{userId} </if>
        </where>
        <choose>
            <when test="sort != null and sort.trim() != ''">
                order by ${sort} ${order}
            </when>
            <otherwise>
                order by d.user_id desc
            </otherwise>
        </choose>
        <if test="offset != null and limit != null">
            limit #{offset}, #{limit}
        </if>
    </select>

解决办法

首先检查自己的mapper.xml文件中是否存在注释?xml文件中的注释不能是 ,要不然就会报出上面的错误信息,只能以<!开头,和 > 结尾

其次就是检查自己的sql语句是否写的有问题或者映射的实体类属性是否与sql查询的字段一致

总之,项目编码一定要规范,这样才能减少找bug的时间,提高效率,上面项目运行报错就是因为这个xml注释不规范,大家还是多要注意!!! 编码不规范,自己两行泪。

mapper.xml文件中的注释

注释方式

在mapper.xml文件中,注释方式为<!--existence of query content-->,直接采用Java代码方式的注释会报错,尤其是在SQL语句中出现这种注释方式时。

‘无效的列索引’bug和解决

昨天在导入数据时需要对数据进行验证,在mapper文件中对表中数据进行查询,将作废sql注释时选择了Java方式,此时会报错。

<select id="getSeqNameCount" parameterClass="java.util.HashMap" resultClass="java.lang.Integer">
    SELECT COUNT(*) COUN FROM tablename A
        WHERE  A.id=#id#  and  A.name=#name#
    
    </select>

在解析时由于会将参数位置解析为占位符‘?’,所以此时以下的sql会在后台解析成如下,但是传入的参数只有两个,所以这个时候会报 “Caused by: java.sql.SQLException: 无效的列索引”,因为传入的参数和占位符数量不等。

SELECT COUNT(*) COUN FROM tablename A WHERE A.id=? and A.name=?
    /*SELECT * FROM tablename A WHERE  A.id=? and    A.name=?/

小结一下

1、mapper.xml文件中注释方式为<!--existence of query content-->;

2、“Caused by: java.sql.SQLException: 无效的列索引”错误一般由sql语句中占位符引起:

传入参数数量不等与占位符的数量;

SQL语句中的占位符?是中文版;

SQL语句中的占位符?被放在字符串内;

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: 解决Mybatis映射文件mapper.xml中的注释问题

本文链接: https://www.lsjlt.com/news/162209.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 解决Mybatis映射文件mapper.xml中的注释问题
    目录Mybatis映射文件mapper.xml的注释问题报错信息解决办法mapper.xml文件中的注释注释方式‘无效的列索引’bug和解决小结一下Mybat...
    99+
    2022-11-12
  • 解决mybatis-plus自动配置的mapper.xml与java接口映射问题
    目录mybatis-plus自动配置mapper.xml与java接口映射其中核心功能就是下面这个方法mybatis-plus3 配置mapper和xml映射关系原因就是mapper...
    99+
    2022-11-12
  • MyBatis的SUM映射问题及解决
    目录SUM映射问题原因解决方式sum 返回映射问题(sum报表统计接口返回)MyBatis sum 返回值映射SUM映射问题 当我们根据类别进行统计,返回的数据类型为HashMap&...
    99+
    2022-11-13
  • mybatis配置Mapper.xml文件时遇到的问题及解决
    目录mybatis配置Mapper.xml文件遇到的问题错误提示错误原因及解决办法mybatis的mapper.xml配置详情mapper.xml是什么?使用步骤总结mybatis配...
    99+
    2023-01-09
    mybatis配置Mapper.xml Mapper.xml文件问题 mybatis Mapper.xml文件
  • MyBatis的SUM映射问题怎么解决
    本文小编为大家详细介绍“MyBatis的SUM映射问题怎么解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“MyBatis的SUM映射问题怎么解决”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。SUM映射问题当我...
    99+
    2023-06-29
  • Mybatis的sql注释问题怎么解决
    这篇文章主要介绍“Mybatis的sql注释问题怎么解决”,在日常操作中,相信很多人在Mybatis的sql注释问题怎么解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Mybatis的sql注释问题怎么解决...
    99+
    2023-07-02
  • Mybatis-Plus映射匹配兼容性的问题解决
    目录问题一:表字段与编码属性设计不同步问题二:编码中添加了数据库中未定义的属性问题三:采用默认查询开放了更多的字段查看权限问题四:表名与编码开发设计不同步从表中查询出数据,并将数据封...
    99+
    2023-01-11
    Mybatis-Plus 映射匹配兼容性 Mybatis-Plus 映射匹配
  • Mybatis配置映射文件中parameterType的用法讲解
    目录Mybatis配置映射文件parameterType用法1.基本数据类型2.复杂数据类型:包含java实体类,mapMybatis parameterType # $符号的注意事...
    99+
    2022-11-12
  • MyBatis映射文件中parameterType与resultType的用法详解
    目录resultMap resultTypeparameterType总结resultMap  表示查询结果集与java对象之间的一种关系,处理查询结果集,映射到...
    99+
    2023-05-15
    parametertype和resulttype parametertype和resulttype的区别
  • 怎么解决mybatis映射和实际类型不一致的问题
    本篇内容主要讲解“怎么解决mybatis映射和实际类型不一致的问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么解决mybatis映射和实际类型不一致的问题”吧!mybatis映射和实际类型...
    99+
    2023-06-21
  • 解决云服务器映射本地文件夹安装问题
    1. 确认网络连接和权限 在安装云服务器映射本地文件夹之前,首先需要确保你的设备已经连接到互联网,并且具有足够的权限来进行安装操作。如果你使用的是苹果设备,确保你的设备已经连接到可用的网络,并且你具有管理员权限。 2. 检查软件兼容性 确...
    99+
    2023-10-28
    文件夹 服务器
  • 如何解决vue中路由映射的问题
    小编给大家分享一下如何解决vue中路由映射的问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在项目中遇到了一个问题,明明在Ro...
    99+
    2022-10-19
  • mybatis 解决从列名到属性名的自动映射失败问题
    问题背景 从数据库中取出数据映射到实体类时,实体类中只有部分属性映射成功,其余属性值皆为null。 问题描述 如下图AreaDao.xml文件中描述了queryArea()方法从数据...
    99+
    2022-11-12
  • 如何解决mybatis-plus实体类中出现非数据库映射字段的问题
    本篇内容主要讲解“如何解决mybatis-plus实体类中出现非数据库映射字段”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何解决mybatis-plus实体类中出现非数据库映射字段”吧!在使...
    99+
    2023-06-07
  • 解决mybatis-generator生成器添加类注释方法无效的问题
    遇到的问题! 注:自定义CommentGenerator的都知道 通过实现CommentGenerator接口的一些不足,毕竟只是实现了CommentGenerator接口,在里面的...
    99+
    2022-11-12
  • mybatis如何解决从列名到属性名的自动映射失败的问题
    本篇内容介绍了“mybatis如何解决从列名到属性名的自动映射失败的问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!问题背景从数据库中取出...
    99+
    2023-06-20
  • mybatis-generator生成文件覆盖问题的解决
    目录mybatis-generator生成文件覆盖解决方案mybatis-generator避免覆盖自定义的sql方法mybatis-generator生成文件覆盖 在Idea中使用...
    99+
    2022-11-13
  • 如何解决mybatis-generator生成器添加类注释方法无效的问题
    本篇内容主要讲解“如何解决mybatis-generator生成器添加类注释方法无效的问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何解决mybatis-generator生成器添加类注释...
    99+
    2023-06-20
  • linux中怎样解决文件已删除但空间不释放的问题
    这篇文章给大家介绍linux中怎样解决文件已删除但空间不释放的问题,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1、错误现象运维的监控系统发来通知,报告一台服务器空间满了,登录服务器查看,根分区确实没有空间了:[roo...
    99+
    2023-06-28
  • linux中怎么解决文件已删除但空间不释放的问题
    本篇内容主要讲解“linux中怎么解决文件已删除但空间不释放的问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“linux中怎么解决文件已删除但空间不释放的问题”吧!导读一般来说不会出现删除文件...
    99+
    2023-06-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作