关于selectKey

今天在公司遇到这个问题,使用selectKey的insert语句返回值,搞了半天没整明白,还被老员工狠狠的鄙视了,必须记录一下。

@Insert("insert into table(a,b,c)values(#{a},#{b},#{c})")
@SelectKey(statement="SELECT max(id) from table",keyProperty="id",before=false,resultType=Long.class,statementType=StatementType.PREPARED)
public Long test(Abc abc);

mapper文件中这么写时,上层直接调用 Long result = test(abc);返回的结果是插入成功的条数。

而我们希望在插入时可以得到插入数据对应的id,上面的代码就起到了作用。当上面的代码执行时,会自动将插入时的id封装到传参时对应的对象的id中去。

即 resultid = abc.id,便可以拿到刚刚插入那条数据的id

猜你喜欢

转载自my.oschina.net/yuhangyes/blog/1810532