在使用使用Generator生成的方法insertselective,返回的为影响条数,0为失败,1为一条数据收到影响,也就是成功,并且会在data object上加入主键值。
利用这个特性可以用来接收主键ID,创建另外一个对象。
try{
//insertSelective会判断是否为空,如果有null则跳过,使用数据库的默认值 ,而insert对于null字段也会更新
userDOMapper.insertSelective(userDO);
}catch(DuplicateKeyException ex){
throw new BusinessException(EmBusinessError.PARAMETER_VALIDATION_ERROR,"手机号已重复注册");
}
//userDO = userDOMapper.selectByPrimaryKey()
userModel.setId(userDO.getId());
UserPasswordDO userPasswordDO = convertPasswordFromModel(userModel);
userPasswordDOMapper.insertSelective(userPasswordDO);
在上述代码中,首先插入了一条userDO对象,利用insertSelective返回的主键ID创建UserPasswordDO 对象(用户模型和密码是分为两张表的)。
但在创建过程中,发现id没有返回,导致在UserPasswordDO的ID为空
解决办法是在对应的XML文件中加入keyProperty=“id” useGeneratedKeys="true"两个字段