MyBatis返回插入的数据主键

在MyBatis开发过程中,我们经常需要解决一个问题:当插入一条数据的时候,我在接下来的操作中我需要知道刚刚插入的是哪条数据,这样我们需要获取插入数据的主键;如何在MyBatis中解决这个问题呢?


首先,我这里有两张表,其中计算层数表和计算参数表有这一对多的关系,层次编号在计算层数表中为主键在计算参数表中为主键,我现在做的操作是,先向计算层数表中插入一条记录:

	calLayer = new CalLayer();
	calLayer.setCalOrder(Integer.parseInt(str[3*i]));
	calLayer.setPrjid(1);
	int typeId = findTypeIdByName(typeName);
	calLayer.setCalTypeid(typeId);
	calLayerMapper.insert(calLayer);
其中CalLayer类为计算层数表所对应的实体类。

然后在紧接的操作中我需要向计算参数表中插入数据。并且需要保证这两次操作的层次编号保持相同。这时,我们需要对CalLayer类所对应的xxxMapper.xml文件进行修改:

将这里红色的部分去掉,红色部分作用是查询出对应的数据库中主键最大值。


然后在<insert>标签中加入 useGeneratedKeys="true" keyProperty="layerid"者两个属性即可。

<insert id="insert"  useGeneratedKeys="true" keyProperty="layerid" parameterType="cn.caculate.model.CalLayer" >
    insert into cal_layer (layerId, prjid, cal_order, 
      cal_typeid)
    values (#{layerid,jdbcType=INTEGER}, #{prjid,jdbcType=INTEGER}, #{calOrder,jdbcType=INTEGER}, 
      #{calTypeid,jdbcType=INTEGER})
  </insert>

现在,我们就可以像计算参数表进行添加数据了。

layerParms = new LayerParms();
layerParms.setLayerid(calLayer.getLayerid());
其中:calLayer即为上面创建的CalLayer对象。

calLayer.getLayerid()即获得上面插入语句calLayerMapper.insert(calLayer)数据的主键。

还有其他方法的伙伴们,欢迎共享。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值