Java中int和Integer在Mybatis-plus中对于数据库字段会导致的问题

mark一下学习博客系统开发时遇到的一个基础问题,
由于Java中int类型默认为0而Integer作为包装类默认是null
所以Mybatis-plus生成sql语句的时候可能会导致意料之外的字段被更改
例如

@Async("taskExecutor")
    public void updateArticleViewCounts(ArticleMapper articleMapper, Article article){
        Integer viewCounts = article.getViewCounts();
        Article articleUpdate = new Article();
        articleUpdate.setViewCounts(viewCounts + 1);
        LambdaUpdateWrapper<Article> updateWrapper = new LambdaUpdateWrapper<>();
        updateWrapper.eq(Article::getId, article.getId());
        updateWrapper.eq(Article::getViewCounts, article.getViewCounts());
        articleMapper.update(articleUpdate, updateWrapper);
    }

这是一个博客系统常见的更新阅读量的操作
但是如果采用int数据类型去对应相关数据库字段的实体类
会导致这些字段未被指明的字段也被更新。
这些字段会呈现默认值的情况。
所以好像可以用包装类还是用包装类吧。
小菜鸡的一点见解,有错误之处请多多指教

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 根据 myBatis-plus 的官方文档,如果查询结果为空,那么在分页查询,Page 对象的 records 属性返回一个空的 List。因此,只有在查询结果不为空的情况下,records 才有值,不为 null。 ### 回答2: myBatis-plus 的page分页的records不为null。 myBatis-plus的page分页查询方法返回一个Page对象,其包含了分页的相关信息,如总记录数、当前页码、每页记录数等。而Page对象的records属性是一个List类型的集合,用于存储查询结果的记录列表。 当使用myBatis-plus进行分页查询时,myBatis-plus自动将查询结果封装到Page对象的records属性,因此records属性不为null。如果查询结果为空,records属性仍然被初始化为空的List对象,而不是null。 这样设计的目的是为了方便开发者在使用分页查询结果时,可以直接对records属性进行操作,而无需判断是否为null。开发者可以通过判断records列表的size来确定查询结果是否为空。如果size为0,则说明查询结果为空;如果size大于0,则说明查询结果不为空,可以通过遍历列表或者使用其他方法来处理查询结果。 ### 回答3: 根据MyBatis-plus官方文档,page分页的records是Page对象的一个属性,用于存放查询结果列表。此属性不为null,但在查询结果为空或者还未执行查询时,records的值可能为空列表(即size为0的ArrayList)。 当使用MyBatis-plus进行数据库查询时,可以通过Page对象提供的方法获取分页查询的结果,其包括查询结果列表records。如果查询结果为空,即没有匹配的数据,records将是一个空列表。 当尚未执行查询时,可以通过判断records是否为空列表来确定是否已经执行了查询操作。如果records为空列表,说明还未执行查询或者查询结果为空。 总之,MyBatis-plus的page分页的records属性不为null,但在查询结果为空或者尚未执行查询时,records的值可能为空列表。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值