解決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>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM