求大神解决,mybatis插入数据报id为空
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求大神解决,mybatis插入数据报id为空相关的知识,希望对你有一定的参考价值。
我实体类里面是这样定义的,id为String类型
service 里面是这样写的,出过去的是一对象
mapper.xml中是这样写的sql
我想知道哪需要改,我在网上看好像说是要把String类型的id转化为int类型然后设置自增,哪需要改呢?
都对应着呢,只不过就主键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数据库插入中文数据会乱码,英文不会,求大佬怎么解决?
解决Oracle+Mybatis批量插入报错:SQL 命令未正确结束
ibatis中sqlmapExecutor.executeBatch()怎么返回成功的记录数为啥总是返回0 求大神