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


相关推荐

  • 最全java面试题及答案(208道)「建议收藏」

    最全java面试题及答案(208道)「建议收藏」本文分为十九个模块,分别是:「Java基础、容器、多线程、反射、对象拷贝、JavaWeb、异常、网络、设计模式、Spring/SpringMVC、SpringBoot/SpringCloud、Hibernate、MyBatis、RabbitMQ、Kafka、Zookeeper、MySQL、Redis、JVM」,如下图所示:共包含208道面试题,本文的宗旨是为读者朋友们整理一份详实而又权威的面试清单,下面一起进入主题吧。Java基础1.JDK和JRE有什么区别?…

    2022年8月10日
  • 退出卸载360、QAX 天擎,无需密码

    退出卸载360、QAX 天擎,无需密码退出卸载360、QAX天擎,无需密码天擎企业版,退出和卸载是需要管理员密码进入360天擎,点击设置=>防护中心=>自我保护功能,去掉勾选,确认\360Safe\EntClient\conf\EntBase.dat目录目录查找:在桌面右下角找到天擎应用程序右键,进入程序安装位置,即可进入安装目录EntBase.dat文件删除uipassqtpass两行=后面的两个字符串即可关闭退出卸载密码。这里如果没有权限无法修改,先将EntBase.dat复制到其他文件夹(

    2022年9月24日
  • JDBC_3 数据库事物

    JDBC_3 数据库事物数据库事务数据一旦提交,就不可回滚那些操作会导致数据的自动提交?DDL操作一旦执行,都会自动提交-. set autocommit = false不起作用DML默认情况下,一旦执行就会自动提交-. 可以设置set autocommit = false关闭连接的时候会自动提交 Connection connection = DriverManager.getConnection(url, user, password); connection.setAutoCommit

    2022年8月8日
  • targetSdk27 FileProvider 摄像和照相[通俗易懂]

    targetSdk27 FileProvider 摄像和照相[通俗易懂]推荐Github开源项目SelectImgAsWechath:https://github.com/SCCXYS/SelectImgAsWechat参考地址:AndroidFileProvider详细解析和踩坑指南开始以下,调用相机的代码出自开源项目SelectImgAsWechath。权限<!–拍照–><uses-permissionandroid:name=”android.permission.CAMERA”/><!

    2022年7月21日
  • 2批处理for循环中截取字符串_批处理for循环嵌套

    2批处理for循环中截取字符串_批处理for循环嵌套一、参数/dfor/d%%变量in(集)do命令/d参数是指定仅对目录而不是文件执行的for命令。例1:在命令行输入(不是在批处理,之后不再解释)for/d%ain(c:\*.*)doecho%a运行会把C盘根目录下的全部目录分次显示出来,而不显示文件名看起来有点乱,如果把命令提示回显关闭就清晰了:for/d%ain(c:\*….

    2022年10月12日
  • linux压缩命令常用:tar,tgz,gzip,zip,rar

    linux压缩命令常用:tar,tgz,gzip,zip,rarlinux压缩命令常用的有三个:tar,tgz,gzip,zip一,tar(一)tar压缩命令tar-cvfexamples.tarfiles|dir#说明:-c,–createcreateanewarchive创建一个归档文件-v,–verboseverboselylistfilesprocessed显示创建归档文件的进程-f,…

    2022年5月9日

发表回复

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

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