私はmybatisに初心者です。私は最後に挿入されたレコードのIDを取得しようとしています。私のデータベースは、MySQLで、私のマッパーXMLはmybatisに最後に挿入されたレコードのIDを取得します
<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>
私はここに書かれた文を考えている「idとLAST_INSERT_ID()はSELECT」最後に挿入されたレコードのIDを返す必要がありますが、私は、レコードを挿入した後、必ず1を取得しています。私は
int型のID = fileAttachmentMapper.insertSelective(fileAttachment)を使用しています私のDAOクラスで
マイmapper.javaクラス、私が持っている方法
int insertSelective(FileAttachment record);
。
新しいレコードが挿入されたとき、常にIdの値が1になります。私のIDフィールドは自動インクリメントされ、レコードは正しく挿入されます。
thats great jddsantaella ...このスレッドセーフなのですか? – user965884
私は知らないが、私はmyBatisを信頼しているので、私ははいと言うだろう。 – jddsantaella
良い..ありがとうJddsantaella – user965884