Mybatis-Plus通用Mapper CRUD之insert(附帶視頻教程)


BaseMapper介紹

Mybatis-Plus框架的BaseMapper給我們提供了常用的CRUD接口,我們可以點進接口看下:

1.jpg

BaseMapper提供了我們CRUD的所有接口方法;

 

我們用insert方法來添加數據吧

/**
 * 插入一條記錄
 *
 * @param entity 實體對象
 */
int insert(T entity);

 

 這個是BaseMapper提供的insert方法,參數是實體類型,返回值是操作的記錄條數(比如添加了一條數據,返回的就是1,刪除了5條數據返回的就是5,更新了0條數據,返回就是0);

我們寫一個測試方法:

@Test
public void insert(){
  Department department=new Department();
  department.setName("測試名稱2");
  department.setRemark("測試備注");
  departmentMapper.insert(department);
}

 

2.jpg

運行報錯:

具體報錯信息:

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: Could not set property 'id' of 'class com.java1234.entity.Department' with value '1293142150845599745' Cause: java.lang.IllegalArgumentException: argument type mismatch

默認的id是 long類型 ,所以轉換報錯,這里的話 我們需要配置下主鍵策略;

 

@TableId注解方式配置主鍵策略

實體里注解配置:

@TableId(type = IdType.AUTO)

private Integer id; // 編號

 

這里的IdType枚舉,我們點進去看看:

package com.baomidou.mybatisplus.annotation;
 
import lombok.Getter;
 
/**
 * 生成ID類型枚舉類
 *
 * @author hubin
 * @since 2015-11-10
 */
@Getter
public enum IdType {
    /**
     * 數據庫ID自增
     */
    AUTO(0),
    /**
     * 該類型為未設置主鍵類型(注解里等於跟隨全局,全局里約等於 INPUT)
     */
    NONE(1),
    /**
     * 用戶輸入ID
     * <p>該類型可以通過自己注冊自動填充插件進行填充</p>
     */
    INPUT(2),
 
    /* 以下3種類型、只有當插入對象ID 為空,才自動填充。 */
    /**
     * 分配ID (主鍵類型為number或string),
     * 默認實現類 {@link com.baomidou.mybatisplus.core.incrementer.DefaultIdentifierGenerator}(雪花算法)
     *
     * @since 3.3.0
     */
    ASSIGN_ID(3),
    /**
     * 分配UUID (主鍵類型為 string)
     * 默認實現類 {@link com.baomidou.mybatisplus.core.incrementer.DefaultIdentifierGenerator}(UUID.replace("-",""))
     */
    ASSIGN_UUID(4),
    /**
     * @deprecated 3.3.0 please use {@link #ASSIGN_ID}
     */
    @Deprecated
    ID_WORKER(3),
    /**
     * @deprecated 3.3.0 please use {@link #ASSIGN_ID}
     */
    @Deprecated
    ID_WORKER_STR(3),
    /**
     * @deprecated 3.3.0 please use {@link #ASSIGN_UUID}
     */
    @Deprecated
    UUID(4);
 
    private final int key;
 
    IdType(int key) {
        this.key = key;
    }
}

 

 我們設置成AUTO也就是值是0 自增;

然后重啟執行測試方法,發現已經插入成功了;

這種方式對代碼是具有侵入性的;不建議使用;

 

全局配置主鍵策略

application.yml:

mybatis-plus:
  global-config:
    db-config:
      id-type: 0

 一次配置,到處有效;省心省力;以后就用這種啦;

 

實體與表名映射

@TableName("t_department")

實體Department默認找的表是department,

我們前面加了@TableName("t_department")來映射,比較麻煩;

我們可以通過全局來同意配置加前綴,通過table-prefix

mybatis-plus:
  global-config:
    db-config:
      id-type: 0
      table-prefix: t_

一次配置,到處有效;省心省力;以后就用這種啦;

 

insert方法返回值

insert返回的是操作的記錄條數,比如添加了一條數據,返回的就是1,刪除了5條數據返回的就是5,更新了0條數據,返回就是0

所以我們可以通過返回值判斷執行情況:

@Test
public void insert(){
  Department department=new Department();
  department.setName("測試名稱2");
  department.setRemark("測試備注");
  int affectRows=departmentMapper.insert(department);
  if(affectRows>0){
    System.out.println("插入成功");
  }else{
    System.out.println("插入失敗");
  }
}
 
執行下:
插入成功

 

獲取插入數據的主鍵id值

以前用Mybatis插入后獲取主鍵id比較麻煩,得額外配置;

mybatis-plus的話,實體id自動更新為主鍵值;

@Test

public void insert(){

  Department department=new Department();

  department.setName("測試名稱2");

  department.setRemark("測試備注");

  int affectRows=departmentMapper.insert(department);

  if(affectRows>0){

    System.out.println("插入成功");

  }else{

    System.out.println("插入失敗");

  }

  System.out.println("主鍵是:"+department.getId());

}

執行:

插入成功

主鍵是:9

 

完整視頻教程:B站鏈接 

 

------------------------------------------------------------------------------------------------------------------------------

作者: java1234_小鋒

出處:https://www.cnblogs.com/java688/p/13495266.html

版權:本站使用「CC BY 4.0」創作共享協議,轉載請在文章明顯位置注明作者及出處。

------------------------------------------------------------------------------------------------------------------------------


免責聲明!

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



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