jackson序列化---用户id与姓名的转换

 用户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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值