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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 如何学习FPGA「建议收藏」

    如何学习FPGA「建议收藏」PS:笔者强烈建议诸位注册一个EETOP的账号,每天签到或者发贴、回贴就有积分了,里面的资源非常丰富,各种软件、资料都能找到。一、入门首先要掌握HDL(HDL=verilog+VHDL)。第一句话是:还没学数电的先学数电。然后你可以选择verilog或者VHDL,有C语言基础的,建议选择VHDL。因为verilog太像C了,很容易混淆,最后你会发现,你花了大量时间…

    2022年5月3日
    80
  • idea2022.01.12密钥激活码[最新免费获取]

    (idea2022.01.12密钥激活码)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年4月1日
    938
  • 服务器地址和端口号是什么怎么看_常见服务对应的端口号

    服务器地址和端口号是什么怎么看_常见服务对应的端口号常用端口号与对应的服务以及端口关闭端口简介:本文介绍端口的概念,分类,以及如何关闭/开启一个端口21端口:21端口主要用于FTP(FileTransferProtocol,文件传输协议)服务。

    2022年8月4日
    11
  • 数据结构与算法 队列_数据结构中的排序算法

    数据结构与算法 队列_数据结构中的排序算法一、什么是队列队列是一种特殊的线性表。队列元素的进出遵循“先进先出”原则:即只允许在前端(front)也就是队头进行删除操作,而只能在后端(rear)也就是队尾进行插入操作。如图所示:队列的最

    2022年8月16日
    7
  • django pycharm_pycharm调试django

    django pycharm_pycharm调试django前言:主要是在开发过程中一些采坑和记录,整理一下资料以防自己以后忘了,也为正在初学或者还未特别熟练使用django的同学能够避开这些,且能够系统性的学习django的使用,这里就不写目录了按照我自己的开发顺序来,大家看到专栏里面的文章顺序就是我的目录了,在本专栏里的代码争取让大家拿到就能用,做一个伸手党,网上好多代码不知道是版本原因还是其他简直是无语,不能用还一堆bug。…

    2022年8月28日
    2
  • linux系统移植的一般过程_内核移植的基本步骤

    linux系统移植的一般过程_内核移植的基本步骤在众多嵌入式操作系统中,Linux目前发展最快、应用最为广泛。性能优良、源码开放的Linux具有体积小、内核可裁减、网络功能完善、可移植性强等诸多优点,非常适合作为嵌入式操作系统。一个最基本的Linux操作系统应该包括:引导程序、内核与根文件系统三部分。  嵌入式Linux系统移植主要由四大部分组成:  一、搭建交叉开发环境  二、bootloader的选择和移植  三、kernel的配置、编译、…

    2022年9月25日
    5

发表回复

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

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