mybatis-自定義TypeHandler 的坑

litblank發表於2018-08-14

1、場景

  • 介面返回物件或Map對資料進行修改
  • 查詢的資料對日期型別格式化
  • 返回物件中返回自定義的資料字典

2、坑、自定義之後也無效的問題

  • 對於返回map型別,資料為NULL的欄位,修改無效,因為rs.wasNull()進行了判斷。欄位為null,則直接返回null

3、講解

BaseTypeHandler implements TypeHandler 通過getResult方法呼叫實際介面, 模板模式

4、程式碼

TypeHandler的型別,處理什麼型別的資料

@MappedTypes(value = {  String.class})
@MappedJdbcTypes(value = JdbcType.VARCHAR, includeNullJdbcType = true)
public class EmptyStringIfNull extends BaseTypeHandler<String> {
複製程式碼

配置檔案載入handler包:

mybatis.type-handlers-package=com.lbc.web.util
複製程式碼

欄位值為null,也返回null的問題,重寫getResult,去掉

rs.wasNull() ? null : result;
複製程式碼

相關文章