MyBatis新增数据后获取新增的主键

本文介绍在MyBatis中使用selectKey标签实现主键自增的方法,通过在insert语句前添加selectKey标签,并设置keyProperty和order属性,可以实现在插入数据后获取自动生成的主键ID。
摘要由CSDN通过智能技术生成

新增SQL

selectKey标签中加keyProperty="id" order="AFTER"

<insert id="insert" parameterType="cn.crm.domain.TMeal">
  <selectKey resultType="java.lang.Long" keyProperty="id"  order="AFTER" >
    SELECT LAST_INSERT_ID()
  </selectKey>
  insert into t_meal (name, price,
    exprie_date, status)
  values (#{name,jdbcType=VARCHAR}, #{price,jdbcType=DECIMAL},
    #{exprieDate,jdbcType=TIMESTAMP}, #{status,jdbcType=BIT})
</insert>

使用

调用新增方法后即可获取主键

tmealService.save(tMeal);
System.out.println(tMeal.getId() + "------");

转载于:https://my.oschina.net/u/4107179/blog/3039078

MyBatis中,批量插入通常是通过`insertList()`或`batchInsert()`方法来执行,这两个方法都是将一系列的数据一次性提交到数据库,而不是一条一条地插入。完成批量插入后,MyBatis并不会直接返回你插入数据的具体ID列表。 如果你想在插入后立即获取新生成的主键列表,你需要自定义一个结果映射器(ResultMapping)。首先,在Mapper XML文件中定义一个结果映射,比如使用`<association>`标签来关联一个包含主键的实体对象。然后在对应的Mapper接口中,可以创建一个动态SQL查询,这个查询会在插入完成后返回所有刚插入的对象集合。 例如: ```xml <mapper namespace="com.example.YourMapper"> <resultMap id="yourResultMap" type="YourEntity"> <id column="id" property="id"/> <!-- 其他属性映射 --> </resultMap> <insert id="batchInsertAndGetIds" parameterType="java.util.List"> INSERT INTO your_table (column1, column2) VALUES <foreach item="item" index="index" collection="list" open="(" separator="), (" close=")"> #{item.column1}, #{item.column2} </foreach> SELECT * FROM your_table WHERE id IN ( <foreach item="item" index="index" collection="list" open="(" separator="), (" close=")"> #{item.id} </foreach> ) </insert> </mapper> ``` 然后在服务层,你可以像这样调用: ```java List<YourEntity> entities = new ArrayList<>(); // 遍历并填充entities List List<YourEntity> idsAndEntities = yourMapper.batchInsertAndGetIds(entities); ``` 在这里,`idsAndEntities` 就是一个包含了刚刚插入的实体以及它们的主键的新列表。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值