mybatis insert主键问题(xml映射配置六)

回填pojo属性 <- 数据库自动生成主键

useGeneratedKeys=“true” keyProperty=“id”

	<insert id="insertPerson" parameterType="priv.dengjl.ns.bean.Person"
		useGeneratedKeys="true" keyProperty="id">
		INSERT INTO PERSON(DISPLAY, NAME,
		PHONE, ADDRESS, BIRTHDATE, REMARK)
		VALUES(#{display}, #{name},
		#{phone}, #{address}, #{birthdate},
		#{remark})
	</insert>
	

插入数据库

			mapper.insertPerson(person);
			logger.debug("插入主键为:{}", person.getId());

自定义主键

selectKey 元素描述如下:

<selectKey
  keyProperty="id"
  resultType="int"
  order="BEFORE"
  statementType="PREPARED">
selectKey Attributes

字段描述

属性描述
keyPropertyselectKey 语句结果应该被设置的目标属性。如果希望得到多个生成的列,也可以是逗号分隔的属性名称列表。
keyColumn匹配属性的返回结果集中的列名称。如果希望得到多个生成的列,也可以是逗号分隔的属性名称列表。
resultType结果的类型。MyBatis 通常可以推算出来,但是为了更加确定写上也不会有什么问题。MyBatis 允许任何简单类型用作主键的类型,包括字符串。如果希望作用于多个生成的列,则可以使用一个包含期望属性的 Object 或一个 Map。
order这可以被设置为 BEFORE 或 AFTER。如果设置为 BEFORE,那么它会首先选择主键,设置 keyProperty 然后执行插入语句。如果设置为 AFTER,那么先执行插入语句,然后是 selectKey 元素 - 这和像 Oracle 的数据库相似,在插入语句内部可能有嵌入索引调用。
statementType与前面相同,MyBatis 支持 STATEMENT,PREPARED 和 CALLABLE 语句的映射类型,分别代表 PreparedStatement 和 CallableStatement 类型。

例子

	<insert id="insertPerson2" parameterType="priv.dengjl.ns.bean.Person">
		<selectKey keyProperty="id" resultType="int" order="BEFORE">
			select max(id) + 2 from person
		</selectKey>

		INSERT INTO PERSON(ID, DISPLAY, NAME,
		PHONE, ADDRESS, BIRTHDATE, REMARK)
		VALUES(#{id}, #{display}, #{name},
		#{phone}, #{address}, #{birthdate},
		#{remark})
	</insert>

插入数据库

			mapper.insertPerson2(person);
			logger.debug("插入主键为:{}", person.getId());
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值