记录一下自己犯的很蠢的问题,记性不好怕忘

在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;

搞定。
问题很蠢,见笑

更多推荐

mybatis中设置主键自增