私は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);
私が使用している私のdaoクラスで
int id = fileAttachmentMapper.insertSelective(fileAttachment);
新しいレコードが挿入されると、Id の値は常に 1 になります。私のIDフィールドは自動インクリメントされ、レコードは正しく挿入されています。