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),可以免费白嫖

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • bootstrap aria

    bootstrap aria

  • redis如何查看版本号_redis版本号

    redis如何查看版本号_redis版本号linux环境下查看redis的版本:查看redis的版本有两种方式:1.redis-server–version和redis-server-v 得到的结果是:Redisserverv=3.2.12sha=00000000:0malloc=jemalloc-3.6.0bits=641.redis-cli–version和redis-cli-…

    2022年10月19日
  • ICMP报文详解

    ICMP报文详解概述ICMP允许主机或路由报告差错情况和提供有关异常情况。ICMP是因特网的标准协议,但ICMP不是高层协议,而是IP层的协议。通常ICMP报文被IP层或更高层协议(TCP或UDP)使用。一些ICMP报文把差错报文返回给用户进程。ICMP报文作为IP层数据报的数据,加上数据报的首部,组成数据报发送出去。ICMP报文的种类有两种,即ICMP差错报告报文和ICMP询问报文。ICMP报文的格式类型:占8位代码:占8位检验和:占16位说明:ICMP所有报文的前4个.

  • 常用Lamda表达式

    常用Lamda表达式1、在工作中我们有部分lamda表达式经常会用到,在此做个小总结这里新建个实体类,来做测试publicclassLamdaVO{privateIntegerid;privateStringname;privateStringeamil;publicLamdaVO(){}publicLamdaVO(Integ…

  • JDBC预处理对象prepareStatement[通俗易懂]

    JDBC预处理对象prepareStatement[通俗易懂]JDBC预处理对象prepareStatement概述一、SQL注入问题SQL注入:用户输入的内容作为了SQL语句语法的一部分,改变了原有SQL真正的意义。假设有登录案例SQL语句如下:SELECT*FROM用户表WHERENAME=用户输入的用户名ANDPASSWORD=用户输的密码;此时,当用户输入正确的账号与密码后,查询到了信息则让用户登录。但是当用户输入的账…

  • VMware中卸载Ubuntu「建议收藏」

    VMware中卸载Ubuntu「建议收藏」1、右键>>管理>>从磁盘中删除2、点击“是”,磁盘路径安装Ubuntu的文件一并删除

发表回复

您的电子邮箱地址不会被公开。

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