匯入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原始碼現在...