首页 > 其他分享 >mybatis插入数据返回自增主键

mybatis插入数据返回自增主键

时间:2023-05-25 11:32:24浏览次数:39  
标签:insert 自增 useGeneratedKeys into id user mybatis 主键

在xml中 insert 标签中定义

useGeneratedKeys为true,使用自增id,用来设置返回主键id的值 keyProperty 代表实体类映射字段段 keyColumn 代表数据库字段 useGeneratedKeys="true" keyProperty="id" 两个属性配合使用,支持单条或批量插入返回主键信息。

<insert id="insertTSupply" parameterType="TSupply" useGeneratedKeys="true" keyProperty="id">
        insert into t_supply
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="title != null">title,</if>
            <if test="details != null">details,</if>

注意事项:使用useGeneratedKeys生成主键时,不能在DAO层使用@Param注解传递参数,否则无法获取主键。

//Dao层对应的代码  不能使用 @Param注解传递参数
//Long savNewUser(@Param("user") User user);
 Long savNewUser( User user);

在xml里使用selectKey

<!--添加订单到order-->
    <insert id="insert" parameterType="com.hxj.pojo.Orderx">
        <selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="id">
            select LAST_INSERT_ID()
        </selectKey>
        insert into orderx(userid,allprice,ordertime,address)
        values(#{userid},#{allprice},#{ordertime},#{address})
    </insert>

注解方式

// 返回主键字段id值
@Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id")
@Insert("insert  into t_user (name,age) values (#{name},#{age})")
void insert(Student stu);

mybatisPlus

调用 BaseMapper 的 insert方法后 ,默认将自增主键封装在插入对象中

标签:insert,自增,useGeneratedKeys,into,id,user,mybatis,主键
From: https://blog.51cto.com/u_16129094/6346247

相关文章

  • MYBATIS中>=和<=的实现方式
    原因mybatis使用的是xml格式的文件。使用>和<号的时候,会存在与xml的标签的规范冲突。解决方案>=使用<![CDATA[>=]]>><=使用<![CDATA[<=]]>......
  • MyBatis体系笔记(未完结)
    MyBatis什么是MyBatisMyBatis是优秀的持久层框架MyBatis使用XML将SQL与程序解耦,便于维护MyBatis学习简单,执行高效,是JDBC的延伸1.MyBatis开发流程引入MyBatis依赖创建核心配置文件创建实体(Entity)类创建Mapper映射文件初始化SessionFactory......
  • 【转载】Mybatis Plus QueryWrapper结合lambda表达式使用distinct的方法
    MybatisPlusQueryWrapper的lambda用起来感觉挺爽的,有点JPA的感觉,也不需要拼很多字符串,可以利用IDE的代码检查功能,总之好处多多,停不下来。最近遇到一个问题,需要对SQL查询的结果做去重处理,自然想到了使用distinct。对于复杂的SQL语句,一般使用自定义XML的方式,但是这么个小问题,XML......
  • Mybatis中,SpringMVC中,SpringBoot项目中,出现There is no getter for property named 'x
    现象:Thereisnogetterforpropertynamed'xxxxxx'报错原因:其实说起原因有很多种,百度上都有很详细的说明,其中最重要也是经常发生的就是mapper.xml与是对应的实体类匹配不上导致错误发生,而我报错的原因是从mapper接口中向xml传入参数的时候,传入的是实体类对象,只有这一个参数,而在......
  • mybatis关于自定义映射的使用方法
    在MyBatis中,可以通过SQL映射文件来自定义映射,即将一个查询结果映射成一个Java对象。在映射中,我们可以控制如何从查询结果中提取数据,并将其映射到Java对象的属性中。以下是一些常用的自定义映射方式:resultMap:使用resultMap元素来定义映射规则,可以精确地将查询结果映......
  • 【SQL用法】Mybatis框架中的xml文件中经常使用的sql语句
    本文目录一、insert语句二、select查询语句三、批量添加四、与时间比较相关的项目中经常会用到的sql语句有:一、insert语句<!--保存用户信息--><insertid="save">insertintomainsite_product_message<trimprefix="("suffix=")"suffixOverrides=","......
  • 【IntelliJ IDEA】idea中的插件之一:Free Mybatis plugin跳转插件的使用(方便在Dao接口
    本文目录一、安装二、使用最近在使用一个非常好用的跳转插件,用着很顺手,效率比之前提高了很多。之前使用MyBatis框架或者是在IDEA中,发现Mapper接口和XML文件之间跳转十分的麻烦,我之前经常的操作是在Mapper接口中将接口名称复制一下,然后去查找对应的XML文件,打开后CRTL+F查找对应的xml......
  • mybatis错误
    问题1:在mybatis-config.xml中使用了正确的资源路径,但是仍然报notfind的错误!!!<mappers><mapperresource="com/louis/dao/UserMapper.xml"/></mappers>解决方法:①可以将资源放置在resource文件夹下②在pom.xml中添加如下代码......
  • Mybatis多表查询(一对多)
    1、两个实体类(部门表、员工表)一个部门包含许多员工(一对多关系),将员工表信息写到部门实体类中点击查看代码packagecom.bh.po;importjava.util.Set;publicclassDept{privateintdeptno;privateStringdname;privateStringloc;//因为一个部门有很多......
  • 一文全了解Mybatis
    初步了解总体架构设计Mybatis整体框架如下:接口层MyBatis和数据库的交互有两种方式:使用传统的MyBatis提供的API;使用Mapper接口;使用传统的MyBatis提供的API这是传统的传递StatementId和查询参数给SqlSession对象,使用SqlSession对象完成和数据库的交互;My......