@Reversed public class ReversedStringMapper implements ColumnMapper<String> { @Override public String map(ResultSet r, int columnNumber, StatementContext ctx) throws SQLException { return Reverser.reverse(r.getString(columnNumber)); } }
@Reversed public class ReversedStringArgumentFactory extends AbstractArgumentFactory<String> { public ReversedStringArgumentFactory() { super(Types.VARCHAR); } @Override protected Argument build(String value, ConfigRegistry config) { return (pos, stmt, ctx) -> stmt.setString(pos, Reverser.reverse(value)); } }
public QualifiedConstructorParamThing(int id, @Reversed String name) { this.id = id; this.name = name; }
@Reversed public String name() { return name; }
@Reversed class ReversedStringMapperFactory implements ColumnMapperFactory { @Override public Optional<ColumnMapper<?>> build(Type type, ConfigRegistry config) { if (String.class.equals(type)) { return Optional.of((rs, col, ctx) -> Reverser.reverse(rs.getString(col))); } return Optional.empty(); } }
@Reversed // split comma separated list and reverse each element public static class ReversedListStringMapper implements ColumnMapper<List<String>> { @Override public List<String> map(ResultSet r, int columnNumber, StatementContext ctx) throws SQLException { return Splitter.on(",") .splitToList(r.getString(columnNumber)) .stream() .map(Reverser::reverse) .collect(toList()); } }
@Reversed public String getName() { return name; }
public void setName(@Reversed String name) { this.name = name; }
@Reversed public void setName(String name) { this.name = name; }
@Reversed @Column public String getName() { return name; }
@Reversed @Column public void setName(String name) { this.name = name; }
@Column public void setName(@Reversed String name) { this.name = name; }
@Reversed @UpperCase static class ReversedUpperCaseStringArgumentFactory extends AbstractArgumentFactory<String> { ReversedUpperCaseStringArgumentFactory() { super(Types.VARCHAR); } @Override protected Argument build(String value, ConfigRegistry config) { return (pos, stmt, ctx) -> stmt.setString(pos, reverse(value).toUpperCase()); } }
@Reversed @UpperCase static class ReversedUpperCaseStringMapper implements ColumnMapper<String> { @Override public String map(ResultSet r, int columnNumber, StatementContext ctx) throws SQLException { return reverse(r.getString(columnNumber)).toUpperCase(); } }
@SqlQuery("select name from stuff order by id") @Reversed List<String> multipleRows();
@SqlQuery("select name from something order by id") @Reversed ResultIterable<String> resultIterableNames();
@SqlQuery("select name from something order by id") @Reversed ResultIterator<String> resultIteratorNames();
@SqlQuery("select name from something where id = :id") @Reversed String getName(int id);
@SqlQuery("select name from something order by id") @Reversed Stream<String> streamNames();
@SqlUpdate("insert into something (id, name) values (:id, :name)") void insert(int id, @Reversed String name);