mybatis 插入語句 返回自增長id方法


背景:目前有個插入語句需要獲取插入記錄的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!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM