用户id与姓名的转换
方法1:在实体中建一共假字段,然后根据用户id查询出姓名再赋值给加字段。
缺点:用一次就需要查一次。
优点:数据完整。
private Long userId;
@TableField(exist = false)
private String userName;
方法二:在项目启动时,在启动类中添加一个方法,用于查询出所有用户并存起来。
优点:查一次都可以用。
缺点:但是数据不完整,新增后需要重启。
//启动类
@Bean
public DataMap getDataMap(){
return new DataMap();
}
//DataMap()
public class DataMap implements CommandLineRunner {
public static Map<Long, User> userMap=new HashMap<>();
....获取其他信息的具体的实现方法....
//例如 根据用户id返回用户
public User getUser(Long id){
User User = userMap.get(id);
return User;
}
}
@Override
public void run(String... args) throws Exception {
.....往userMap中放入数据.....
}
//最后就是在实体类中,在该Map中找出相关用户。
方法三:使用序列化对id进行随时转换。此时后端返回给前端的userId就为name了。
优点:方便简洁。
缺点:就是数据量大时速度缓慢,并且没有返回用户id
//序列化注解
public class UserIdSerializerUtils extends JsonSerializer<Long> {
@Override
public void serialize(Long aLong, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
if(ObjectUtil.isNotNull(aLong)){
....获取name的方法......
jsonGenerator.writeString(name);
}
}
}
//实体当中
@JsonSerialize(using = UserIdSerializerUtils.class)
private Long userId;