package com.gitee.dbswitch.dbwriter.util;
import com.gitee.dbswitch.common.util.TypeConvertUtils;
import java.lang.reflect.Method;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.ZoneId;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
@Slf4j
public final class ObjectCastUtils {
private ObjectCastUtils() {
throw new IllegalStateException("Utility class can not create instance!");
}
/**
* 将java.sql.Clob类型转换为java.lang.String类型
*
* @param clob java.sql.Clob类型对象
* @return java.lang.String类型数据
*/
public static String clob2Str(java.sql.Clob clob) {
return TypeConvertUtils.clob2Str(clob);
}
/**
* 将java.sql.Blob类型转换为byte数组
*
* @param blob java.sql.Blob类型对象
* @return byte数组
*/
public static byte[] blob2Bytes(java.sql.Blob blob) {
return TypeConvertUtils.blob2Bytes(blob);
}
/**
* 将Object对象转换为字节数组
*
* @param in 对象
* @return 字节数组
*/
public static byte[] toByteArray(Object in) {
return TypeConvertUtils.castToByteArray(in);
}
/**
* 将任意类型转换为java.lang.String类型
*
* @param in 任意类型的对象实例
* @return java.lang.String类型
*/
public static String castToString(final Object in) {
return TypeConvertUtils.castToString(in);
}
/**
* 将任意类型转换为java.lang.Byte类型
*
* @param in 任意类型的对象实例
* @return java.lang.Byte类型
*/
public static Byte castToByte(final Object in) {
if (in instanceof java.lang.Number) {
return ((java.lang.Number) in).byteValue();
} else if (in instanceof java.util.Date) {
return Long.valueOf(((java.util.Date) in).getTime()).byteValue();
} else if (in instanceof java.lang.String) {
try {
return Byte.parseByte(in.toString());
} catch (NumberFormatException e) {
throw new RuntimeException(
String.format("无法将java.lang.String类型转换为java.lang.Byte类型:%s", e.getMessage()));
}
} else if (in instanceof java.lang.Character) {
try {
return Byte.parseByte(in.toString());
} catch (NumberFormatException e) {
throw new RuntimeException(
String.format("无法将java.lang.Character类型转换为java.lang.Byte类型:%s", e.getMessage()));
}
} else if (in instanceof java.sql.Clob) {
try {
return Byte.parseByte(clob2Str((java.sql.Clob) in));
} catch (NumberFormatException e) {
throw new RuntimeException(
String.format("无法将java.sql.Clob类型转换为java.lang.Byte类型:%s", e.getMessage()));
}
} else if (in instanceof java.lang.Boolean) {
return (java.lang.Boolean) in ? (byte) 1 : (byte) 0;
}
return null;
}
/**
* 将任意类型转换为java.lang.Short类型
*
* @param in 任意类型的对象实例
* @return java.lang.Short类型
*/
public static Short castToShort(final Object in) {
if (in instanceof java.lang.Number) {
return ((java.lang.Number) in).shortValue();
} else if (in instanceof java.lang.Byte) {
return (short) (((byte) in) & 0xff);
} else if (in instanceof java.util.Date) {
return (short) ((java.util.Date) in).getTime();
} else if (in instanceof java.util.Calendar) {
return (short) ((java.util.Calendar) in).getTime().getTime();
} else if (in instanceof java.time.LocalDateTime) {
return (short) java.sql.Timestamp.valueOf((java.time.LocalDateTime) in).getTime();
} else if (in instanceof java.time.OffsetDateTime) {
return (short) java.sql.Timestamp.valueOf(((java.time.OffsetDateTime) in).toLocalDateTime())
.getTime();
} else if (in instanceof java.lang.String || in instanceof java.lang.Character) {
try {
String s = in.toString().trim();
if (s.equalsIgnoreCase("true")) {
return Short.valueOf((short) 1);
} else if (s.equalsIgnoreCase("false")) {
return Short.valueOf((short) 0);
} else {
return Short.parseShort(s);
}
} catch (NumberFormatException e) {
throw new RuntimeException(
String.format("无法将java.lang.String类型转换为java.lang.Short类型:%s", e.getMessage()));
}
} else if (in instanceof java.sql.Clob) {
try {
String s = clob2Str((java.sql.Clob) in).trim();
if (s.equalsIgnoreCase("true")) {
return Short.valueOf((short) 1);
} else if (s.equalsIgnoreCase("false")) {
return Short.valueOf((short) 0);
} else {
return Short.parseShort(s);
}
} catch (NumberFormatException e) {
throw new RuntimeException(
String.format("无法将java.sql.Clob类型转换为java.lang.Short类型:%s", e.getMessage()));
}
} else if (in instanceof java.lang.Boolean) {
return (java.lang.Boolean) in ? (short) 1 : (short) 0;
}
return null;
}
/**
* 将任意类型转换为java.lang.Integer类型
*
* @param in 任意类型的对象实例
* @return java.lang.Integer类型
*/
public static Integer castToInteger(final Object in) {
if (in instanceof java.lang.Number) {
return ((java.lang.Number) in).intValue();
} else if (in instanceof java.lang.Byte) {
return (((byte) in) & 0xff);
} else if (in instanceof java.util.Date) {
return (int) ((java.util.Date) in).getTime();
} else if (in instanceof java.util.Calendar) {
return (int) ((java.util.Calendar) in).getTime().getTime();
} else if (in instanceof java.time.LocalDateTime) {
return (int) java.sql.Timestamp.valueOf((java.time.LocalDateTime) in).getTime();
} else if (in instanceof java.time.OffsetDateTime) {
return (int) java.sql.Timestamp.valueOf(((java.time.OffsetDateTime) in).toLocalDateTime())
.getTime();
} else if (in instanceof java.lang.String || in instanceof java.lang.Character) {
try {
String s = in.toString().trim();
if (s.equalsIgnoreCase("true")) {
return Integer.valueOf(1);
} else if (s.equalsIgnoreCase("false")) {
return Integer.valueOf(0);
} else {
return Integer.parseInt(s);
}
} catch (NumberFormatException e) {
throw new RuntimeException(
String.format("无法将java.lang.String类型转换为java.lang.Integer类型:%s", e.getMessage()));
}
} else if (in instanceof java.sql.Clob) {
try {
String s = clob2Str((java.sql.Clob) in).trim();
if (s.equalsIgnoreCase("true")) {
return Integer.valueOf(1);
} else if (s.equalsIgnoreCase("false")) {
return Integer.valueOf(0);
} else {
return Integer.parseInt(s);
}
} catch (NumberFormatException e) {
throw new RuntimeException(
String.format("无法将java.sql.Clob类型转换为java.lang.Integer类型:%s", e.getMessage()));
}
} else if (in instanceof java.lang.Boolean) {
return (java.lang.Boolean) in ? (int) 1 : (int) 0;
}
return null;
}
/**
* 将任意类型转换为java.lang.Long类型
*
* @param in 任意类型的对象实例
* @return java.lang.Long类型
*/
public static Long castToLong(final Object in) {
if (in instanceof java.lang.Number) {
return ((java.lang.Number) in).longValue();
} else if (in instanceof java.lang.Byte) {
return (long) (((byte) in) & 0xff);
} else if (in instanceof java.util.Date) {
return ((java.util.Date) in).getTime();
} else if (in instanceof java.util.Calendar) {
return ((java.util.Calendar) in).getTime().getTime();
} else if (in instanceof java.time.LocalDateTime) {
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
异构数据库迁移同步(搬家)工具。dbswitch工具提供源端数据库向目的端数据库的批量迁移同步功能,支持数据的全量和增量方式同步。包括:结构迁移 支持字段类型、主键信息、建表语句等的转换,并生成建表SQL语句。 支持基于正则表达式转换的表名与字段名映射转换。 数据同步。 基于JDBC的分批次读取源端数据库数据,并基于insert/copy方式将数据分批次写入目的数据库。支持有主键表的 增量变更同步 (变化数据计算Change Data Calculate)功能(千万级以上数据量的性能尚需在生产环境验证)
资源推荐
资源详情
资源评论
收起资源包目录
dbswitch-master.zip (501个子文件)
datasync.cmd 1KB
startup.cmd 1KB
version.cmd 316B
build.cmd 153B
app.8d8b93449d4031c291ff1ea0b9cd7542.css 246KB
demo.css 8KB
iconfont.css 486B
Dockerfile 314B
.gitignore 267B
.gitkeep 0B
.gitkeep 0B
demo_index.html 10KB
index.html 526B
index.html 286B
ojdbc8-19.3.0.0.jar 4.02MB
oscarJDBC8.jar 3.39MB
jconn4.jar 1.81MB
kingbase8-8.6.0.jar 1017KB
gbase-connector-java-8.3.81.53-build55.5.3-bin.jar 695KB
DmJdbcDriver18.jar 598KB
sqljdbc4-4.0.jar 571KB
msbase.jar 294KB
mssqlserver.jar 67KB
msutil.jar 63KB
ObjectCastUtils.java 30KB
StructureController.java 21KB
MigrationHandler.java 20KB
ChangeCalculatorService.java 17KB
GreenplumCopyWriterImpl.java 16KB
SimpleRow.java 16KB
AbstractMapping.java 13KB
ColumnMetaData.java 13KB
AssignmentService.java 12KB
JDBCURL.java 12KB
DatabaseSqlserverImpl.java 11KB
MigrationService.java 11KB
AbstractDatabase.java 10KB
DbConnectionService.java 10KB
AbstractDatabaseSynchronize.java 9KB
DatabaseMysqlImpl.java 9KB
DatabaseSybaseImpl.java 8KB
MetaDataByDescriptionServiceImpl.java 8KB
DatabaseOracleImpl.java 8KB
GeneratorController.java 8KB
DatabasePostgresImpl.java 8KB
LogAdviceAspect.java 7KB
DatabaseDB2Impl.java 7KB
JobExecutorService.java 7KB
TypeConvertUtils.java 7KB
JdbcUrlUtils.java 7KB
DatabaseGreenplumImpl.java 7KB
CalciteSqlConvertServiceImpl.java 7KB
DatabaseHiveImpl.java 7KB
MetaDataByDataSourceServiceImpl.java 7KB
MetaDataByJdbcServiceImpl.java 6KB
DatabaseOscarImpl.java 6KB
DatabaseKingbaseImpl.java 6KB
OracleDatabaseSyncImpl.java 6KB
ObjectIdentifier.java 6KB
QuartzConfig.java 6KB
DatabaseDmImpl.java 6KB
MetaDataService.java 6KB
PostgresqlConst.java 6KB
ScheduleService.java 6KB
DbConnectionController.java 6KB
PatternMapperService.java 5KB
AbstractDatabaseWriter.java 5KB
IMetaDataByJdbcService.java 5KB
PgBinaryWriter.java 5KB
MySqlDialectImpl.java 5KB
IDatabaseInterface.java 5KB
DatabaseSqliteImpl.java 5KB
TheMssqlSqlDialect.java 5KB
AssignmentController.java 5KB
AssigmentCreateRequest.java 5KB
DdlSqlAlterTable.java 5KB
DatabaseAwareUtils.java 4KB
PostgresDialectImpl.java 4KB
SQLServerConst.java 4KB
TheMysqlSqlDialect.java 4KB
Range.java 4KB
DataSourceUtils.java 4KB
SimpleRowWriter.java 4KB
MySqlWriterImpl.java 4KB
OracleDialectImpl.java 4KB
SupportDbTypeEnum.java 4KB
AssigmentUpdateRequest.java 4KB
JdbcTypesUtils.java 4KB
GenerateSqlUtils.java 4KB
ColumnDescription.java 4KB
ThePostgresqlSqlDialect.java 4KB
SqlServerWriterImpl.java 4KB
Sqlite3DatabaseSyncImpl.java 4KB
ValueHandlerProvider.java 4KB
TheSqlOrderBy.java 4KB
InterceptorConfig.java 4KB
TheOracleSqlDialect.java 4KB
DatabaseWriterFactory.java 3KB
BigDecimalValueHandler.java 3KB
DDLFormatterUtils.java 3KB
共 501 条
- 1
- 2
- 3
- 4
- 5
- 6
资源评论
m0_72731342
- 粉丝: 2
- 资源: 1832
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功