本人小白,剛接觸SSM框架不久,遇到以下問題
無論資料庫存在該資料與否,頁面總是跳出“該用戶不存在的”的情況,即controller中對應的teacher==null
@Controller
@RequestMapping("/teacher")
public class ReUserInfoController {
@Autowired
private ReUserInfoService reUserInfoService;
/**
* 教師登入
* @param copyUserInfo
* @return
*/
// 上方掃描的是jsp頁面中的action引數
@RequestMapping("/teacher_login")
public String teacher_login(CopyUserInfo copyUserInfo, HttpServletRequest request, Model model){
String msg="";
//根據登入賬號判斷該用戶是否存在
CopyUserInfo teacher = reUserInfoService.selectTeacherByRID(copyUserInfo.getTeacher_RID());
if(teacher==null){
msg="該用戶不存在!";
}else{
if(teacher.getTeacher_Pass().equals(copyUserInfo.getTeacher_Pass())){
/*將用戶資訊放入session*/
request.getSession().setAttribute("userInfo",teacher);
//獲取sessionid
String sessionId=request.getSession().getId();
model.addAttribute("sessionId",sessionId);
//進入主界面
return "/teacher_main";
}else{
msg="密碼錯誤!";
}
}
model.addAttribute("msg",msg);
// 回傳的是網頁,/login是地址
return "/login";
}
}
idea下方顯示貌似能夠成功找到資料

uj5u.com熱心網友回復:
action好像沒寫錯,表單控制元件中的name與物體類中的屬性名好像也是一致的,懵了,不知道錯哪了附jsp界面
uj5u.com熱心網友回復:
看代碼你的teacher_ID就等于null,可以測驗一下你把id輸出一下看看,建議接收的引數寫為 Integer id 這樣直接接收前臺傳過來的id值uj5u.com熱心網友回復:
你這IDEA控制臺日志顯示你teacher_RID是10000并且能查到資料, 但是 if(teacher==null) 卻是true, 說明問題出在查詢結果沒有映射回controller層的 CopyUserInfo 里面, 問題應該出在你的持久層, 映射問題, 你應該debug的是那部分代碼uj5u.com熱心網友回復:
首先,列印你接收到的teacher_RID,看一下是否接收到了,如果為null,可以使用request.getParamter();獲取,也可以通過注解@RequestParam(“”)注解獲取。如果接收到的teacher_RID中有值,并且查出來資料了,卻判斷為null,那就看一下你的mapper檔案宣告的回傳型別,是否是CopyUserInfo,驗證自己宣告的回傳型別是否正確一句兩句也說不清楚,因為我不知道你是用的注解還是xml檔案,如果是xml檔案你的回傳型別是配置的別名還是resultmap,亦或者是包路徑。只要能查出資料,接收到值了,那就一定是你的mapper檔案宣告的回傳型別的問題
uj5u.com熱心網友回復:
我用調斷點的方式看了下,發現前臺傳進去是什么引數,就一直是什么引數,好像就一直沒變過,除了teacher_RID和teacher_Pass,其余的都一直是null
uj5u.com熱心網友回復:
3樓說的對 檢查一下物體類和資料庫欄位對應的映射 先看欄位名稱 欄位名稱如果沒問題 看一下是否有int欄位對應的資料是null int欄位給個初始值試試uj5u.com熱心網友回復:
謝謝各位大佬,問題解決了,mapper里沒加resultmapper,補上這個和屬性就解決了,被之前跑的誤導了uj5u.com熱心網友回復:
請問一下,mapper中,resultmapper是必的么,因為我改之前的模型沒有這個也能跑起來
uj5u.com熱心網友回復:
應該是有默認映射的, resultmapper不是必備的
uj5u.com熱心網友回復:
3樓說的對 檢查一下物體類和資料庫欄位對應的映射 先看欄位名稱 欄位名稱如果沒問題 看一下是否有int欄位對應的資料是null int欄位給個初始值試試
請問一下,mapper中,resultmapper是必的么,因為我改之前的模型沒有這個也能跑起來
mybatis默認有映射, 但是你的表欄位的名稱必須和物體類的屬性名一模一樣. 如果不一樣就需要用到resultMap了
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/72971.html
標籤:Web 開發
上一篇:Java的讀寫資料
