关于mybatis中添加数据时,返回主键id的方法
1.场景
在添加到数据库中需要返回主键id时遇到该问题
2.如何解决
首先我们需要知道两个关键字
//是否返回自增主键值
useGeneratedKeys = true
//将值附给哪个属性 这个属性必须是实体类中包含的
keyProperty = “id”
<insert id="insert" useGeneratedKeys="true" keyProperty="id">
insert into user ( openid, name, phone, sex, id_number, avatar, create_time)
values ( #{openid}, #{name}, #{phone}, #{sex}, #{idNumber}, #{avatar}, #{createTime})
</insert>
这样就可以在我们调用insert方法时 给原来的实体类中含有的属性赋值
//调用微信接口服务来获得当前用户的openid
String openid = this.getOpenid(dto);
//判断是否为空 如果为空登录失败 抛出业务异
if (openid == null){
throw new LoginFailedException(MessageConstant.LOGIN_FAILED);
}
//当前微信用户是不是新用户
User user = userMapper.getByOpenid(openid);
if (user == null){
//判断当前用户,自动完成注册
user= User.builder().openid(openid).createTime(LocalDateTime.now()).build();
userMapper.insert(user);
}
//返回这个用户对象
HashMap<String, Object> claims = new HashMap<>();
claims.put(JwtClaimsConstant.USER_ID,user.getId());