DatabaseFieldStrategy<T> strat = new DatabaseFieldStrategy<>();
for (Field f : t.getClass().getDeclaredFields()) {
DatabaseField db = f.getAnnotation(DatabaseField.class);
if (strat.isNotKey(db) && !strat.hasDefault(db)) {
DatabaseType type = db.type();
f.setAccessible(true);
strat.processFieldForStatement(type, f, t, ps, i);
i++;