MyBatis版本升級導致OffsetDateTime入參解析異常問題復盤_第1頁
MyBatis版本升級導致OffsetDateTime入參解析異常問題復盤_第2頁
MyBatis版本升級導致OffsetDateTime入參解析異常問題復盤_第3頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第MyBatis版本升級導致OffsetDateTime入參解析異常問題復盤以OffsetDateTime為例,只需要參考或者直接使用3.4.5版本中的MyBatis的OffsetDateTimeTypeHandler,然后通過配置直接覆蓋內置實現即可。

//假設全類名為club.throwable.OffsetDateTimeTypeHandler

publicclassOffsetDateTimeTypeHandlerextendsBaseTypeHandlerOffsetDateTime{

@Override

publicvoidsetNonNullParameter(PreparedStatementps,inti,OffsetDateTimeparameter,JdbcTypejdbcType)

throwsSQLException{

ps.setTimestamp(i,Timestamp.from(parameter.toInstant()));

@Override

publicOffsetDateTimegetNullableResult(ResultSetrs,StringcolumnName)throwsSQLException{

Timestamptimestamp=rs.getTimestamp(columnName);

returngetOffsetDateTime(timestamp);

@Override

publicOffsetDateTimegetNullableResult(ResultSetrs,intcolumnIndex)throwsSQLException{

Timestamptimestamp=rs.getTimestamp(columnIndex);

returngetOffsetDateTime(timestamp);

@Override

publicOffsetDateTimegetNullableResult(CallableStatementcs,intcolumnIndex)throwsSQLException{

Timestamptimestamp=cs.getTimestamp(columnIndex);

returngetOffsetDateTime(timestamp);

privatestaticOffsetDateTimegetOffsetDateTime(Timestamptimestamp){

if(timestamp!=null){

//這里可以考慮自定義系統的時區,例如ZoneId.of("Asia/Shanghai")

returnOffsetDateTime.ofInstant(timestamp.toInstant(),ZoneId.systemDefault());

returnnull;

}

配置文件中進行TypeHandler配置覆蓋,下面是類路徑下配置文件mybatis-config.xml的示例:

xmlversion="1.0"encoding="UTF-8"

!DOCTYPEconfigurationPUBLIC"-////DTDConfig3.0//EN""/dtd/mybatis-3-config.dtd"

configuration

settings

!--下劃線轉駝峰--

settingname="mapUnderscoreToCamelCase"value="true"/

!--未知列映射忽略--

settingname="autoMappingUnknownColumnBehavior"value="NONE"/

/settings

typeHandlers

!--覆蓋內置OffsetDateTimeTypeHandler--

typeHandlerhandler="throwable.club.OffsetDateTimeTypeHandler"/

/typeHandlers

/configuration

其他類型解析異常都可以參照此思路進行兼容。

小結

升級基礎框架版本需要謹慎。另外,文中提到的解決方案只是筆者目前通過問題分析和定位得到的一種相對合

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論