在Mybatis中自己编写insert标签时,如果想将数据库自动生成的主键id设置入实体对象中,只要在insert标签中添加useGeneratedKeys="true" keyProperty="id"属性就可以了。但是如果insert语句不是insert标签的第一个sql语句的话,Mybatis就不会设置实体类的主键id。在这种情况如何设置实体对象的主键id呢?
根据实际情况吧,我们现在的做法是,主键类型bigint(64),程序使用雪花算法生成,插入时设值。
当然不用每次手动设值,可以用SQL拦截insert,或者封装save方法,如果存在特定主键注解值(例如搞个@IdType),那么就生成并set到主键字段里(具体可参见MyBatis-Plus的save方法)。
还可以在MySQL中自定义一个生成主键的函数,例如f_id(),使用时:insert into table values(f_id(), xxx, xxx)。
以供参考~~