日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Mybatis自定義typeHandle過程解析

瀏覽:23日期:2023-10-24 09:25:40

一 前言

本篇文章的基礎是建立在mybatis配置

二 準備工作

2.1建表語句

CREATE TABLE `customer` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT ’主鍵’, `customer_name` varchar(255) DEFAULT NULL COMMENT ’顧客名稱’, `gender` varchar(255) DEFAULT NULL COMMENT ’性別’, `telephone` varchar(255) DEFAULT NULL COMMENT ’電話號碼’, `register_time` timestamp NULL DEFAULT NULL COMMENT ’注冊時間’, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT=’顧客表’;

2.2 實體

public class Customer { // 主鍵 private Long id; // 客戶姓名 private String customer_name; // 性別 private String gender; // 電話 private String telephone; // 注冊時間 private Long register_time; // 省略 set get }

三 自定義TypeHandler

自定義TypeHandler實現(xiàn)一個業(yè)務邏輯就是 當插入數(shù)據(jù)時可以將時間戳轉為timestamp格式;當查詢數(shù)據(jù)得時候再將數(shù)據(jù)庫中得timestamp格式時間轉為時間戳;好吧知識追尋者也是無聊透頂了做這種操作,不過易于讀者理解;

/** * @Author lsc * <p> 一個無聊的業(yè)務邏輯 輸入的是時間戳,到數(shù)據(jù)庫中的是 timestamp 格式 輸出的又是時間戳 </p> */@MappedJdbcTypes(JdbcType.TIMESTAMP)@MappedTypes(Long.class)public class TimeStringHandler<T> extends BaseTypeHandler<T> { public void setNonNullParameter(PreparedStatement preparedStatement, int i, T t, JdbcType jdbcType) throws SQLException { // 將 時間戳轉為 LocalDateTime LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochSecond((java.lang.Long) t), ZoneOffset.ofHours(8)); // 參數(shù)設置 System.out.println('業(yè)務邏輯1'); preparedStatement.setString(i,localDateTime.toString()); } public T getNullableResult(ResultSet resultSet, String s) throws SQLException { System.out.println('業(yè)務邏輯2'); String time = resultSet.getString(s); LocalDateTime localDateTime = LocalDateTime.parse(time, DateTimeFormatter.ofPattern('yyyy-MM-dd HH:mm:ss')); Long second = localDateTime.toEpochSecond(ZoneOffset.ofHours(8)); return (T) second; } public T getNullableResult(ResultSet resultSet, int i) throws SQLException { System.out.println('業(yè)務邏輯3'); String time = resultSet.getString(i); LocalDateTime localDateTime = LocalDateTime.parse(time, DateTimeFormatter.ofPattern('yyyy-MM-dd HH:mm:ss')); Long second = localDateTime.toEpochSecond(ZoneOffset.ofHours(8)); return (T) second; } public T getNullableResult(CallableStatement callableStatement, int i) throws SQLException { System.out.println('業(yè)務邏輯4'); String time = callableStatement.getString(i); LocalDateTime localDateTime = LocalDateTime.parse(time, DateTimeFormatter.ofPattern('yyyy-MM-dd HH:mm:ss')); Long second = localDateTime.toEpochSecond(ZoneOffset.ofHours(8)); return (T) second; }}

四 mappe接口

public interface CustomerMapper { // 添加客戶 int addCustomer(Customer customer); // 查詢客戶 List<Customer> getCustomer();}

五 sql映射文件

sql映射文件中在使用得字段register_time中做專門得數(shù)據(jù)類型處理,這樣不用配置到全局配置文件中,可以針對特定字段處理是個不錯得選擇;這邊實現(xiàn)得邏輯是兩個部分,查詢語句用于返回時將register_time使用類型處理器處理;插入語句用于將數(shù)據(jù)進入數(shù)據(jù)庫時使用register_time使用類型處理器處理。

<?xml version='1.0' encoding='UTF-8' ?><!DOCTYPE mapper PUBLIC '-//mybatis.org//DTD Mapper 3.0//EN' 'http://mybatis.org/dtd/mybatis-3-mapper.dtd'><mapper namespace='com.zszxz.typehandler.mapper.CustomerMapper'> <resultMap type='customer' autoMapping='true'> <result column='register_time' property='register_time' typeHandler='com.zszxz.typehandler.handler.TimeStringHandler'></result> </resultMap> <select resultMap='customerMap' > select * from `customer` </select> <insert parameterType='customer'> insert into `customer`( `customer_name`, `gender`, `telephone`, `register_time` )values ( #{customer_name}, #{gender}, #{telephone}, #{register_time,javaType=Long,jdbcType=TIMESTAMP,typeHandler=com.zszxz.typehandler.handler.TimeStringHandler} ) </insert></mapper>

六測試類

測試類 也是分為2部分,查詢和新增部分;

/** * @Author lsc * <p> </p> */@RunWith(JUnit4.class)public class TypeHandlerTest { SqlSession sqlSession = null; // @Before 會在執(zhí)行測試類之前執(zhí)行該方法 @Before public void before() throws IOException { // 資源路徑 resource目錄下 String resource = 'mybatis-config.xml'; // 配置mybatis獲得輸入流 InputStream inputStream = Resources.getResourceAsStream(resource); // 創(chuàng)建 SqlSessionFactory SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); //從 SqlSessionFactory 中獲取 SqlSession sqlSession= sqlSessionFactory.openSession(); } @Test public void testInsert(){ // 獲得mapper的形式 CustomerMapper mapper = sqlSession.getMapper(CustomerMapper.class); Customer customer = new Customer(); customer.setCustomer_name('知識追尋者'); customer.setRegister_time(1580739214L); customer.setGender('男'); customer.setTelephone('999'); // 添加客戶 mapper.addCustomer(customer); sqlSession.commit(); sqlSession.close(); } @Test public void testSelect(){ // 獲得mapper的形式 CustomerMapper mapper = sqlSession.getMapper(CustomerMapper.class); List<Customer> customerList = mapper.getCustomer(); for (Customer customer :customerList){ System.out.println(customer.getCustomer_name()); System.out.println(customer.getRegister_time()); } sqlSession.commit(); sqlSession.close(); }}

七 測試插入數(shù)據(jù)

插入數(shù)據(jù)時原本register_time是時間戳,從打印得SQL參數(shù)2020-02-03T22:13:34(String)可以看見入庫時就變成了timestamp支持的格式入庫;

[DEBUG] 2020-02-03 23:39:33,018 method:org.apache.ibatis.logging.jdbc.BaseJdbcLogger.debug(BaseJdbcLogger.java:159)==> Preparing: insert into `customer`( `customer_name`, `gender`, `telephone`, `register_time` )values ( ?, ?, ?, ? ) 業(yè)務邏輯1[DEBUG] 2020-02-03 23:39:33,052 method:org.apache.ibatis.logging.jdbc.BaseJdbcLogger.debug(BaseJdbcLogger.java:159)==> Parameters: 知識追尋者(String), 男(String), 999(String), 2020-02-03T22:13:34(String)[DEBUG] 2020-02-03 23:39:33,116 method:org.apache.ibatis.logging.jdbc.BaseJdbcLogger.debug(BaseJdbcLogger.java:159)<== Updates: 1

八 測試查詢數(shù)據(jù)

原本數(shù)據(jù)庫中是timestamp支持的格式得時間,出來就是時間戳;

[DEBUG] 2020-02-03 23:39:00,371 method:org.apache.ibatis.logging.jdbc.BaseJdbcLogger.debug(BaseJdbcLogger.java:159)==> Preparing: select * from `customer` [DEBUG] 2020-02-03 23:39:00,410 method:org.apache.ibatis.logging.jdbc.BaseJdbcLogger.debug(BaseJdbcLogger.java:159)==> Parameters: 業(yè)務邏輯2[DEBUG] 2020-02-03 23:39:00,468 method:org.apache.ibatis.logging.jdbc.BaseJdbcLogger.debug(BaseJdbcLogger.java:159)<== Total: 1知識追尋者1580739214

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

相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲夜间福利| 在线视频日韩| 免费在线观看精品| 欧美日韩精品免费观看视欧美高清免费大片 | 欧美一区网站| 日韩一级网站| 桃色一区二区| 福利视频一区| 国产精品久久久免费| 亚洲午夜免费| 国产亚洲一区在线| 99久久精品费精品国产| 国产精品一区二区99| 美女91精品| 亚洲欧美日韩视频二区| 欧美影院三区| 久久黄色影院| 午夜精品久久久久久久久久蜜桃| 亚洲三区欧美一区国产二区| 黑丝一区二区| 红桃视频国产一区| 久久裸体视频| 激情五月色综合国产精品| 日韩中文字幕高清在线观看| 日韩久久精品| 日韩免费福利视频| 日韩中文字幕高清在线观看| 在线看片国产福利你懂的| 亚洲黄色免费看| 91精品一区二区三区综合在线爱| 日韩av首页| 欧美日中文字幕| 欧美在线亚洲| 亚洲国产专区校园欧美| 欧美精选一区二区三区| 好看不卡的中文字幕| 美女日韩在线中文字幕| 亚洲资源网站| 国产精品亚洲四区在线观看| 免费亚洲婷婷| 久久狠狠婷婷| 色综合视频一区二区三区日韩 | 亚洲国产福利| 亚洲午夜精品久久久久久app| 欧美日韩精品在线一区| 人人精品人人爱| 国产精品亚洲综合色区韩国| 日本一二区不卡| 亚洲一区欧美二区| 久久国产乱子精品免费女| 久久久男人天堂| 先锋影音久久久| 美女视频黄免费的久久| 亚洲va在线| 欧美一区91| 亚洲欧美综合| 麻豆精品久久| 亚洲在线网站| 国产一区二区三区四区大秀| 久久精品成人| 亚洲tv在线| 美女av在线免费看| 日本三级亚洲精品| 国产一区二区三区天码| 中文亚洲欧美| 国产精品99久久精品| 亚洲一区二区三区中文字幕在线观看 | 亚洲第一精品影视| 国产精品久久免费视频| 免费精品国产| 福利一区二区三区视频在线观看| 婷婷中文字幕一区| 国产日韩欧美一区二区三区| 亚洲欧美日韩高清在线| 福利欧美精品在线| 日本三级亚洲精品| 日韩精品一级中文字幕精品视频免费观看 | 久久香蕉精品香蕉| 亚洲开心激情| 久久99伊人| 久久国产高清| 九九久久婷婷| 欧美va亚洲va日韩∨a综合色| 欧美三区不卡| 日韩1区2区3区| 免费观看在线综合| 中文一区二区| 国产午夜久久| 亚洲免费毛片| 四虎精品一区二区免费| 亚洲精品日本| 日韩欧美久久| 国产探花一区| 色婷婷亚洲mv天堂mv在影片| 精品高清久久| 国产中文欧美日韩在线| 精品少妇av| 蜜桃av在线播放| 国产一区二区久久久久| 国产精品色在线网站| 国产精品对白久久久久粗| 久久午夜影院| 久久视频一区| 另类国产ts人妖高潮视频| 亚洲精品看片| 国际精品欧美精品| 婷婷激情综合| 国产欧美69| 日韩一区二区中文| 中日韩男男gay无套| 欧美片第1页综合| 精品三级在线观看视频| 女生影院久久| 国产成人精品亚洲日本在线观看| 不卡一区综合视频| 天海翼精品一区二区三区| 久久中文字幕一区二区| 日韩在线看片| 日本不卡一二三区黄网| 日韩1区在线| 亚洲一区欧美| 久久久久久网| 视频精品一区| 欧美一区二区三区高清视频| 丝袜美腿亚洲一区二区图片| 里番精品3d一二三区| 在线综合视频| 色婷婷色综合| 国产亚洲在线观看| 精品中文在线| 日本电影久久久| 午夜日韩av| 精品视频网站| 国产精品一区二区三区美女| 亚洲一区国产| 婷婷激情久久| 国产精品伦理久久久久久| 日韩av在线免费观看不卡| 婷婷中文字幕一区| 日韩精品看片| 成人综合一区| 国产精品22p| 97se亚洲| 蜜臀91精品一区二区三区| 婷婷六月综合| 在线观看精品| 中文字幕色婷婷在线视频| 麻豆中文一区二区| 国产精品毛片aⅴ一区二区三区| 亚州精品视频| 日韩在线一区二区| 91精品蜜臀一区二区三区在线 | 99国产精品免费视频观看| 在线手机中文字幕| 国内精品伊人| 精品资源在线| 欧美激情另类| 日韩不卡免费高清视频| 日韩一区二区中文| 国产91久久精品一区二区| 日韩视频网站在线观看| 成人欧美一区二区三区的电影| 麻豆精品新av中文字幕| 国产欧美精品久久| 国产探花一区在线观看| 日韩精选在线| 日本国产欧美| 国产日韩一区二区三免费高清 | 亚洲精品伊人| 国产精品一级在线观看| 国产精品片aa在线观看| 精品国产乱码久久久久久樱花| 欧美精品国产| 国产免费av一区二区三区| 国产精品v亚洲精品v日韩精品| 免费亚洲婷婷| 99xxxx成人网| 日韩天堂av| 久久高清国产| 久久久夜精品| 中文字幕日韩亚洲| 精品久久影院| 久久中文字幕av| 日韩视频久久| 欧洲在线一区| 亚洲成人va| 精品久久久亚洲| 麻豆视频一区二区| 91亚洲精品视频在线观看 | 国产一区二区三区探花| 成人看片网站| 一区二区不卡| 麻豆精品在线观看| 在线成人直播| 日韩精品乱码av一区二区| 欧美日本不卡| 99久久夜色精品国产亚洲1000部| 日韩综合小视频| 久久久久午夜电影| 欧美精品影院|