解决mybatisplus saveBatch 或者save 无法插入主键问题

解决mybatisplus saveBatch 或者save 无法插入主键问题


通过跟踪源码后得出结论,由于插入的表的主键不是自增的,而是手动赋值的,所以在调用saveBatch 执行的sql语句是没有主键字段的(项目启动后mybatis 会对DynamicSqlSource 中的rootSqlNode对象赋值,里面就定了insert 插入的字段,默认是没有主键字段的 ),所以在设置实体类的主键字段@TableId(value = “xxx”,type = IdType.INPUT)即可,

完整实体类例子:

package com.common.model;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;

import java.io.Serializable;

@Data
@TableName("sys_role_menu")
public class SysRoleMenu implements Serializable {

private static final long serialVersionUID = 1L;

@TableId(value = "role_id",type = IdType.INPUT) //type = IdType.INPUT,没有的话无法插入主键
private Long roleId;

@TableField("menu_id")
private Long menuId;




@Override
public String toString() {
    return "SysRoleMenu{" +
    ", roleId=" + roleId +
    ", menuId=" + menuId +
    "}";
}

}

         原文地址:https://blog.csdn.net/zw521cx/article/details/99707298                       </div>
原文地址:https://www.cnblogs.com/jpfss/p/12095339.html