MyBatis如何使用selectKey返回主键的值

 更新时间:2022年01月23日 09:58:45   作者:pbyang5689  
这篇文章主要介绍了MyBatis如何使用selectKey返回主键的值,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

使用selectKey返回主键的值

使用<selectKey>标签来获取插入操作主键返回的值。

对于MySQL数据库

  <insert id="insert">
       insert into user(
       username, password, email, info, headImg, createTime)
       values(
       #{username}, #{password}, #{email},
       #{info}, #{headImg, jdbcType=BLOB},
       #{createTime, jdbcType=TIMESTAMP})
       <selectKey keyColumn="id" resultType="long" keyProperty="id" order="AFTER">
          SELECT LAST_INSERT_ID()
       </selectKey>     
   </insert>

通过selectkey返回insert或update后的值

实体类如下:

表结构如下:

其中varId为主键,但非自增

@selectKey使用

@selectKey

  • statement:指定查询的语句
  • keyProperty:指定结果对应的实体类的字段,如果是多个字段,采用逗号,分隔。如varId,varName,
  • keyColumn:指定stament语句返回的列明,与keyProperty对应,如果多个,采用逗号分隔。
  • resultType:返回值类型
  • before:ture,插入前执行,false插入后执行

插入时,如何查询当前最大id,并赋值给实体类,示例如下:

方案1

插入前,首先查询当前最大的id,并赋值给实体对象

如下:

方案2

插入时,获取当前最大值,插入

插入后,查询当前最大的id,并赋值给实体对象。

如下:

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 详解Springboot 注入装配到IOC容器方式

    详解Springboot 注入装配到IOC容器方式

    今天通过实例代码给大家介绍了Springboot 注入装配到IOC容器方式,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,感兴趣的朋友跟随小编一起看看吧
    2021-10-10
  • Spring Boot 2.X优雅的解决跨域问题

    Spring Boot 2.X优雅的解决跨域问题

    这篇文章主要给大家介绍了关于Spring Boot 2.X如何优雅的解决跨域问题的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Spring Boot 2.X具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-03-03
  • 23种设计模式(15)java解释器模式

    23种设计模式(15)java解释器模式

    这篇文章主要为大家详细介绍了23种设计模式之java解释器模式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • Java向Runnable线程传递参数方法实例解析

    Java向Runnable线程传递参数方法实例解析

    这篇文章主要介绍了Java向Runnable线程传递参数方法实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • IntellJ IDEA神器使用技巧(小结)

    IntellJ IDEA神器使用技巧(小结)

    这篇文章主要介绍了IntellJ IDEA神器使用技巧(小结),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-06-06
  • 利用IDEA工具修改Maven多模块项目标识包名全过程记录

    利用IDEA工具修改Maven多模块项目标识包名全过程记录

    当我们为甲方服务提供软件开发服务时,需要按照甲方的要求去修改软件的标识,对于Maven项目来说就对应着groupId,一般地写对方公司的域名,如com.example,接下来通过本文给大家分享IDEA修改Maven多模块项目标识包名,感兴趣的朋友一起看看吧
    2022-09-09
  • Java模拟并解决缓存穿透问题

    Java模拟并解决缓存穿透问题

    这篇文章主要介绍了Java模拟并解决缓存穿透问题,本文给大家介绍的非常详细,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2019-08-08
  • Mybatis实现动态排序方式

    Mybatis实现动态排序方式

    这篇文章主要介绍了Mybatis实现动态排序方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • java实现水波纹扩散效果

    java实现水波纹扩散效果

    这篇文章主要为大家详细介绍了java实现水波纹扩散效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-01-01
  • springboot启动时运行代码详解

    springboot启动时运行代码详解

    在本篇内容中我们给大家整理了关于在springboot启动时运行代码的详细图文步骤以及需要注意的地方讲解,有兴趣的朋友们学习下。
    2019-06-06

最新评论