亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

MyBatis使用自定義TypeHandler轉換類型的實現方法

2024-07-14 08:42:36
字體:
來源:轉載
供稿:網友

MyBatis雖然有很好的SQL執行性能,但畢竟不是完整的ORM框架,不同的數據庫之間SQL執行還是有差異。 筆者最近在升級 Oracle 驅動至 ojdbc 7 ,就發現了處理DATE類型存在問題。還好MyBatis提供了使用自定義TypeHandler轉換類型的功能。

本文介紹如下使用 TypeHandler 實現日期類型的轉換。

問題背景

項目中有如下的字段,是采用的DATE類型:

birthday = #{birthday, jdbcType=DATE},

在更新 Oracle 驅動之前,DateOnlyTypeHandler會做出處理,將 jdbcType 是 DATE 的數據轉為短日期格式(‘年月日')插入數據庫。畢竟是生日嘛,只需要精確到年月日即可。

但是,升級 Oracle 驅動至 ojdbc 7 ,就發現了處理DATE類型存在問題。插入的數據格式變成了長日期格式(‘年月日時分秒'),顯然不符合需求了。

解決方案:

MyBatis提供了使用自定義TypeHandler轉換類型的功能??梢宰约簩憘€TypeHandler來對 DATE 類型做特殊處理:

/** * Welcome to https://waylau.com */package com.waylau.lite.mall.type;import java.sql.CallableStatement;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.text.DateFormat;import java.util.Date;import org.apache.ibatis.type.BaseTypeHandler;import org.apache.ibatis.type.JdbcType;import org.apache.ibatis.type.MappedJdbcTypes;import org.apache.ibatis.type.MappedTypes;/** * 自定義TypeHandler,用于將日期轉為'yyyy-MM-dd' *  * @since 1.0.0 2018年10月10日 * @author <a href="https://waylau.com" rel="external nofollow" >Way Lau</a> */@MappedJdbcTypes(JdbcType.DATE)@MappedTypes(Date.class)public class DateShortTypeHandler extends BaseTypeHandler<Date> { @Override public void setNonNullParameter(PreparedStatement ps, int i, Date parameter, JdbcType jdbcType)  throws SQLException { DateFormat df = DateFormat.getDateInstance(); String dateStr = df.format(parameter); ps.setDate(i, java.sql.Date.valueOf(dateStr)); } @Override public Date getNullableResult(ResultSet rs, String columnName) throws SQLException { java.sql.Date sqlDate = rs.getDate(columnName); if (sqlDate != null) {  return new Date(sqlDate.getTime()); } return null; } @Override public Date getNullableResult(ResultSet rs, int columnIndex) throws SQLException { java.sql.Date sqlDate = rs.getDate(columnIndex); if (sqlDate != null) {  return new Date(sqlDate.getTime()); } return null; } @Override public Date getNullableResult(CallableStatement cs, int columnIndex) throws SQLException { java.sql.Date sqlDate = cs.getDate(columnIndex); if (sqlDate != null) {  return new Date(sqlDate.getTime()); } return null; }}

如果是 Spring 項目,以下面方式進行 TypeHandler 的配置:

<!-- 自定義 --><!--聲明TypeHandler bean--><bean id="dateShortTypeHandler" class="com.waylau.lite.mall.type.DateShortTypeHandler"/><!-- MyBatis 工廠 --><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" />  <!--TypeHandler注入--> <property name="typeHandlers" ref="dateShortTypeHandler"/></bean>

如何使用 TypeHandler

方式1 :指定 jdbcType 為 DATE

比如,目前,項目中有如下的字段,是采用的DATE類型:

birthday = #{birthday, jdbcType=DATE},

方式2 :指定 typeHandler

指定 typeHandler 為我們自定義的 TypeHandler:

birthday = #{birthday, typeHandler=com.waylau.lite.mall.type.DateShortTypeHandler},

源碼

見https://github.com/waylau/lite-book-mall

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久女人电视剧免费播放下载| 91精品国产91久久久久久久久| 国产精品成人播放| 3344国产精品免费看| 成人免费福利视频| 成人午夜两性视频| 欧美性生活大片免费观看网址| 亚洲国产毛片完整版| 黄网动漫久久久| 成人久久一区二区三区| 久久成人av网站| 国产精品免费一区豆花| 成人精品在线观看| 久久资源免费视频| 国产精品久久久久久久久免费| 欧美性xxxx在线播放| 68精品国产免费久久久久久婷婷| 国产精品18久久久久久首页狼| 亚洲自拍中文字幕| 日韩网站在线观看| 欧美一级成年大片在线观看| 国产精品久久久久久久久久东京| 91精品美女在线| 成人h视频在线观看播放| 日韩av在线影院| 久久久久久香蕉网| 国语自产在线不卡| 国产91精品青草社区| 日韩电影大片中文字幕| 日韩免费av一区二区| 九九热在线精品视频| 亚洲国产日韩欧美综合久久| 亚洲国产女人aaa毛片在线| 色青青草原桃花久久综合| 欧日韩在线观看| 欧美在线观看www| 亚洲欧美国产制服动漫| 亚洲一区二区三区777| 91影视免费在线观看| 国产亚洲激情在线| 亚洲午夜色婷婷在线| 最近免费中文字幕视频2019| 91精品视频专区| 亚洲美女又黄又爽在线观看| 456亚洲影院| www.亚洲免费视频| 国产精品99久久久久久久久久久久| 国内外成人免费激情在线视频| 永久免费精品影视网站| 国产一区二区黑人欧美xxxx| 久久欧美在线电影| 91国产精品91| 午夜欧美大片免费观看| 欧美国产欧美亚洲国产日韩mv天天看完整| 精品国产区一区二区三区在线观看| 久久天天躁狠狠躁夜夜爽蜜月| 日韩av电影手机在线| 欧美在线日韩在线| 欧美日韩性视频在线| 久久国产精品网站| 久久精品成人欧美大片| 色偷偷偷亚洲综合网另类| 亚洲老板91色精品久久| 日韩精品视频在线观看网址| 成人美女av在线直播| 欧美夫妻性生活视频| 亚洲xxxx视频| 精品亚洲一区二区三区在线播放| 最近2019年中文视频免费在线观看| 亚洲成在人线av| 亚洲国产精品成人精品| 国产精品视频网站| 国产成人精品在线观看| 国产成人久久久精品一区| 日韩最新中文字幕电影免费看| 北条麻妃在线一区二区| 亚洲精品国产综合久久| 亚洲国产成人av在线| 日韩av成人在线观看| 亚洲成人免费在线视频| 8050国产精品久久久久久| 国产亚洲激情视频在线| 成人妇女免费播放久久久| 国产狼人综合免费视频| 色av中文字幕一区| 成人久久久久久| 81精品国产乱码久久久久久| 久久久精品免费| 一本色道久久88综合亚洲精品ⅰ| 26uuu久久噜噜噜噜| 欧美大学生性色视频| 九九热这里只有精品6| 国产在线观看精品一区二区三区| 国产97在线|亚洲| 亚洲成人久久电影| 亚洲性生活视频| 久久久免费高清电视剧观看| 一区二区欧美在线| 一区二区av在线| 欧美巨猛xxxx猛交黑人97人| 国产成人精品久久亚洲高清不卡| 久久精品视频播放| 国产成人高潮免费观看精品| 欧美视频在线免费看| 久久艳片www.17c.com| 成人精品视频99在线观看免费| 欧美在线影院在线视频| 92国产精品视频| 久久久亚洲国产天美传媒修理工| 亚洲国产欧美在线成人app| 2019中文字幕在线免费观看| 国产成人精品一区| 日韩有码在线播放| 日本亚洲欧美成人| 亚洲一区二区三| 日韩在线激情视频| 日韩电影中文字幕| 久久精品国产欧美亚洲人人爽| 亚洲专区在线视频| 国产精品伦子伦免费视频| 深夜福利日韩在线看| www.亚洲成人| 在线播放国产一区中文字幕剧情欧美| 欧美激情一区二区三级高清视频| 欧美网站在线观看| 亚洲精品aⅴ中文字幕乱码| 欧美成人三级视频网站| 91久久精品国产91久久| 欧美贵妇videos办公室| 不卡毛片在线看| 国产精品影院在线观看| 亚州欧美日韩中文视频| 精品无人区太爽高潮在线播放| 精品国产自在精品国产浪潮| 97色伦亚洲国产| 中文字幕在线日韩| 久久成人人人人精品欧| 国产日韩视频在线观看| 国产欧美一区二区白浆黑人| 在线观看日韩欧美| 亚洲xxx视频| 精品国产福利在线| 日韩欧美在线视频免费观看| 国产91精品久久久久久| 久久亚洲精品一区二区| 成人福利网站在线观看| 96国产粉嫩美女| 日韩美女视频免费在线观看| 亚洲精品美女久久久| 日韩在线观看免费全| 精品国产精品三级精品av网址| 久久精品视频中文字幕| 亚洲欧美在线免费| 欧美国产日本高清在线| 精品毛片三在线观看| 精品视频在线播放色网色视频| 欧美精品日韩www.p站| 日韩中文字幕不卡视频| 亚洲最大福利视频网站| 国产精品久久久久久亚洲影视| 国模精品一区二区三区色天香| 911国产网站尤物在线观看| 日韩av片电影专区| 97在线观看免费高清|