argument type mismatch(注解@TableId(value = “id“,type = IdType.AUTO) 和 @TableField)

本文讲述了在Spring Boot项目中遇到的MyBatis插入错误,重点在于解决id字段类型不匹配和自增策略的问题,以及如何正确使用@TableField注解。通过例子阐述了主键生成策略和字段映射的重要性。

问题一:

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: Could not set property ‘id’ of ‘class com.example.finalspringsecurity.entity.Log’ with value ‘1476725931937652738’ Cause: java.lang.IllegalArgumentException: argument type mismatch;

原因:我在数据库里面设置log表的id字段是自增的,进行插入测试也没有问题;但是在对应的实体bean的id字段没有设置自增,导致值是由虚拟机分配的,然后分配的值有不满足我定义的类型,所有出现了类型不匹配的原因;
解决办法:id字段添加注解@TableId(value = “id”,type = IdType.AUTO)

SELECT * FROM LOG   
INSERT INTO `log` ( username, flag,ip,create_time )
VALUES
( 'lyq', '0', '12345678','依存'); 

在这里插入图片描述
顺带解释下一下两个注解:
@TableId(value = “id”,type = IdType.AUTO)
value映射主键字段的名字,type设置主键的类型 主键生成策略;
使用场景:数据库中的主键字段名字uid和实体中对应的字段名字id不一致,需要使用这个字段设置对应,AUTO设置为从0自增;

@TableField(value = “name”,exist = true)
非主键字段使用,比如数据库中的表名字为name,实体类为username,则需要在实体类上添加这个注解@TableField(value = “name”);exist = true表示为数据库中的字段,false的话表示非数据库字段;

问题二:

@TableField(value = “1”)没有正确使用,导致我这个字段属性设置为默认值为1;不管数据库中是什么值;(⊙o⊙)…
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值