解決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 +
"}";
}
}