解决mybatisplus插入报错argument type mismatch的问题

今天使用argument type mismatch发现插入的时候报错

java.lang.IllegalArgumentException: argument type mismatch

从错误中看是参数的问题,想到我再实体类里面定义了几个在数据库中没有的字段,就使用了

@TableField(exist = false)

来排除掉这个字段。

再跑发现还是这个错误,后来看了下主键的@TableId默认的type是IdType.NONE,想想我们应该用自增的id就手动增加了一个

@TableId(type = IdType.AUTO)

果然,再插入的时候就可以了。

刚使用mybatisplus,还不熟悉,都是路障啊。哎~

补充知识:Mybatis自定义DAO层时踩的坑

自定义Mybatis时出现,数据类型不匹配的异常

java.lang.RuntimeException: java.lang.IllegalArgumentException: argument type mismatch。。。

for (int i = 1; i <= columnCount; i++) {
          //获取每列的名称,列名的序号是从1开始的
          String columnName = rsmd.getColumnName(i);
          //根据得到列名,获取每列的值
          Object columnValue = rs.getObject(columnName);
          System.out.println(columnValue.getClass().getSimpleName());
          //给obj赋值:使用Java内省机制(借助PropertyDescriptor实现属性的封装)
          PropertyDescriptor pd = new PropertyDescriptor(columnName,domainClass);//要求:实体类的属性和数据库表的列名保持一种
          //获取它的写入方法
          Method writeMethod = pd.getWriteMethod();
          //把获取的列的值,给对象赋值
          writeMethod.invoke(obj,columnValue);
        }
        //把赋好值的对象加入到集合中
        list.add(obj);

这种情况是因为数据库中定义的类型在运行时不一定就是那个类型,例如你用int型定义的字段,但是在取出来的值却是别的类型,这个时候建议打印一下字段类型,然后在相应的实体类中修改类型即可。

最好不要直接用object赋值,使用map会好一些。

以上这篇解决mybatisplus插入报错argument type mismatch的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • MyBatis常见报错问题及解决方案

    这是一个出错的代码 public interface OrderInfoManageMapper { List<GetOrderInfoManageListReq> selectAllOrder(); void modifyDelivery(int id); void removeOrder(int id); List<GetOrderInfoManageListReq> selectOrderById(@Param("id") Integer id); } 一

  • mybatisplus的公共字段插入的实现

    Mybatis的公共字段插入的实现,具体内容如下所示: 公共的基础类 package com.yss.common.domain; import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.myba

  • MyBatisPlus中使用or()和and()遇到的问题

    在项目中使用MyBatisPlus中的or()查询时由于误用,导致查询数据不对,仅作记录. 写法一: LambdaQueryWrapper<Task> queryWrapper = new QueryWrapper<Task>().lambda(); queryWrapper .eq(Task::getUserId, "15") .eq(Task::getStatus, 2) .or() .eq(Task::getFileSize, 3251544304L);

  • 解决mybatisplus插入报错argument type mismatch的问题

    今天使用argument type mismatch发现插入的时候报错 java.lang.IllegalArgumentException: argument type mismatch 从错误中看是参数的问题,想到我再实体类里面定义了几个在数据库中没有的字段,就使用了 @TableField(exist = false) 来排除掉这个字段. 再跑发现还是这个错误,后来看了下主键的@TableId默认的type是IdType.NONE,想想我们应该用自增的id就手动增加了一个 @TableId

  • Oracle+Mybatis的foreach insert批量插入报错的快速解决办法

    最近做一个批量导入的需求,将多条记录批量插入数据库中. 解决思路:在程序中封装一个List集合对象,然后把该集合中的实体插入到数据库中,因为项目使用了MyBatis,所以打算使用MyBatis的foreach功能进行批量插入.期间遇到了"SQL 命令未正确结束 "的错误,最终解决,记录下来供以后查阅和学习. 首先,在网上参考了有关Mybatis的foreach insert的资料,具体如下: foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合. foreach

  • mybatis参数类型不匹配错误argument type mismatch的处理方案

    目录 参数类型不匹配错误argument type mismatch 错误日志 错误描述 错误原因 mybatis时argument type mismatch的坑 错误描述:参数类型不匹配 例如 参数类型不匹配错误argument type mismatch 错误日志 java.lang.RuntimeException: org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.execu

  • 解决Maven 项目报错 java.httpservlet和synchronized使用方法

    使用java8 的lanmbe表达式时,使用java1.8编译,则会报错 需要在pom.xml的<bulid></build>中添加 <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.2</versi

  • ECSHOP完美解决Deprecated: preg_replace()报错的问题

    随着PHP5.5 的普及,ECSHOP系统又爆出了新的错误.PHP发展到PHP5.5版本以后,有了很多细微的变化.而ECSHOP官方更新又太慢,发现这些问题后也不及时升级,导致用户安装使用过程中错误百出.说了半天,这个新错误到底是什么呢,它的完整错误提示信息是这样的: Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in....... 注意:不是所有人的ECS

  • 解决Unixbench安装报错信息的问题

    运行环境: Ubuntu 16.04.3 x86_64 在Ubuntu下安装运行Unixbench时,提示报错信息如下 gcc -o ./pgms/ubgears -DTIME -Wall -pedantic -ansi -O2 -fomit-frame-pointer -fforce-addr -ffast-math -Wall ./src/ubgears.c -lGL -lXext -lX11 /usr/bin/ld: /tmp/ccnTgDEZ.o: undefined reference

  • 解决vue项目报错webpackJsonp is not defined问题

    在vue单页面应用中,我们大概都会使用CommonsChunkPlugin这个插件. 传送门 CommonsChunkPlugin 但是在项目经过本地测试没有任何问题,打包上线后却会报错 webpackJsonp is not defined.这是因为公共文件必须在自己引用的js文件之前引用. 可以手动改文件引用,但是推荐以下解决办法: 找到build→webpack.prod.conf.js→找到HtmlWebpackPlugin插件,添加如下配置即可 chunks: ['manifest',

  • 解决yum安装报错Protected multilib versions的问题

    今天在云服务器上装nginx,需要先安装一些依赖库比如zlib,但是安装zlib时候报错. yum install -y zlib zlib-devel (-y 指的是如果需要选yes no的自动y)下面是报错 Protected multilib versions: zlib-1.2.7-17.el7.x86_64 != zlib-1.2.7-15.el7.i686 原因是因为多个库不能共存,不过更新的话也并不行,但是可以在安装命令后面加上 --setopt=protected_multili

  • 解决pytorch-yolov3 train 报错的问题

    UserWarning: indexing with dtype torch.uint8 is now deprecated, please use a dtype torch.bool instead https://github.com/eriklindernoren/PyTorch-YOLOv3/blob/master/models.py#L191 将model.py  obj_mask转为int8 bool obj_mask=obj_mask.bool() # convert int8

  • 完美解决pyinstaller打包报错找不到依赖pypiwin32或pywin32-ctypes的错误

    报错信息 最近闲来无事,用python的tkinter库开发了一款带日程提醒的万年历桌面程序.在程序开发结束开始打包时,却发现一直报错 PyInstaller cannot check for assembly dependencies. Please install PyWin32 or pywin32-ctypes. pip install pypiwin32 但是运行pip install pypiwin32时却提示两个库都已经安装过了 可是当再运行打包脚本时就是死活无法打包,就是提示缺少

随机推荐