java 使用oracel数据库在插入数据后返回主键
·
Mapper部分定义如下:
包含两个SQL操作:
1)insertRecord插入日志记录,使用SYS_GUID()生成主键ID,并记录code(截取前3位)、type和link_code字段;
2)updateByPrimaryKey根据主键更新日志状态和数据。
<!-- 日志记录 -->
<insert id="insertRecord" parameterType="java.util.Map">
<!-- keyProperty的值为数据库字段名称 -->
<selectkey keyProperty="id" resultType="java.lang.String" order="BEFORE">
SELECT SYS_GUID() AS id FROM dual
</selectkey>
INSERT INTO log_info
id,
code,
type,
link_code
VALUES
#{id,jdbcType=VARCHAR},
substr(#{code,jdbcType=VARCHAR},0,3),
#{type,jdbcType=VARCHAR},
#{linkCode,jdbcType=VARCHAR}
</insert>
<!-- 日志表根据主键更新 -->
<update id="updateByPrimaryKey" parameterType="java.util.Map">
update log_info
set
status = #{status,jdbcType=VARCHAR},
data = #{data,jdbcType=VARCHAR}
where
ID= #{id,jdbcType=VARCHAR}
</update>
service部分定义如下:
通过HashMap构建参数,调用insertRecord方法插入数据后,自动获取生成的主键ID。
// 定义map参数
Map<String, Object> map = new HashMap<>();
map.put("code", req.getcode());
map.put("linkCode", req.getLinkCode());
map.put("type", req.getType());
// 调用mapper部分 插表
mapper.insertRecord(reqMap);
// 尽管上方map没有定义该key值,数据插入成功后会自动存入map中
// 获取主键
String id = map.get("id");
Log.info("日志表记录成功, id: [{}]",map.get("id"));
更多推荐
所有评论(0)