當使用 mybatis 查詢 sql 期望著返回 int 類型的數據時,卻實際返回 NULL,會引發異常。這是因為 mybatis 不允許原始類型的方法返回 null 值。針對此問題,有兩種常見解決方案:
1. 修改返回類型
修改 @select 注解中的方法返回類型為 Integer 代替 int。integer 是 int 的包裝類型,它可以處理 null 值。修改后的代碼如下:
@select("select max(id) from user") integer maxid();
在業務層判斷返回值是否為 null,如果是,則返回 0 或其他預期的默認值。
2. 使用數據庫函數
在 sql 中使用數據庫函數(如 mysql 的 coalesce 或 ifnull)來處理 null 值。修改后的代碼如下:
@Select("SELECT COALESCE(max(id), 0) FROM user") int maxId();
coalesce 函數將返回第一個非 null 值,如果沒有非 null 值,則返回指定的默認值(本例中為 0)。
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END