IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Mybatis拿到插入后的主键值 -> 正文阅读

[大数据]Mybatis拿到插入后的主键值

public interface CuisineMapper {
    int insert(Cuisine record);
    int insertSelective(Cuisine record);
}

注意:返回的是操作的成功条数

<insert id="insertSelective" parameterType="com.freshidentification.backstage.pojo.Cuisine" useGeneratedKeys="true" keyProperty="id">
    insert into cuisine
    <trim prefix="(" suffix=")" suffixOverrides=",">
      <if test="id != null">
        id,
      </if>
      <if test="name != null">
        name,
      </if>
      <if test="introduction != null">
        introduction,
      </if>
      <if test="image != null">
        image,
      </if>
      <if test="viewedQuantity != null">
        viewed_quantity,
      </if>
      <if test="collectionQuantity != null">
        collection_quantity,
      </if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides=",">
      <if test="id != null">
        #{id,jdbcType=INTEGER},
      </if>
      <if test="name != null">
        #{name,jdbcType=VARCHAR},
      </if>
      <if test="introduction != null">
        #{introduction,jdbcType=VARCHAR},
      </if>
      <if test="image != null">
        #{image,jdbcType=VARCHAR},
      </if>
      <if test="viewedQuantity != null">
        #{viewedQuantity,jdbcType=INTEGER},
      </if>
      <if test="collectionQuantity != null">
        #{collectionQuantity,jdbcType=INTEGER},
      </if>
    </trim>
  </insert>

关键是加上useGeneratedKeys=“true” keyProperty=“id”

调用场景:

	Cuisine cuisine = new Cuisine();
    cuisine.setName(cuisineDTO.getName());
    cuisine.setImage(cuisineDTO.getImage());
    cuisine.setIntroduction(cuisineDTO.getIntroduction());
    int i2 = cuisineMapper.insertSelective(cuisine);
    if (i2 == 0) {
        return ResultVO.fail(PageCodeEnum.Deal_Fail,
                "更新菜谱表失败");
    }
    // 拿到自增主键
    int cuisineId = cuisine.getId();

之前错误地认为加上useGeneratedKeys="true" keyProperty="id"会改变insert方法的返回值,其实不然,返回值不会改变,改变的是会将主键传回到传入insert方法的实体中!

查了大量资料尝试无果,非常感谢该文章的启发:MyBatis insert返回主键不成功

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-03-15 22:37:17  更:2022-03-15 22:40:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 7:39:38-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码