今天测试接口的时候

报错 Field ‘p_id’ doesn’t have a default value
打印了一下Passager,没什么问题
Passager: Passager [Hash = 13932247, pId=0, passaerName=string, age=0, serialVersionUID=1]
发现问题出在了SQL语句。
SQL: insert into passager (passaer_name, age) values (?, ?)
因为用的是MyBatis框架,所以那很可能就是映射出问题了。
一看发现,果然是

他这里没有插入pid,而我数据库也没有设置默认或自增。手动改写语句。

经测试,能够成功添加。
为什么他会不插入pid呢?
我的所有的映射文件是用MyBatis Generator自动生成的,而配置里配置了generatedKey

这里设置了生成规则,所以就生成的mapper不会插入id

最近简单的做法就是把配置改成这样。
当然,正确的应该是修改数据库的设计(设计的不是很合理),但是课设没什么时间剩下了,所以就图方便…注意后续插入时主键不能重复。
[基础不牢地动山摇]MyBatis Generator错误使用之(doesn‘t have a default value / generatedKey / )
本文介绍了一个关于MyBatis框架中PID字段默认值缺失的问题及其解决方案。作者在测试接口时遇到错误提示,通过排查发现是由于SQL插入语句未包含PID字段导致,并且数据库中该字段也未设置默认值或自增长。最终通过调整插入语句及更改配置文件解决了问题。
1503

被折叠的 条评论
为什么被折叠?



