在mapper.xml对应的方法中使用selectKey 标签把生成的序列保存到参数某个字段:
<insert id="add" parameterType="com.mlsama.admin.entities.request.AddResourceReq">
<selectKey keyProperty="id" order="BEFORE" resultType="long">
select SEQ_DAP_RESOURCE.nextval from dual
</selectKey>
INSERT INTO T_DAP_RESOURCE VALUES (
#{id},
#{name},
#{url},
#{type},
#{icon},
#{pid}
)
</insert>
说明:
1. keyProperty: 把生成的序列保存到参数对象的哪个字段中.这里是AddResourceReq对象的id
2. order: 保存时机.
BEFORE: 在insert语句执行前
AFTER: 在insert语句执行后
oracle需要设置成BEFORE,MySQL的id一般是自增,要设置为AFTER
3. resultType: 返回类型
当执行完add方法后,序列就保存到了AddResourceReq对象的id
@Override
public Long add(AddResourceReq req) {
resourceMapper.add(req);
return req.getId();
}