返回顶部
首页 > 资讯 > 后端开发 > Python >mybatis的selectKey作用详解
  • 511
分享到

mybatis的selectKey作用详解

2024-04-02 19:04:59 511人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

目录mybatis的selecTKEy作用mybatis selectKey 失效问题踩坑mybatis的selectKey作用 当我们使用id自增操作Mybatis时,需要返回最新

mybatis的selectKey作用

当我们使用id自增操作Mybatis时,需要返回最新插入的id的话,可以进行如下操作:

<selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="id">
SELECT LAST_INSERT_ID() AS ID 
</selectKey> 

在insert中添加即可:

<insert id="insert" parameterType="com.pinyouGou.pojo.TbGoods" >
    <selectKey resultType="java.lang.Long" order="AFTER" keyProperty="id">
      SELECT LAST_INSERT_ID() AS id
    </selectKey>
    insert into tb_goods (id, seller_id, goods_name,
      default_item_id, audit_status, is_marketable, 
      brand_id, caption, category1_id, 
      category2_id, category3_id, small_pic, 
      price, type_template_id, is_enable_spec, 
      is_delete)
    values (#{id,jdbcType=BIGINT}, #{sellerId,jdbcType=VARCHAR}, #{goodsName,jdbcType=VARCHAR}, 
      #{defaultItemId,jdbcType=BIGINT}, #{auditStatus,jdbcType=VARCHAR}, #{isMarketable,jdbcType=VARCHAR}, 
      #{brandId,jdbcType=BIGINT}, #{caption,jdbcType=VARCHAR}, #{category1Id,jdbcType=BIGINT}, 
      #{category2Id,jdbcType=BIGINT}, #{category3Id,jdbcType=BIGINT}, #{smallPic,jdbcType=VARCHAR}, 
      #{price,jdbcType=DECIMAL}, #{typeTemplateId,jdbcType=BIGINT}, #{isEnableSpec,jdbcType=VARCHAR}, 
      #{isDelete,jdbcType=VARCHAR})
  </insert>

然后操作int newId = goodsMapper.insert(goods.getGoods()); 就能拿到最新加入的ID信息了 

mybatis selectKey 失效问题踩坑

  • selectKey 会将 SELECT LAST_INSERT_ID()的结果放入到传入的实体类的主键里面,
  • keyProperty对应的实体类中的主键的属性名,这里是 实体类中的id,因为它跟数据库的主键对应order
  • AFTER 表示 SELECT LAST_INSERT_ID() 在insert执行之后执行,多用与自增主键,
  • BEFORE 表示 SELECTLAST_INSERT_ID() 在insert执行之前执行,这样的话就拿不到主键了,这种适合那种主键不是自增的类型

resultType 主键类型

<insert id="insertCheckGroup"  parameterType="com.zyl.pojo.CheckGroup">
        <selectKey resultType="int" keyProperty="id" order="AFTER">
            SELECT LAST_INSERT_ID()
        </selectKey>
        insert into check_group (name) value (#{name});
</insert>

当使用了selectkey时 Dao接口请勿使用@Param 映射注解,会导致selectKey标签失效

int insertCheckGroup(CheckGroup checkGroup);

如果传多个参数需使用@Param时

int insertCheckGroup(@Param("test") CheckGroup checkGroup);

xml标签keyProperty对应主键名称时应加上test.

<insert id="insertCheckGroup"  parameterType="com.zyl.pojo.CheckGroup">
        <selectKey resultType="int" keyProperty="test.id" order="AFTER">
            SELECT LAST_INSERT_ID()
        </selectKey>
        insert into check_group (name) value (#{name});
</insert>

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: mybatis的selectKey作用详解

本文链接: https://lsjlt.com/news/163639.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • mybatis的selectKey作用详解
    目录mybatis的selectKey作用mybatis selectKey 失效问题踩坑mybatis的selectKey作用 当我们使用id自增操作Mybatis时,需要返回最新...
    99+
    2024-04-02
  • Mybatis @SelectKey用法解读
    目录Mybatis @SelectKey用法用处用法属性注意Mybatis selectKey 采坑笔记1.现象描述2.问题排查3. selectKey 用法再认识4.selectK...
    99+
    2024-04-02
  • mybatis selectkey的用法是什么
    在MyBatis中,`selectKey`是一种用于在插入数据时获取自动生成的主键值的特殊语句。它可以用于动态生成主键并将其赋值给对...
    99+
    2023-09-29
    mybatis
  • mybatis中selectKey有什么用
    这篇文章给大家分享的是有关mybatis中selectKey有什么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。mybatis的selectKey作用当我们使用id自增操作Mybatis时,需要返回最新插入的i...
    99+
    2023-06-29
  • MyBatis如何使用selectKey返回主键的值
    目录使用selectKey返回主键的值对于MySQL数据库通过selectkey返回insert或update后的值@selectKey使用方案1方案2使用selectKey返回主键...
    99+
    2024-04-02
  • Mybatis selectKey如何返回新增用户的id值
    目录Mybatis selectKey返回新增用户的id值一、需求:新增用户后,同时还要返回当前新增用户的id值二、为什么要使用selectKey?三、属性解析Mybatis sel...
    99+
    2024-04-02
  • Mybatis中@Param的用法和作用详解
    用注解来简化xml配置的时候,@Param注解的作用是给参数命名,参数命名后就能根据名字得到参数值,正确的将参数传入sql语句中我们先来看Mapper接口中的@Select方法package Mapper; public inte...
    99+
    2023-05-31
    mybatis param
  • 详解MyBatis工作原理
    目录一、Mybatis工作原理二、Mybatis运行原理总结一、Mybatis工作原理 Mybatis分层框架图 Mybatis工作原理图 源码分析:一般都是从helloworl...
    99+
    2024-04-02
  • mybatis 获取更新(update)记录的id之<selectKey>用法说明
    目录获取更新(update)记录的id之<selectKey>问题简介解决 获取update 纪录的id详解<selectKey>标签的含义获取更新...
    99+
    2024-04-02
  • Mybatis-Plus 通用CRUD的详细操作
    目录1、插入操作 1.1 方法定义1.2 测试用例1.3 测试1.4 @TableField2、更新操作2.1 根据id更新2.2 根据条件更新3、删除操作3.1 dele...
    99+
    2024-04-02
  • Mybatis中@Param注解的用法详解
    目录1、概述2、实例:实例一:@Param注解基本类型的参数实例二:@Param注解JavaBean对象3、注意点附:为什么要用@param总结1、概述 首先明确这个注解是为SQL语...
    99+
    2024-04-02
  • MyBatis-PlusQueryWrapper及LambdaQueryWrapper的使用详解
    目录QueryWrapperLambdaQueryWrapper链式查询假如我们有一张banner_item表,现需要通过banner_id查出所有数据(查询List) @Data...
    99+
    2024-04-02
  • tk-mybatis的使用方法详解
    tkmybatis是在mybatis框架的基础上提供了很多工具,让开发更加高效,下面来看看这个框架的基本使用,后面会对相关源码进行分析,感兴趣的同学可以看一下,挺不错的一个工具 实现...
    99+
    2024-04-02
  • Mybatis Example的高级用法详解
    目录Mybatis Example的高级用法一. mapper接口中的函数及方法二. example实例方法三. 使用案例说说Mybatis Example常见用法一. 说明二. 排...
    99+
    2024-04-02
  • 详解Mybatis中的PooledDataSource
    目录前言PooledConnectionPooledDataSource的pushConnection()方法总结前言 上篇Java Mybatis数据源之工厂模式文章中我...
    99+
    2024-04-02
  • MyBatis——MappedStatement详解
    MyBatis通过MappedStatement描述或者@Select、@Update等注解配置的SQL信息。在介绍MappedStatement组件之前,我们先来了解一下MyBatis中SQL Mapper的配置。不同类型的SQL语句需要...
    99+
    2022-03-20
    MyBatis——MappedStatement详解
  • Mybatis-Plus详解
    目录 1. Mybatis-Plus概念 1.1 Mybatis-Plus介绍 1.2 特性 1.3 架构 2. Mybatis-Plus快速⼊⻔ 2.1 安装 2.2 创建数据库以及表 2.3 创建⼯程 2.4 Mybatis + MP ...
    99+
    2023-09-01
    mybatis java mysql
  • Mybatis中@Param注解的作用说明
    目录@Param注解的作用说明1.关于@Param2.原始的方法3.使用@Param@Param注解和参数使用1.使用@Param注解2.不使用@Param注解@Param注解的作用...
    99+
    2024-04-02
  • MyBatis中OGNL的使用教程详解
    前言本文主要给大家讲如何在MyBatis中使用OGNL的相关内容,分享出来供大家参考学习,感兴趣的朋友们下面来一起看看详细的介绍:如果我们搜索OGNL相关的内容,通常的结果都是和Struts有关的,你肯定搜不到和MyBatis有关的,虽然和...
    99+
    2023-05-31
    mybatis 使用 ognl
  • MyBatis-Plus详解(环境搭建、关联操作)
    目录MyBatis-PlusMybatis --- 环境搭建1、导入相关依赖2、创建实体类3、在 resources 目录下,创建 application.yml 配置文件4、创建业...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作