public DbColumnBuilder(String name,int typeCode,int length,boolean nullable) { this.name = name; this.typeCode = typeCode; this.typeName = JdbcTypes.forTypeCode(typeCode).getName(); this.length = length; this.nullable = nullable; }
public DbColumnBuilder setTypeCode(Integer typeCode) { this.typeCode = typeCode; if(null != typeCode){ this.typeName = JdbcTypes.forTypeCode(typeCode).getName(); }else{ this.typeName = null; } return this; }
@Override public String toSqlDefaultValue(int typeCode, Object value) { if (Types.BOOLEAN == typeCode || Types.BIT == typeCode) { Boolean bool = Converts.toBoolean(value); return bool ? getBooleanTrueString() : getBooleanFalseString(); } JdbcType type = JdbcTypes.forTypeCode(typeCode); if (type.getKind().isNumeric()) { return Converts.toString(value); } else { String s = Converts.toString(value); if (s.endsWith(")")) { return s; } else if (s.startsWith("'") && s.endsWith("'")) { return s; } else if (typeCode == Types.VARCHAR || typeCode == Types.CHAR) { return "'" + Converts.toString(value) + "'"; } else { return s; } } }
protected Object readColumnValueForMap(DbDialect dialect,ResultSet rs,ResultColumnMapping cm,FieldMapping fm, int index) throws SQLException{ Object value = dialect.getColumnValue(rs, index, cm.getColumnType()); if(null != value){ if(null == fm) { Class<?> targetType = JdbcTypes.forTypeCode(cm.getColumnType()).getDefaultReadType(); value = Converts.convert(value, targetType); }else{ if(null != fm.getSerializer()) { value = fm.getSerializer().deserialize(fm, value); } } } return value; }
column.setTypeCode(rs.getInt(COLUMN_TYPE)); JdbcType jdbcType = JdbcTypes.forTypeCode(column.getTypeCode());
protected DbColumnType getColumnType(DbColumn column) { JdbcType jdbcType = JdbcTypes.forTypeCode(column.getTypeCode()); DbColumnType columnType = columnTypes.get(jdbcType.getCode(), column.getLength()); if (null == columnType) { throw new DbException(Strings.format( "Unsupported column type '{0}' defined in column '{1}'", jdbcType.getName(), column.getName())); } if (!columnType.matchesLength(column.getLength())) { throw new DbException("Length must in range " + columnType.getRangeString() + " in column '" + column.getName() + "'"); } return columnType; }
@Override public FieldMapping build() { if(null == javaType){ javaType = null != beanProperty ? beanProperty.getType() : JdbcTypes.forTypeCode(column.getTypeCode()).getDefaultReadType();
@Override public FieldMappingBuilder createFieldMappingByColumn(MetadataContext context, EntityMappingBuilder emb, DbColumn column) { DbColumnBuilder cb = new DbColumnBuilder(column); FieldMappingBuilder fmb = new FieldMappingBuilder(); fmb.setColumn(cb); fmb.setFieldName(context.getNamingStrategy().columnToFieldName(column.getName())); fmb.setJavaType(JdbcTypes.forTypeCode(column.getTypeCode()).getDefaultReadType()); Domain domain = context.getMetadata().domains().autoMapping(emb.getEntityName(), fmb.getFieldName()); if(null != domain){ configFieldMappingByDomain(emb, fmb, domain); } preMappingField(context, emb, fmb); postMappingField(context, emb, fmb); return fmb; }
protected Object readColumnValue(DbDialect dialect,ResultSet rs,ResultColumnMapping cm,FieldMapping fm, int index) throws SQLException{ Object value = dialect.getColumnValue(rs, index, cm.getColumnType()); if(null != value){ if(null == fm) { Class<?> targetType = JdbcTypes.forTypeCode(cm.getColumnType()).getDefaultReadType(); value = Converts.convert(value, targetType); }else{ BeanProperty bp = fm.getBeanProperty(); if(null != bp) { if(null != fm.getSerializer()) { value = fm.getSerializer().deserialize(fm, value, bp.getType(), bp.getGenericType()); }else{ value = Converts.convert(value, bp.getType(), bp.getGenericType()); } }else { if(null != fm.getSerializer()){ value = fm.getSerializer().deserialize(fm, value); } } } } return value; }