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」创作共享协议,转载请在文章明显位置注明作者及出处。

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

posted @ 2020-08-13 11:37  java锋哥  阅读(5775)  评论(0编辑  收藏  举报