Java 使用id获取,返回另一个变量

Java 使用id获取,返回另一个变量,java,spring-boot,Java,Spring Boot,我正在尝试创建一个get方法,该方法将获取条形码,但返回qty!=0 在下面的代码中,我设法获得了条形码返回qty,或者获得了条形码并返回qty==0。但是当我尝试获取qty!=0我收到此错误 java.lang.NullPointerException: null at com.javahelps.restservice.controller.UserController.findd(UserController.java:54) ~[classes/:na] at sun.r

我正在尝试创建一个get方法,该方法将获取条形码,但返回
qty!=0

在下面的代码中,我设法获得了条形码返回
qty
,或者获得了条形码并返回
qty==0
。但是当我尝试获取
qty!=0
我收到此错误

java.lang.NullPointerException: null
    at com.javahelps.restservice.controller.UserController.findd(UserController.java:54) ~[classes/:na]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_201]
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_201]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_201]
    at java.lang.reflect.Method.invoke(Unknown Source) ~[na:1.8.0_201]
我的代码

@GetMapping(path = "/barcode/{barcode}")
public List<User> findd(@PathVariable("barcode") String barcode,Integer qty) {
    return repository.findByQty(qty != 0);
}
@GetMapping(path=“/barcode/{barcode}”)
公共列表findd(@PathVariable(“条形码”)字符串条形码,整数数量){
返回存储库.findByQty(数量!=0);
}

整数数量
定义为对象。如果您的请求不包含
qty
的值,则此变量的值为
null
,并将
null
解装箱为检查
qty!=null
会导致
NullPointerException
,因为没有可以取消装箱的变量值

您还必须向变量添加映射注释,例如
@RequestParam

要解决此问题,可以添加空检查:

@GetMapping(path = "/barcode/{barcode}")
public List<User> findd(@PathVariable("barcode") String barcode, @RequestParam Integer qty) {
    if (qty == null) {
        return Collections.emptyList();
    }
    return repository.findByQty(qty != 0);
}

整数数量
将始终为
,因为您没有为此值设置映射

它可以标记为
@RequestParam

@GetMapping(path = "/barcode/{barcode}")
public List<User> findd(@PathVariable("barcode") String barcode,
                        @RequestParam(defaultValue = "0") Integer qty) {
    return repository.findByQty(qty != 0);
}
@GetMapping(path=“/barcode/{barcode}”)
公共列表findd(@PathVariable(“条形码”)字符串条形码,
@RequestParam(defaultValue=“0”)整数数量{
返回存储库.findByQty(数量!=0);
}
在此片段中:

  • /barcode/{barcode}?数量=666
    -
    数量=666
  • /barcode/{barcode}
    -
    qty=0
    (默认值)或
    null
    ,如果您将其定义为
    @RequestParam Integer qty
p.S.不要忘记
Integer
是一个
对象
,它可以是
null
。如果您设置了
defaultValue
这将始终设置为一个值,您可以改为设置
int

每当我添加时,我都会收到这个错误!=它向我展示了这一点,但是=0工作得非常好
@GetMapping(path = "/barcode/{barcode}")
public List<User> findd(@PathVariable("barcode") String barcode,
                        @RequestParam(defaultValue = "0") Integer qty) {
    return repository.findByQty(qty != 0);
}