1. 程式人生 > >為何Mybatis查詢無資料時返回值不是null

為何Mybatis查詢無資料時返回值不是null

一、返回為一個List

List<TeacherData> teacherData=null;

teacherData=teacherService.queryTeacherByNameService(name);#假設資料庫沒有匹配的資料

if(teacherData==null){

 System.out.println(1);
 
}

結果:輸出語句不會執行,也就是說teacherData不為null
解釋:第二行語句查詢結果為null,執行=賦值時,會先執行teacherData=new ArrayList<>();也就是說teacherData不為null,應該為空沒有資料

二、返回為一個普通類物件

 StudentData studentData=null;
 
 studentData=studentService.queryStudentByIdService(id);#假設資料庫沒有匹配的資料
 
 if(studentData==null){
 
  System.out.println(1);
  
 }

結果:輸出語句會執行,也就是說studentData為null
解釋:第二行語句查詢結果為null,執行=賦值時,不會執行new StudentData()語句,自然為null了

三、結論

  • List、Map型別會先執行new語句,再賦值
  • (不能用null來判斷是否有資料,應該用size大小)
  • 普通類不會執行new語句,直接賦值