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

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

  • 相关阅读:
    Cypress系列(89)- Cypress.log 命令详解
    Cypress系列(88)- Cypress.spec 命令详解
    Cypress系列(87)- Cypress.browser 命令详解
    Cypress系列(86)- Cypress.version 命令详解
    【原】elastalert 配置使用
    【原】kubeadm 安装高可用集群初始化文件模板
    PageRank 算法-Google 如何给网页排名
    K 均值算法-如何让数据自动分组
    KNN 算法-实战篇-如何识别手写数字
    KNN 算法-理论篇-如何给电影进行分类
  • 原文地址:https://www.cnblogs.com/java688/p/13495266.html
Copyright © 2011-2022 走看看