【查漏补缺】mybatis自增返回主键的两种方式——selectKey、useGeneratedKeys

1、useGeneratedKeys+keyProperty实现主键自增

这种方式是我们经常用到的方式,如果你的数据库支持自动生成主键的字段(比如 MySQL 和 SQL Server),那么你可以设置 useGeneratedKeys=”true”,然后再把 keyProperty 设置为目标属性就 OK 了。
eg:

	<insert id="insert" parameterType="im.ziwo.audit.baseservice.model.Attachment"  useGeneratedKeys="true" keyProperty="id">
		insert into attachment( <include refid="table_columns" /> )
		values ( <include refid="entity_properties" /> )
	</insert>

2、selectkey 方式主键自增

对于不支持自动生成主键列的数据库和可能不支持自动生成主键的 JDBC 驱动,比如oracle数据库,MyBatis 有另外一种方法来生成主键。

    <insert id="insertSelective" parameterType="com.lepu.business.coupon.module.templet.entity.CouponTemplet">
        <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Long">
            SELECT LAST_INSERT_ID()
        </selectKey>
        insert into coupon_templet......

属性解释:
resultType:结果的类型。通常 MyBatis 可以推断出来,但是为了更加准确,写上也不会有什么问题。
order:可以设置为 BEFORE 或 AFTER。如果设置为 BEFORE,那么它首先会生成主键,设置 keyProperty 再执行插入语句。如果设置为 AFTER,那么先执行插入语句,然后是 selectKey 中的语句 - 这和 Oracle 数据库的行为相似,在插入语句内部可能有嵌入索引调用。
SELECT LAST_INSERT_ID(),主键ID

3、参考

官网:https://mybatis.org/mybatis-3/zh/sqlmap-xml.html
博客:https://blog.youkuaiyun.com/czd3355/article/details/71302441

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值