Se você tem um Java Bean com muitos atributos, você pode optar por configurá-los com os tipos padrão e apenas sobrescrever aqueles em que você deseja algum tipo diferente. A classe AutoBeanConfig oferece essa funcionalidade como podemos ver abaixo:
BeanConfig config = new AutoBeanConfig(User.class, "Users"); // agora sobre-escreva as propriedades que vc quer definir manualmente, pois a configuração padrão não lhe atende... config.pk("id", DBTypes.AUTOINCREMENT); config.field("birthdate", "bd", DBTypes.DATE); config.field("status", DBTypes.ENUMVALUE.from(User.Status.class)); config.field("deleted", DBTypes.BOOLEANINT); config.field("insertTime", "insert_time", DBTypes.NOW_ON_INSERT_TIMESTAMP);
Os tipos assumidos pelo AutoBeanConfig são os seguintes:
public static DBType<?> from(Class<? extends Object> klass) { if (klass.equals(String.class)) { return DBTypes.STRING; } else if (klass.equals(Integer.class) || klass.equals(int.class)) { return DBTypes.INTEGER; } else if (klass.equals(Date.class)) { return DBTypes.TIMESTAMP; } else if (klass.equals(Long.class) || klass.equals(long.class)) { return DBTypes.LONG; } else if (klass.equals(Double.class) || klass.equals(double.class)) { return DBTypes.DOUBLE; } else if (klass.equals(Float.class) || klass.equals(float.class)) { return DBTypes.FLOAT; } else if (klass.equals(Boolean.class) || klass.equals(boolean.class)) { return DBTypes.BOOLEANSTRING; } else if (klass.equals(BigDecimal.class)) { return DBTypes.BIGDECIMAL; } else if (klass.isEnum()) { return DBTypes.ENUMVALUE.from((Class<? extends Enum<?>>) klass); } return null; }
O AutoBeanConfig não configura a chave primária ou tipos especiais tais como NOW_ON_UPDATE_TIMESTAMP ou AUTOTIMESTAMP. Nestes casos, você deve sobrescrever (reconfigurar a propriedade) explicitamente. Isso também deve ser feito nos casos onde a coluna do banco difere do nome do atributo especificado na classe. Se o seu bean possui algum atributo que você não deseja mapear para o banco de dados, basta você chamar o método config.remove(seu_atributo) após instanciar o AutoBeanConfig. Por padrão o AutoBeanConfig não sabe quais propriedades deve mapear, portanto todas elas são incluídas.