今天MybatisPlus踏了坑, LambdaQueryWrapper使用 int默认值问题

在使用MybatisPlus的LambdaQueryWrapper时遇到一个问题,未传参数的情况下,日志显示有两个参数。深入研究发现是int类型的默认值问题。将int替换为Integer后,问题得到解决。本文探讨了int的特性和Integer类的常量,总结了两者的基本区别和初始值差异。
摘要由CSDN通过智能技术生成

问题现象

一顿操作,感觉不可能有问题,调试后发现,没传任何参数,日志里面居然有两个参数,

进入对象中发现

解决方法

int类型替换成

Integer 类型

问题消失

问题分析

1、了解一下int

int:

  • int 数据类型是32位、有符号的以二进制补码表示的整数;
  • 最小值是 -2,147,483,648(-2^31);
  • 最大值是 2,147,483,647(2^31 - 1);
  • 一般地整型变量默认为 int 类型;
  • 默认值是 0 ;
  • 例子:int a = 100000, int b = -200000。

 

2、了解一下Integer

Integer 类的常量

Integer 类包含以下 4 个常量。

  • MAX_VALUE:值为 231-1 的常量,它表示 int 类型能够表示的最大值。
  • MIN_VALUE:值为 -231 的常量,它表示 int 类型能够表示的最小值。
  • SIZE:用来以二进制补码形式表示 int 值的比特位数。
  • TYPE:表示基本类型 int 的 Class 实例。

总结

1、int是基本数据类型,Integer是引用数据类型;

2、Ingeter是int的包装类,int的初值为0,Ingeter的初值为null;

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 在MyBatis Plus中使用 LambdaQueryWrapper 查询表 "public" 中 "name" 属性包含 "test" 的所有数据并将查询结果中的 "id" 和 "pid" 保存到数组中,可以这样写: ``` List<Public> list = new LambdaQueryWrapper<Public>() .like(Public::getName, "test") .select(Public::getId, Public::getPid) .list(); ``` 或者这样: ``` List<Public> list = new LambdaQueryWrapper<Public>() .like(Public::getName, "test") .select(Public::getId, Public::getPid) .list(new QueryWrapper<Public>()); ``` 然后可以利用java8的新特性 `stream()` 和 `map()` 取出id 和 pid的数据 ``` Integer[] ids = list.stream().map(Public::getId).toArray(Integer[]::new); Integer[] pids = list.stream().map(Public::getPid).toArray(Integer[]::new); ``` 这里我们使用Mybatis-plusLambdaQueryWrapper来进行条件查询,并且使用LambdaQueryWrapper.like(...)来进行模糊查询. ### 回答2: 在MyBatis Plus中,可以使用LambdaQueryWrapper来实现根据条件查询数据。假设有一张名为public的表,包含id、pid和name三个属性,现需要筛选出name包含"test"的所有数据,并将查询结果中的id和pid保存到数组中,可以按照以下步骤操作: 1. 导入所需的类: ```java import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.additional.query.impl.LambdaQueryChainWrapper; ``` 2. 在调用查询的方法中,使用LambdaQueryWrapper指定查询条件,然后调用select方法指定要查询的字段: ```java LambdaQueryWrapper<Public> queryWrapper = Wrappers.lambdaQuery(); queryWrapper.like(Public::getName, "test"); queryWrapper.select(Public::getId, Public::getPid); ``` 3. 执行查询,并将查询结果中的id和pid保存到数组中: ```java List<Public> publicList = publicMapper.selectList(queryWrapper); List<Integer> idList = new ArrayList<>(); List<Integer> pidList = new ArrayList<>(); for (Public publicData : publicList) { idList.add(publicData.getId()); pidList.add(publicData.getPid()); } ``` 这样,通过以上步骤可以使用LambdaQueryWrapperMyBatis Plus中查询名为public的表,筛选name包含"test"的所有数据,并将查询结果中的id和pid保存到数组中。 ### 回答3: 在MySQL中有一张名为public的表,表结构包含id、pid和name属性。现在我们希望在mybatisplus中使用LambdaQueryWrapper查询该表,并筛选出name属性包含"test"的所有数据。同时,我们希望将查询结果中的id和pid保存到数组中。 首先,需要引入相关的依赖包,确保mybatisplus的LambdaQueryWrapper相关功能可用。 然后,在代码中进行查询操作,具体步骤如下: 1. 导入LambdaQueryWrapper类: ```java import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; ``` 2. 构建LambdaQueryWrapper对象,设置查询条件: ```java LambdaQueryWrapper<PublicEntity> wrapper = new LambdaQueryWrapper<>(); wrapper.like(PublicEntity::getName, "test"); ``` 3. 执行查询操作,并将结果中的id和pid保存到数组中: ```java List<PublicEntity> resultList = publicMapper.selectList(wrapper); int size = resultList.size(); Long[] ids = new Long[size]; Long[] pids = new Long[size]; for (int i = 0; i < size; i++) { PublicEntity entity = resultList.get(i); ids[i] = entity.getId(); pids[i] = entity.getPid(); } ``` 这样,我们就完成了在mybatisplus中使用LambdaQueryWrapper查询MySQL表"public",并筛选出name属性包含"test"的数据,并将查询结果中的id和pid保存到数组的操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

未来AI编程

共鸣===鼓励 打赏您随意

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值