这个是因为,id没法插入,因为虽然数据库中已经设置了 主键并自增,但是 使用注解的实体,还需要另外额外的配置才行:
解决办法:在主键上面加入下面的注解。
@TableId(value = "id",type= IdType.AUTO)
如果把主键的类型由integer改成int类型也可以实现 ,但是看同事的代码都是还用的integer类型。
百度了一下为什么要使用integer
2,使用包装类的好处
a),当我们不想给这个属性设置任何值的时候,我们可以给它一个null值(前提是数据库的字段允许插入NULL)。
b),我们可以在pojo类中使用验证注解对属性的值做校验(例如: javax.validation.constraints.NotNull)
4,两者在实际开发中的比较
a),如果你的数据库字段是允许为空的,使用包装类。如果不允许为空,使用包装的时候,如果你往数据库插入null值,此时就会抛出异常。然后你就可以对异常进行捕获并处理。
b),使用基本数据类型的时候,如果字段是NULL,那么JDBC会返回0,但是这里会有一个问题。有可能0在你的业务逻辑代表着特定含义,这时候就可能出现一些意想不到的后果
主键是integer类型 数据库设置了主键自增,但是还是报错 Could not set property 'id' xxx of 'class argument type mismatch
原文:https://www.cnblogs.com/ctrlMusic/p/12334656.html