首页 > 其他分享 >mybatis中如何获取自增主键

mybatis中如何获取自增主键

时间:2023-06-26 11:57:09浏览次数:27  
标签:keyProperty 自增 insert id 键值 mybatis 主键

方法1:在insert标签中使用userGeneratedKeys和keyProperty标签:

<insert id=”insertname” usegeneratedkeys=”true” keyproperty=”id”>
    insert into names (name) values (#{name})
</insert>

useGeneratedKeys = true 表示开启自动生成主键的功能,keyProperty = "id" 指定了要将自动生成的主键值赋给 id 属性。插入操作完成后,通过访问 id 属性即可获取到自动生成的主键值。

方法2:使用select标签和keyProperty

数据库主键包括自增和非自增,有时候新增一条数据不仅仅知道成功就行了,后边的逻辑可能还需要这个新增的主键,这时候再查询数据库就有点耗时耗力,我们可以采用selectKey来帮助我们获取新增的主键

<insert id="insert" parameterType="com.example.wjtweb.pojo.Goods">
    <selectKey keyProperty="id" order="AFTER" resultType="Integer">
        SELECT LAST_INSERT_ID()
    </selectKey>
    INSERT INTO Goods (MID,GNAME,PRICE,AMOUNT,imageName)
    VALUES (#{mid},#{gname},#{price},#{amount},#{imageName});
</insert>

selectKey 元素包裹在了插入语句,并使用 keyProperty="id" 指定了要将自动生成的主键值赋给 id 属性。resultType="java.lang.Long" 指定了返回值的类型。通过执行 SELECT LAST_INSERT_ID() 语句来获取自动生成的主键值。order="AFTER" 表示 SELECT LASTINSERT ID() 在insert执行之后执行.

标签:keyProperty,自增,insert,id,键值,mybatis,主键
From: https://www.cnblogs.com/yliunyue/p/17505248.html

相关文章

  • MyBatis 缓存
     MyBatis一级缓存1一级缓存原理在一次SqlSession中(数据库会话),程序执行多次查询,且查询条件完全相同,多次查询之间程序没有其他增删改操作,则第二次及后面的查询可以从缓存中获取数据,避免走数据库。 每个SqlSession中持有了Executor,每个Executor中有一个LocalCache。当用......
  • mybatis-执行器
    MyBatis中的Executor接口有三个实现类:SimpleExecutor:SimpleExecutor是最简单的Executor实现。它每次执行SQL语句时都会创建一个新的Statement对象。这种实现方式的缺点是效率较低,因为每次执行SQL语句都需要创建一个新的Statement对象。ReuseExecutor:ReuseExec......
  • Could not resolve type alias 'com.github.mybatis.helper.page.PageSqlInterceptor'
    报错信息 Couldnotresolvetypealias'com.github.mybatis.helper.page.PageSqlInterceptor'.Cause:java.lang.ClassNotFoundException:Cannotfindclass:com.github.mybatis.helper.page.PageSqlInterceptor 原因报错的位置是 mybatis-config.xml 文件中......
  • Mybatis Plus逆向工程
    MybatisPlus逆向工程连接mysql数据库选中对应的数据库表,生成逆向工程......
  • 面试官:MySQL 自增主键一定是连续的吗?大部分人都会答错!
    测试环境:MySQL版本:8.0数据库表:T(主键id,唯一索引c,普通字段d)如果你的业务设计依赖于自增主键的连续性,这个设计假设自增主键是连续的。但实际上,这样的假设是错的,因为自增主键不能保证连续递增。推荐一个开源免费的SpringBoot实战项目:https://github.com/javastacks/sprin......
  • day112 - mybatis的查询与特殊sql语句
    mybatis查询与特殊语句查询普通语句/***根据id查询用户信息*@paramid*@return*/UsergetUserById(@Param("id")Integerid);​<!--UsergetUserById(@Param("id")Integerid);--><selectid="getUserById"resultType="com.......
  • 分页插件【MybatisPlus】
    //mybatisplus分页插件@BeanpublicMybatisPlusInterceptormybatisPlusInterceptor(){//1创建MybatisPlusInterceptor拦截器对象MybatisPlusInterceptormpInterceptor=newMybatisPlusInterceptor();//2添加分页拦截器......
  • 适合新手的12个Mybatis-Plus常用注解
    mybatis-plus简介MyBatis-Plus(简称MP)是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生。愿景是成为MyBatis最好的搭档!官方地址:https://baomidou.com/文档发布地址:https://baomidou.com/pages/24112f常用注解(12个)1、@MapperScan......
  • postgreSQL数据库 id自增
    感谢!!!原文:https://blog.csdn.net/weixin_43453621/article/details/1258907742.链接上postgreSQL数据库3.新建表4.增加序列6.添加ID自增长nextval('swp_id'::regclass)或者nextval('swp_id')前者是完整语句后者是简写系统会自动添::regclass,都一样的7.保存最后......
  • postgresql 导入数据库表并重设自增属性的操作
    postgresql使用navicat软件导出数据库表,在导入会数据库的操作。postgresql的自增字段是通过序列sequence来实现的。1、先删除导出的数据库表中的自增属性2、导入数据库表之后,需要创建序列。注:一般序列名称由数据表名+主键字段+seq组成(通常情况下主键字段即为自增字段),如下......