為何Mybatis查詢無資料時返回值不是null
阿新 • • 發佈:2018-12-15
一、返回為一個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語句,直接賦值