今天写项目时,前端要求往数据库插入一条数据后,返回刚刚自增的id。
网上查了很多资料,发现都是以下的方法:
<insert id="createTest" parameterType="Test" useGeneratedKeys="true" keyProperty="id">
INSERT INTO
auto_test(name,remark,create_time,status,companyId)
VALUES(#{name},#{remark},#{create_time},#{status},#{companyId})
</insert>
但是接收到的都是1,这里1的意思不是返回的id,而是成功操作的数据条数。
后来经过同事的指点,才发现这个mybatis是有一个内存机制的。具体的原因我也不清楚,代码奉上:
class Student{
private int id;
...
}
在service中
class StudentService{
public int addStudent(Student stu){
studntDao.insert(stu);
int id=stu.getId(); //这样就可以得到自增的id了
}
}
mapper的话还是一样的。