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 自增;

然后重启执行测试方法,发现已经插入成功了;

这种方式对代码是具有侵入性的;不建议使用;

全局配置主键策略

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

mybatis-plus视频教程

感谢各位兄弟姐妹关注,锋哥为了大伙能更深刻的掌握mybatis-plus的原理和应用,专门录制了一期视频教程。主要以IDEA开发工具,springboot主流框架,mysql数据库,来讲解mybatis-plus,希望小伙伴们快速的掌握。

纸上得来终觉浅,绝知此事要躬行。

需要多实战,多思考

B站视频教程在线地址:
https://www.bilibili.com/video/BV1KV411U7pH

关于锋哥

【作者】:锋哥 【微信号】:java9568 (加好友,请备注CSDN)
【公众号】:java1234。欢迎大家关注~
【作者简介】:江苏师范大学计算机系,Java资深老司机,先后国网电力,一线很多家小公司撸码过;目前老家南通开工作室创业,目前房子,车子,老婆,孩子都搞定;希望和各位读者成为朋友;一起探讨java技术和java创业;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值