【发布时间】:2012-06-28 20:51:55
【问题描述】:
我是 Mybatis 新手,正在尝试用 Spring 支持实现 Mybatis。
我必须在表中插入一条记录,但 Ibatis 是否有像 hibernate 那样的序列生成器?
如果不必手动执行,例如 sequence.nextVal?我不喜欢。
如有任何建议,我们将不胜感激。
谢谢
【问题讨论】:
-
通过使用 PK 的自动增量解决了它。
我是 Mybatis 新手,正在尝试用 Spring 支持实现 Mybatis。
我必须在表中插入一条记录,但 Ibatis 是否有像 hibernate 那样的序列生成器?
如果不必手动执行,例如 sequence.nextVal?我不喜欢。
如有任何建议,我们将不胜感激。
谢谢
【问题讨论】:
如果你自己声明了映射器,你必须这样做:
<insert id="insert" parameterType="com.your.app.Product">
<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
SELECT LAST_INSERT_ID()
</selectKey>
INSERT INTO product (name, value)
VALUES (#{name,jdbcType=VARCHAR}, #{value,jdbcType=DOUBLE})
</insert>
但是,如果您使用的是 MyBatis 生成器,您可以通过在 table 标记中使用 generatedKey 标记来做到这一点,它会生成您需要的映射器。
例子:
<table tableName="product" alias="product">
<generatedKey column="id" sqlStatement="MySql" identity="true" />
</table>
【讨论】: