记录一下自己犯的很蠢的问题,记性不好怕忘
在mybatis配置文件中加入:
<settings>
<!--
允许JDBC支持自动生成主键,需要驱动兼容。
如果设置为true则这个设置强制使用自动生成主键,尽管一些驱动不能兼容但仍可正常工作(比如 Derby)。
-->
<setting name="useGeneratedKeys" value="true" />
</settings>
useGeneratedKeys 参数只针对 insert 语句生效,默认为 false。当设置为 true 时,表示如果插入的表以自增列为主键,则允许 JDBC 支持自动生成主键,并可将自动生成的主键返回。
在mapper.xml中:keyProperty=”对应的主键的对象”
<insert id="xxx" parameterType="xxx" keyProperty="id">
insert into tablename(id) values(#{id})
</insert>
在做到这的时候,我以为大功告成,结果抛出了一个异常
Cause: java.sql.SQLException: Field 'work_id' doesn't have a default value
看到这个我有点懵,我以为是配置没有生效,clean一下继续跑,还是这样。
找了半天,发现是建表的时候没有设置主键自增… =_= 丨丨丨
加上主键自增
alter table tablename modify id bigint(20) auto_increment;
给自增值设置初始值
alter table tablename auto_increment=1;
搞定。
问题很蠢,见笑