Mybatis的標籤插入過程中的主鍵問題與些疑問。

在使用Mybatis過程中,

假設我有一張數據庫(MySQL)表,表名爲COMMAND,內有字段ID(主鍵)、NAME、DESCRIPTION。

衆所周知,若數據庫表結構的主鍵設置爲自動增長類型的話,那麼在xml文件中用<insert>標籤時,

代碼如下:

<insert id="insertNewCommand" parameterType="beans.Command" useGeneratedKeys="true">
  	<selectKey keyProperty="id" resultType="java.lang.Integer" order="AFTER" >
		SELECT LAST_INSERT_ID() as id
	</selectKey>
  	insert into COMMAND(NAME,DESCRIPTION) values(#{name,jdbcType=VARCHAR},#{description,jdbcType=VARCHAR})	
</insert>

那麼問題來了,若我這時候還有另一張表,表名爲COMMAND_CONTENT,內有字段ID(主鍵,自動增長)、CONTENT、COMMAND_ID。其中字段COMMAND_ID設置外鍵關聯

COMMAND表的主鍵。


我從前臺獲得數據name、description和content,也就是說,COMMAND表的主鍵ID未知,COMMAND_CONTENT表的主鍵ID和COMMAND_ID都未知。當我執行插入語句時,將

name和description可以存進COMMAND表中,此時會自動賦值COMMAND表的ID,但是對於conten要存進COMMAND_CONTENT中,需要有COMMAND_ID,這時候就感覺無解

了,然而,此時我發現了sqlSession.insert("Command.insertNewCommand",command)有int類型的關於獲得的主鍵的返回值,但是現實總是差強人意,無論我執行多少次,這

個int類型的返回值都是1。無法獲得主鍵,也就無法將content插入COMMAND_CONTENT表中,於是在執行完插入COMMAND表的炒作後,我用name又進行了一次select操作,

通過name查出對應的ID,再將該ID值賦值給COMMAND_ID,再進行插入COMMAND_CONTENT操作。不知道哪位大牛能給小弟解惑。糾結了兩天了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章