mybatis插入数据时,自动获取主键的自增id

首先int i = userMapper.insertSelective(user),这里返回的并不是主键自增id,而是成功插入的条数。如果想获取主键自增id,除了插入记录之后再查询之外,也可以使用mybatis提供的两种方式:
一是mybatis自动生成的sql语句:

  
    
      SELECT LAST_INSERT_ID()
    
    insert into user
    
      
        name,
      
      
        create_by,
      
      
        update_by,
      
      
        sys_ctime,
      
      
        sys_utime,
      
    
    
      
        #{name,jdbcType=VARCHAR},
      
      
        #{createBy,jdbcType=VARCHAR},
      
      
        #{updateBy,jdbcType=VARCHAR},
      
      
        #{sysCtime,jdbcType=TIMESTAMP},
      
      
        #{sysUtime,jdbcType=TIMESTAMP},
      
    
  

二是在insert标签加属性,是否使用 useGeneratedKeys 开关为true,keyProperty对应的就是要返回的字段名称:

  
  
注意:

1.通过以上两种方式获取自增id时,会直接赋值到领域模型的实体id中;

Integer i = user.getId;// i == null
if(userMapper.insertSelective(user) > 0){//如果插入成功
   i = user.getId;//i为主键自增id
}

2.insert标签里如果有多条insert语句,那么返回的则是最后一条insert语句的自增id。

参考:https://chenyi84.iteye.com/blog/2197076

你可能感兴趣的:(mybatis插入数据时,自动获取主键的自增id)