踩坑日记

当有类属性的时候 parseObject无法正常转换

public class ResponseEntity<T> implements Serializable {
    private Integer code;

    private String msg;

    private T data;
}

这个类中定义了泛型T 当泛型是一个类属性时候(reslut是一个json字符串)

  ResponseEntity entity=JSON.parseObject(result,ResponseEntity.class);

这里转换出来 data属性为空,没办法复制
解决办法如下

   ResponseEntity entity=JSON.parseObject(result,ResponseEntity.class);
   ObjectMapper objectMapper = new ObjectMapper();
        MemberData memberData = objectMapper.convertValue(entity.getData(), MemberData.class);
        ResponseEntity<MemberData> res = new ResponseEntity<>();
        BeanUtils.copyProperties(entity, res);
        res.setData(memberData);

先不定义泛型 就直接 ResponseEntity 去接收,这个时候data是有值的,再用 ObjectMapper的convertValue()方法去把data转换成我们需要的泛型类, BeanUtils的copyProperties(A,B)方法可以将A类中和B类相同属性(类型一样,属性名相同)的值赋值给B类

常用数据类型的比较

Integer、Long

Integer和Long比较不要用== 存在坑 在一定区间内用 ==可以 但是超过了就不行,所以为了避坑 用equals或者.intValue() 方法比较

BigDecimal

BigDecimal建议用compareTo()方法,不用equals方法的原因是因为BigDecimal不仅比较值还比较精度
例如

BigDecimal a = new BigDecimal("1.00");
BigDecmial b = new BigDecimal(1);
System.out.println(a.equals(b));//此时返回的是false
System.out.println(a.compareTo(b)==0);//此时返回的是true

a compareTo b 如果a小于b 返回-1
如果a等于b 返回0
如果a大于b 返回1

Date类型

Date类型有几种比较方式
1、 compareTo (同 BigDecimal)
2、通过Date自带的before()或者after()方法比较,返回的是Boolean值
例如 a.before(b) 返回true 就是a的日期小于b
3、 通过调用Date的getTime()方法获取到毫秒数来进行大小比较

##Mybatis-plus的update方法默认会忽略更新为null的属性,当我们要更新null值时可以加如下注解

@TableField(updateStrategy = FieldStrategy.IGNORED)
加在需要的字段上

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值