问答详情
源自:3-8 实体作为条件构造器构造方法的参数

创建条件构造器传入实体对象时,没有设置主键值,查询SQL日志显示主键值为0

/**
 * 创建条件构造器时传入实体对象
 */
@Test
public void selectByWrapperEntity(){
    User whereUser = new User();
    whereUser.setName("Jack");
    whereUser.setAge(20);

    QueryWrapper<User> queryWrapper = new QueryWrapper<User>(whereUser);

    List<User> userList = userMapper.selectList(queryWrapper);
    userList.forEach(System.out::println);
}


##### SQL日志执行如下

==>  Preparing: SELECT id,name,age,email FROM user WHERE id=? AND name=? AND age=?
==> Parameters: 0(Long), Jack(String), 20(Integer)
<==      Total: 0

提问者:weixin_慕桂英8261689 2020-06-10 17:19

个回答

  • 老猿
    2020-07-05 17:15:36

    我怀疑是你实体类中的主键用的基本数据类型,基本数据类型的成员变量,例如long的默认值是0。所以会出现你那么现象,换成基本数据类型对应的包装类即可,因为是引用类型,默认值为null。

  • 慕UI3574512
    2020-06-12 11:50:28

    估计你User实体类的主键用的基本类型吧,默认会带默认值0的,可以换为包装类型试试