解決MyBatis中Enum欄位引數解析問題

2022-09-26 11:06:12 字數 2024 閱讀 6430

目錄

mybatis操作的基本user物件結構如下:

@data

@alias(value = "user")

public class user implements serializable

其中***字段對應的型別為***enum列舉型別,因此同時設定了如下的typehandler,從而在前端傳入引數和從資料庫中取值時進行自動的名稱轉換。

@mappedjdbctypes(jdbctype.integer)

@mappedtypes(value = ***enum.class)

public class ***typehandler extends basetypehandler

/*** 通過列名讀取性別

*/@override

public ***enum getnullableresult(resultset resultset, string s) throws sqlexception

return ***enum.getenumbyid(***);

}/**

* 通過下標讀取性別

*/@override

public ***enum getnullableresult(resultset resultset, int i) throws sqlexception

return ***enum.getenumbyid(***);

}/**

* 通過儲存過程讀取性別

*/@override

public ***enum getnullableresult(callablestatement callablestatement, int i) throws www.cppcns.comsqlexception

return ***enum.getenumbyid(***);}}

下面在使用axios post請求來更新使用者資訊,請求的json引數如下:

其中由於***欄位的列舉型別,因此這裡將***根據select得到的option來轉換為了列舉中的id對應的值。也就是:

1: male

2: famale

但在發出請求之後,服務端日誌**現如下的問題:

at [source: (pushb程式設計客棧ackinputstream); line: 1, column: 40] (through reference chain: cn.zyt.springbootlea"***"])]

對於該問題,可以使用列舉型別的desc來作為引數傳遞。當使用如下desc屬性對映時,將json請求引數改成如下就可以解析成功不報錯:

此時對應的***字段選擇select標籤如下:

***:

male

female

同時注意:enum欄位***對應的資料庫列的設定中,該列的資料型別為int,而不能為tinyint。tinyint資料型別對應於j**a中的boolean,1表示true,0表示false。

解決Mybatis中result標籤識別不了的情況

目錄 有個user類 在mybatis result標籤中這樣對映 這是就會發現proper程式設計客棧ty name 這個報紅 這是因為大寫不識別的原因,大寫開頭 它會變成 l 將name 重新www.cppcns.com寫成name就可以 id 和 re 都將乙個列的值對映到乙個簡單資料型別 字...

解決mybatis中order by排序無效問題

1 將傳入的資料都當成乙個字串,會對自動傳入的資料加乙個雙引號。如 order by 如果傳入的值是111,那麼解析成sql時的值為order by 111 如果傳入的值是i程式設計客棧d,則解析成的sql為order by id 2 將傳入的資料直接顯示生成在sql中。如 order by 如果傳...

C中關鍵字enum 列舉 精巧的用法

列舉在c c c 中,是乙個被命名的整型常數的集合,列舉在日常生活中很常見。例如表示星期的sunday,monday,tuesday,wednesday,thursday,friday,saturday,就是乙個列舉。列舉型別的使用方法 一般的定義方式如下 enum enum type name e...