Mybatis - 无效的列类型: 1111

简介: Mybatis - 无效的列类型: 1111



/在使用Mybatis时,不同的xml配置文件,有的会提示:无效的列类型: 1111


情况一

通过观察,如果是参数是Map类型或者Java Object类型,如果Map或者Object里面的属性类型不一致,如有些属性是String类型,有些属性是Integer类型,那么MyBatis解析的时候,就会出现问题,类型无法识别。


当然,如果传入参数不是Map或者Java Object,而是多个参数列表的形式,如果参数类型一致,那么不会出现问题,如果参数类型不一致,如既有String类型,也有Integer类型,那么解析的时候同样会出错。


最后,解决方案,如果有类型不一致的情况,在值后面加上类型



passWord = #{passWord,jdbcType=VARCHAR}
enable = #{enable,jdbcType=NUMERIC}

这里passWord是String类型,enable是Integer类型


注:如果所有的类型都一致,则无需额外为字段加上类型


情况二

还有一种情况,就不是类型不类型的问题,是我这个值为 null,导致没办法自动区分类型,重点关注“#{fieldValue}”,因为这段 SQL 实现自动创建字段和对应的值,如果按照情况一的方式给它再来个动态的 jdbcType 就显得麻烦(不过也可以解决)


<insert id="insertValues" useGeneratedKeys="false">
    INSERT ALL
    <foreach collection="fieldValuesList" item="fieldValues">
        INTO ${tableName}
        <foreach collection="fieldNameList" item="fieldName" open="(" separator="," close=")">
            ${fieldName}
        </foreach>
        VALUES
        <foreach collection="fieldValues" item="fieldValue" open="(" separator="," close=")">
            #{fieldValue}
        </foreach>
    </foreach>
    SELECT 1 FROM DUAL
</insert>

解决方案:因为是不知道 Java 里的 null 属于啥类型,Mybatis 会认为属于 Other 类型,所以报错,那其实做个特判就可以,代码如下

<if test="fieldValue == null">
    #{fieldValue, jdbcType = VARCHAR}
</if>
<if test="fieldValue != null">
    #{fieldValue}
</if>
目录
相关文章
|
7月前
|
XML Java 数据库连接
mybatis中在xml文件中通用查询结果列如何使用
mybatis中在xml文件中通用查询结果列如何使用
422 0
|
7月前
|
SQL Java 数据库连接
Mybatis源码分析系列之第三篇:Mybatis的操作类型对象
Mybatis源码分析系列之第三篇:Mybatis的操作类型对象
|
Java 数据库连接 mybatis
mybatis返回map类型数据空值字段不显示(三种解决方法)
mybatis返回map类型数据空值字段不显示(三种解决方法)
|
7月前
|
SQL Java 数据库连接
Mybatis之核心配置文件详解、默认类型别名、Mybatis获取参数值的两种方式
【1月更文挑战第3天】 一、核心配置文件详解 二、默认的类型别名 三、MyBatis的增删改查 四、MyBatis获取参数值的两种方式 1、单个字面量类型的参数 2、多个字面量类型的参数 3、map集合类型的参数 4、实体类类型的参数 5、使用@Param标识参数
113 2
Mybatis之核心配置文件详解、默认类型别名、Mybatis获取参数值的两种方式
|
12天前
|
SQL Java 数据库连接
【MyBatisPlus·最新教程】包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段
MyBatis-Plus是一个MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。本文讲解了最新版MP的使用教程,包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段等核心功能。
【MyBatisPlus·最新教程】包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段
|
2月前
|
SQL Java 数据库连接
mybatis使用四:dao接口参数与mapper 接口中SQL的对应和对应方式的总结,MyBatis的parameterType传入参数类型
这篇文章是关于MyBatis中DAO接口参数与Mapper接口中SQL的对应关系,以及如何使用parameterType传入参数类型的详细总结。
37 10
|
2月前
|
SQL Java 数据库连接
Mybatis中传入不同类型的值处理方案
这篇文章讲述了在Mybatis中如何处理传入不同类型参数的情况,包括单个值、列表及Map等,并提供了相应的XML映射和Java代码示例。
81 0
|
7月前
|
存储 Java 数据库连接
MyBatis的类型处理器TypeHandler与自定义实现
MyBatis的类型处理器TypeHandler与自定义实现
566 0
|
7月前
|
存储 XML Java
mybatis使用内部类处理一对多类型数据2
mybatis使用内部类处理一对多类型数据2
69 0
|
SQL Java 数据库连接
mybatis查询数据时,返回类型设置的map,然后出现这个错误java.lang.NoSuchMethodException: java.util.Map.<init>
mybatis查询数据时,返回类型设置的map,然后出现这个错误java.lang.NoSuchMethodException: java.util.Map.<init>
240 0