<insert id="insert" parameterType="cc.mrbird.febs.energy.domain.ChatGroup">
  <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Long">
      select LAST_INSERT_ID()
  </selectKey>
    insert into chat_group (id, group_index, group_name,
      member_id)
    values (#{id,jdbcType=BIGINT}, #{groupIndex,jdbcType=VARCHAR}, #{groupName,jdbcType=VARCHAR},
      #{memberId,jdbcType=BIGINT})
  </insert>

selectKey  会将 SELECT LAST_INSERT_ID()的结果放入到传入的model的主键里面,  

  • keyProperty 对应的model中的主键的属性名,这里是 user 中的id,因为它跟数据库的主键对应  
  • order AFTER 表示 SELECT LAST_INSERT_ID() 在insert执行之后执行,多用与自增主键,  
  • BEFORE 表示 SELECT LAST_INSERT_ID() 在insert执行之前执行,这样的话就拿不到主键了,  
  • resultType 主键类型 

实体类

public class ChatGroup implements Serializable {
    private Long id;

    private String groupIndex;

    private String groupName;

    private Long memberId;

    private static final long serialVersionUID = 1L;
}

调用

insert方法之后,ChatGroup.getId()获取insert后自增的主键

01-31 21:28