mybatis 插入语句 返回自增长id方法

本文详细介绍了在使用MyBatis进行数据库操作时,如何正确地获取自增长字段的ID。通过对比错误与正确的XML配置,展示了如何利用keyProperty和useGeneratedKeys属性来实现这一目标,并解释了插入语句返回值的含义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景:目前有个插入语句需要获取插入记录的id  因为id是自增长的,所以要在插入后返回这个id

错误1:

mapper.xml:

<!-- 新增    返回自增长id-->
<insert id="save" parameterType="pd" resultType="int">
	insert into sys_push(
		username,title,content,publisher,pushtime	
	) values (
		#{username},#{title},#{content},#{publisher},#{pushtime}
	)
</insert>

我天真的以为  需要用resultType返回一个int类型的,结果项目启动直接报错了,因为insert方法根本就没有resultType! 哎 基础不扎实啊。。。

之后百度了下 哦 原来返回id是这么用的

正确: keyProperty="id" useGeneratedKeys="true"

<!-- 新增    返回自增长id-->
	<insert id="save" keyProperty="id" useGeneratedKeys="true" parameterType="pd">
		insert into sys_push(
			username,title,content,publisher,pushtime	
		) values (
			#{username},#{title},#{content},#{publisher},#{pushtime}
		)
	</insert>

重新启动后   调用查询语句发现:

int id = pushService.save(pd);

怎么id都是1。。。。

错误2:

又百度了一下,原来insert这个返回值返回的是插入成功的条数,不是id啊。。。哎 基础不扎实啊。。。

正确:

在查询后,要获取的id其实已经在传入对象的参数里了,用xx.getId()方法就可以直接获取到了。

int insertNum = pushService.save(pd);//插入的条数
Long id = (Long) pd.get("id");//获取id

我这里传入的是封装的pd对象,获取方法是get("id") 

如果是传入user类,获取方式是      Long id = user.getId();//该对象的自增ID

注意: 返回的id是long类型

over!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值