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

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); }

運行報錯:
具體報錯信息:
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」創作共享協議,轉載請在文章明顯位置注明作者及出處。
------------------------------------------------------------------------------------------------------------------------------
