我是mybatis的新手。我正在尝试获取最后插入的记录的ID。我的数据库是mysql而我的映射器xml是
<insert id="insertSelective" parameterType="com.mycom.myproject.db.mybatis.model.FileAttachment" > <selectKey resultType="java.lang.Long" keyProperty="id" order="AFTER" > SELECT LAST_INSERT_ID() as id </selectKey> insert into fileAttachment <trim prefix="(" suffix=")" suffixOverrides="," > <if test="name != null" > name, </if> <if test="attachmentFileSize != null" > size, </if> </trim> <trim prefix="values (" suffix=")" suffixOverrides="," > <if test="name != null" > #{name,jdbcType=VARCHAR}, </if> <if test="attachmentFileSize != null" > #{attachmentFileSize,jdbcType=INTEGER}, </if> </trim> </insert>
我认为在这里写的语句“ SELECT LAST_INSERT_ID()as id”应该返回最后插入的记录的id,但是插入记录后我总是得到1。
我的mapper.java类有方法
int insertSelective(FileAttachment record);
在我的课堂上,我正在使用
int id = fileAttachmentMapper.insertSelective(fileAttachment);
插入新记录时,我的Id值始终为1。我的ID字段会自动增加,并且记录会正确插入。
id被注入到对象中:
int num_of_record_inserted = fileAttachmentMapper.insertSelective(fileAttachment); int id = fileAttachment.getId();
要做的selectKey是在要插入的对象中设置id,在这种情况下,fileAttachment在其属性中设置ID,并插入idAFTER记录。
selectKey
fileAttachment
id