mybatis 在insert的同时取得主键的值

业务上需要在插入数据的同时获取到自增主键的值,然后返回给前台。

因为用的是Mysql 所以先从Mysql所支持的SQL入手,在网上找了半天没发现合适的解决办法。

无意中发现一篇文章说的是通过对mybatis的XML中insert的配置的调整就可以轻松获取自增主键的值。

帮了大忙了。具体请看下面代码。

1.插入自增主键数据,返回主键

<insert id="insertXXX"  parameterType="xxx.Shop"  useGeneratedKeys="true" keyProperty="shopId" >
       insert into tbl_xxxx  (.......)  values (.....);
</insert>

Shop shop = new Shop();
insertXXX(shop);//这里的shop即是入参又是出参
shop.getShopId();//直接通过get方法就能取出自增主键的值

下面是从书本上摘过来的,仅供参考。


2.插入非自增主键数据返回主键

非自增主键就不能用useGeneratedKeys了,

这里要用到selectKey,先获取到主键,将主键设置到参数类里,然后在insert的时候再取出来用。


	  <insert id="insertTest" parameterType="......TestInfo" >
	    <selectKey keyProperty="testsId" resultType="String" order="BEFORE" >
	        SELECT LPAD(IFNULL(max(A.testId), 0) + 1, 5, '0') AS testId FROM tbl_testInfo A WHERE A.shopId = #{shopId}
	    </selectKey>
	    INSERT INTO tbl_testInfo (
	        testId,testValue....) VALUES(#{testId},#{testVaule})









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值