求大神解决,mybatis插入数据报id为空

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求大神解决,mybatis插入数据报id为空相关的知识,希望对你有一定的参考价值。

我实体类里面是这样定义的,id为String类型

service 里面是这样写的,出过去的是一对象

mapper.xml中是这样写的sql

我想知道哪需要改,我在网上看好像说是要把String类型的id转化为int类型然后设置自增,哪需要改呢?

首先你先调试一下是不是代码中对象里面的值是不是空的,还有就是你最好将对象的相应的字段和数据库类型保持一致 就是operationLog和相应的表一致追问

都对应着呢,只不过就主键id是String类型的。项目中需要id为String类型

追答

如果别人传过来的是数字字符串,那么直接强转成数字就可以,如果是字符串,那么你就要把表的主键类型改为varchar类型。要么保存的时候不要主键的添加,数据库会自动设置主键

追问

我的主键本来就是String类型的,。您看我运行报的错,一直都是这个错吗,您能给解决下吗???

追答

建议你不要将主键设置成自增,在保存对象的时候将id自己写一个方法获取主键,最好是和其他人传递过来的主键是同样的生成方式。而且别人传递过来的主键是有值的,所以你设置自增是不合适的,你的这个异常就是主键没有默认值的问题,还有你的mybatise的映射不能很好的将表和javabean对应,采用对象映射数据库表字段,而不是在sql语句中定义类型

参考技术A 把String类型的id转化为int类型然后设置自增,在数据库中修改,数据库中有设置自增的,如果设置int类型,建议设置成long。追问

我知道在数据库中修改数据类型和设置自增,但是我这这张表不仅仅是我用,我同事也用他抓取过来的数据是String类型,然后塞到这张表里。应该有那中在程序中修改主键数据类型的方法吧?

追答

那你就自己写个id自增的方法不,修改数据类型有点不现实。

追问

嗯嗯,id自增的方法该怎么写呢。能帮忙给写下吗???

追答

System.currentTimeMillis();+synchronized+单例 自己写吧~

以上是关于求大神解决,mybatis插入数据报id为空的主要内容,如果未能解决你的问题,请参考以下文章

MacOs环境下Mybatis逆向工程向MySql数据库插入中文数据会乱码,英文不会,求大佬怎么解决?

mybatis怎样处理插入值为空

解决Oracle+Mybatis批量插入报错:SQL 命令未正确结束

ibatis中sqlmapExecutor.executeBatch()怎么返回成功的记录数为啥总是返回0 求大神

mybatis插入数据到数据库中,实体类的属性名与数据库的字段名不一致,怎么解决?

db2插入数据失败