mybatis+mysql返回以map形式插入的实体主键

1.场景还原

     很多情况下,在一个实现类中会调用连环接口,那么在执行上个接口后,我们需要传入上个接口执行完成后返回的参数才能继续执行下个接口;今天就上个接口执行插入操作,然后得到上个接口的主键的需求剖析一下,另外主键以UUID随机生成的,不是自增的

2.实现方案

①直接贴代码


id="addNotification" parameterType="java.util.Map">
   keyProperty="id" resultType="String" order="BEFORE">
      SELECT UUID();
   
   insert into yivi_sys_notification(
   notification_id,user_id,notification_kind,
   notification_code,notification_message)
   values(#{id},#{userId},#{notificationKind},
   #{notificationCode},#{notificationMessage}
   )

注意:order必须是BEFORE,否则会报错;BEFORE表示先选择UUID,然后再执行插入操作,符合需求;AFTER表示再执行插入操作,再选择UUID,显然是不对的,这种情况符合实体主键自增;

②测试验证

@Test
public void test() {
    Map map = new HashMap();
    map.put("userId","079ec894-9132-11e7-8422-00163e0a3457");
    map.put("notificationKind","订单异常");
    map.put("notificationCode","20000");
    map.put("notificationMessage","请您及时跟公司客服联系!");
    Integer isInsert = notificationMapper.addNotification(map);
    logger.info("插入成功:"+isInsert);
    logger.info("插入实体主键:"+map.get("id").toString());
}

这里的上个接口的主键以map.get("id")获取,id是在mapper中自定义的

效果图:


对照数据库表数据


好了,需求就解决了;

我是张星,欢迎加入博主技术交流群,群号:313145288


你可能感兴趣的:(mybatis,深入浅出mysql)