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"));

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐