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操作。不知道哪位大牛能给小弟解惑。纠结了两天了。

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