二 Mybatis原始碼 反射模組應用

2021-09-29 19:32:50 字數 2595 閱讀 4780

匯入excel,根據列號,轉換成屬性名,從而通過反射設定屬性值。這裡使用的是 mybatis 對反射的封裝包!

**核心思想:**就是通過將實體類封裝成 reflector 物件,通過該物件獲取屬性對應的 setter 方法 和 引數型別,然後將值設定進去!

1、excel

2、該 excel 對應的列舉類

public

enum studentenum

}studentenum

(string enname, string zhname)

public string getenname()

public

void

setenname

(string enname)

public string getzhname()

public

void

setzhname

(string zhname)

public

static studentenum getstudentenum

(integer index)

}

3、該 excel 對應的實體類
@data

@jsoninclude

(jsoninclude.include.non_null)

public

class

student

4、該 excel 對應的實體類
@slf4j

public

final

class

poiutils

;private

static

final string[

] column_names =

;private

static map

study_state_map =

newhashmap

<

>()

;private

static

final string sheet_name =

"學生資訊表.xls"

;private

static map

subjectidmap;

private

static map

subjectnamemap;

/** * reflector 工廠,可以實現對 reflector 快取(reflector物件是對類進行封裝,可以獲取所有的屬性、getter/setter 方法)

*/private

static reflecto***ctory reflecto***ctory =

newdefaultreflecto***ctory()

;static

/** * 將上傳的excel中的資料轉換成集合

* @param file 上傳的檔案物件

* @param subjects 科目集合

* @return 集合

*/public

static list

importemp2list

(multipartfile file, list

subjects)

hssfrow row = sheet.

getrow

(j);

if(row == null)

int physicalnumberofcells = row.

getphysicalnumberofcells()

; student =

newstudent()

;for

(int k =

0; k < physicalnumberofcells; k++))

;}else);

}elseif(

"studystate"

.equals

(propertyname)))

;}else);

}}}break

;default:if

(cell.

getdatecellvalue()

!= null));

}break;}

}}students.

add(student);}

}}catch

(ioexception e)

catch

(illegalacces***ception

| invocationtargetexception e)

return students;

}private

static list

translatesubjectnames2id

(string cellvalue)

}else

}return subjectids;

}private

static

void

translatesubjects2map

(list

subjects)}}

}

mybatis原始碼分析二

這次分析mybatis的xml檔案 1.xml編寫.2.資源配置 3.setting 標籤 4.typealiases是用來設定類路徑別名的 別名其他介紹 6.資料庫標識 databaseidprovider 1 databaseidprovider的type屬性是必須的,不配置時會報錯。上面這個屬...

MyBatis 原始碼篇 日誌模組2

上一章的案例,配置日誌級別為 debug,執行乙個簡單的查詢操作,會將 jdbc 操作列印出來。本章通過 mybatis 日誌部分原始碼分析它是如何實現日誌列印的。在 mybatis 的日誌模組中有乙個 jdbc package,package 中的內容如下圖所示 basejdbclogger 是乙...

mybatis原始碼解析 IO讀取檔案模組

前言 我採用的原始碼位址 ibatis原始碼 在ibatis 2目錄裡,原始碼release jar包測試 在ibatis release jar test目錄裡。之所以使用ibatis原始碼作為閱讀物件,要明確的一點就是閱讀原始碼不是為了找工作,而是為了工作為了讓水平提高。mybatis原始碼現在...