0
点赞
收藏
分享

微信扫一扫

@Options(useGeneratedKeys = true, keyProperty = “id“, keyColumn = “id“,mybatis主键自增长,返回主键值配置问题

在很多场景下,会将某个实体的主键设为自增长,但在某些场景下,需要在实体插入数据的同时就获取该实体的主键值;例如在用户注册时,我们需要将用户信息插入用户表,同时,我们需要生成一条与用户关联的另一张表的记录,在同一段逻辑代码中,就需要用户信息插入的同时,返回自增长的主键用以关联其他信息,mybatis配置方式如下。

实体类

@Getter
@Setter
@ToString
@TableName("acc_sys_t_user")
public class SysUser implements Serializable {
@TableField("userID")
@TableId(value = "userID",type = IdType.AUTO)// id自增长
private Long userID;

@TableField("userName")
private String userName;
@TableField("accNum")
private String accNum;
@TableField("creTm")
private String creTm;
@TableField("roleCode")
private Long roleCode;


}

mapper接口

@Repository
public interface SysUserMapper extends BaseMapper<SysUser> {

// 配置返回主键
@Options(useGeneratedKeys = true, keyProperty = "userID", keyColumn = "userID")
@Insert("INSERT INTO acc_sys_t_user (userName,accNum,creTm,roleCode)VALUES (#{userName},#{accNum},#{creTm},#{roleCode})")
int insertUser(SysUser user);

}

service测试

public ApiResult testInsertUser(){
SysUser user = new SysUser();
user.setUserName("张珊");
user.setAccNum("112110");
user.setRoleCode(1L);
user.setCreTm(DateUtil.dateToYMDHMS(new Date()));
System.out.println("插入前 "+user);
int i = mapper.insertUser(user);

System.out.println("插入后 "+user);
return new ApiResult().success(user);
}

测试结果

@Options(useGeneratedKeys = true, keyProperty = “id“, keyColumn = “id“,mybatis主键自增长,返回主键值配置问题_mysql


举报

相关推荐

0 条评论