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