Skip to content

Instantly share code, notes, and snippets.

@rsds143
Created April 29, 2016 21:58
Show Gist options
  • Select an option

  • Save rsds143/c9b8c5b17fa002ba01aba38838ffa30b to your computer and use it in GitHub Desktop.

Select an option

Save rsds143/c9b8c5b17fa002ba01aba38838ffa30b to your computer and use it in GitHub Desktop.
JdbcDialect dialect = new JdbcDialect() {
@Override
public boolean canHandle(String url) {
return url.startsWith("jdbc:oracle")
|| url.contains("oracle");
}
@Override
public Option<JdbcType> getJDBCType(DataType dt) {
if(DataTypes.StringType.sameType(dt)) {
return Option.apply(new JdbcType("VARCHAR2(255)", java.sql.Types.VARCHAR));
} else if(DataTypes.BooleanType.sameType(dt)){
return Option.apply(new JdbcType("NUMBER(1)", java.sql.Types.NUMERIC));
} else if(DataTypes.IntegerType.sameType(dt)) {
return Option.apply(new JdbcType("NUMBER(10)", java.sql.Types.NUMERIC));
} else if(DataTypes.LongType.sameType(dt)) {
return Option.apply(new JdbcType("NUMBER(19)", java.sql.Types.NUMERIC));
} else if(DataTypes.DoubleType.sameType(dt)) {
return Option.apply(new JdbcType("NUMBER(19,4)", java.sql.Types.NUMERIC));
} else if(DataTypes.FloatType.sameType(dt)) {
return Option.apply(new JdbcType("NUMBER(19,4)", java.sql.Types.NUMERIC));
} else if(DataTypes.ShortType.sameType(dt)) {
return Option.apply(new JdbcType("NUMBER(5)", java.sql.Types.NUMERIC));
} else if(DataTypes.ByteType.sameType(dt)) {
return Option.apply(new JdbcType("NUMBER(3)", java.sql.Types.NUMERIC));
} else if(DataTypes.BinaryType.sameType(dt)) {
return Option.apply(new JdbcType("BLOB", java.sql.Types.BLOB));
} else if(DataTypes.TimestampType.sameType(dt)) {
return Option.apply(new JdbcType("DATE", Types.DATE));
} else if(DataTypes.DateType.sameType(dt)) {
return Option.apply(new JdbcType("DATE", Types.DATE));
} else if(DataTypes.createDecimalType().sameType(dt)) { //unlimited
// return DecimalType.Fixed(precision, scale)
=> Some(JdbcType("NUMBER(" + precision + "," + scale + ")",
java.sql.Types.NUMERIC))
return Option.apply(
new JdbcType("NUMBER(38,4)", Types.NUMERIC));
}
return Option.empty();
}
};
JdbcDialects.registerDialect(dialect);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment