datax(13):源码解读Column-datax中的数据类型

datax(13):源码解读Column-datax中的数据类型一、基类Column概述Column是datax中所有数据类型的基类,里面有3个属性,以及一个构造方法,外加一个枚举类;publicabstractclassColumn{ privateTypetype; privateObjectrawData; privateintbyteSize; publicColumn(finalObjectobject,finalTypetype,intbyteSize){ this.rawData=objec

大家好,又见面了,我是你们的朋友全栈君。

一、基类Column概述

Column是datax中所有数据类型的基类,里面有3个属性,以及一个构造方法,外加一个枚举类;

public abstract class Column { 
   

	private Type type;

	private Object rawData;

	private int byteSize;

	public Column(final Object object, final Type type, int byteSize) { 
   
		this.rawData = object;
		this.type = type;
		this.byteSize = byteSize;
	}

	//省去其他非关键方法

	public enum Type { 
   
		BAD, NULL, INT, LONG, DOUBLE, STRING, BOOL, DATE, BYTES
	}
}

二、Column衍生出的类型对象

一个爷爷衍生出的7个金刚葫芦娃
在这里插入图片描述

在这里插入图片描述

三、用Column及其子类构建出的记录对象Record

Record家族系列(一般情况下DefaultRecord使用较多)
在这里插入图片描述
在这里插入图片描述
可以通过idea的全局搜索 record.addColumn方法,看看各个读插件是怎么转成Datax内部Column的。具体方法在Record中

基类Record
  /** * 给该record 添加列 * * @param column */
  void addColumn(Column column);

实现类DefaultRecord

	@Override
	public void addColumn(Column column) { 
   
		columns.add(column);
		incrByteSize(column);
	}

四、创建Record的RecordSender类

RecordSender主要方法
在这里插入图片描述
RecordSender家族类

在这里插入图片描述
RecordSender主要通过createRecord来构建一个Record


五、RecordSender,Record,Column关系总结

1、RecordSender中Record createRecord() 可以创建一个Record
2、Record中void addColumn(Column column)可以将column添加到该记录中


注:

  1. 对源码进行略微改动,主要修改为 1 阿里代码规约扫描出来的,2 clean code;

  2. 所有代码都已经上传到github(master分支和dev),可以免费白嫖

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/145406.html原文链接:https://javaforall.net

(0)
上一篇 2022年5月17日 下午2:00
下一篇 2022年5月17日 下午2:00


相关推荐

  • silverlight开发_net网站例子

    silverlight开发_net网站例子http://money.finance.sina.com.cn/silverlight/Sina财经Silverlight4.0版http://vip.stock.finance.sina.com.cn/silverpulsehttp://pjd.mscui.net/default.htmhttp://www.silverlight.net 学习网站:http:/

    2022年10月10日
    7
  • LoadLibrary失败

    LoadLibrary失败LoadLibrary失败 今天同事遇到一个问题,经高手指点,完美解决。不过解决方法总是感觉有点不妥,不知道有没有其它方法。 正常情况,在一个exe中LoadLibrary(DLL1)可以获得正常的结果; 但是,当我们需要load的DLL1如果调用了其它的DLL2,那么我们就会得到一个结果:Theprogramcantstartbecause****.dl

    2022年7月26日
    23
  • ADFS配置

    ADFS配置https blog joden123 top 2019 03 11 sso adfs adfs install

    2025年6月13日
    7
  • JQuery-学习笔记03【基础——DOM操作】「建议收藏」

    JQuery-学习笔记03【基础——DOM操作】「建议收藏」JQuery-学习笔记03【基础——DOM操作】

    2025年10月29日
    4
  • 小米高通9008授权MiFlash刷机免认证思路

    小米高通9008授权MiFlash刷机免认证思路小米最新机型都对 9008 进行了加锁 即线刷只能 fastboot 线刷 无法使用 9008 线刷 以后的新机型肯定会继续对 9008 加锁的 这对玩机来说 是一个非常困难事儿了 必须激活成功教程之 不然以后新机型都没得玩了 经过我多日的研究 很大概率 不敢说 100 但是有 99 的把握认为是小米对线刷包中的 prog ufs firehose sdm855 ddr elf 文件 是个二进制文件 9008 线刷就是靠它 进行了加密 miflash 进行 9008 线刷 其实本质就是调用高通的驱动 高通线刷工具叫

    2026年3月18日
    2
  • 【Windows网络编程】完成端口IOCP介绍(超详细)

    【Windows网络编程】完成端口IOCP介绍(超详细)这篇文档我非常详细并且图文并茂的介绍了关于网络编程模型中完成端口的方方面面的信息,从API的用法到使用的步骤,从完成端口的实现机理到实际使用的注意事项,都有所涉及,并且为了让朋友们更直观的体会完成端口的用法,本文附带了有详尽注释的使用MFC编写的图形界面的示例代码。       我的初衷是希望写一份互联网上能找到的最详尽的关于完成端口的教学文档,而且让对Socket编程略有了解的人都能够

    2022年4月18日
    357

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号