@Override protected Argument build(String value, ConfigRegistry config) { return (pos, stmt, ctx) -> stmt.setString(pos, Reverser.reverse(value)); } }
@Override public String map(ResultSet r, int columnNumber, StatementContext ctx) throws SQLException { return Reverser.reverse(r.getString(columnNumber)); } }
@Override protected Argument build(String value, ConfigRegistry config) { return (pos, stmt, ctx) -> stmt.setString(pos, reverse(value).toUpperCase()); } }
@Override public String map(ResultSet r, int columnNumber, StatementContext ctx) throws SQLException { return reverse(r.getString(columnNumber)).toUpperCase(); } }
@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(); } }
@Test public void registerColumnMapperByQualifiedType() { dbRule.getJdbi() .registerColumnMapper( QualifiedType.of(String.class).with(Reversed.class), (r, c, ctx) -> reverse(r.getString(c))) .useHandle(handle -> { handle.execute("insert into something (id, name) values (1, 'abcdef')"); assertThat( handle.select("SELECT name FROM something") .mapTo(QualifiedType.of(String.class).with(Reversed.class)) .findOnly()) .isEqualTo("fedcba"); }); }
@Test public void configColumnMappersRegisterByQualifiedType() { dbRule.getJdbi() .configure(ColumnMappers.class, config -> config.register( QualifiedType.of(String.class).with(Reversed.class), (r, c, ctx) -> reverse(r.getString(c)))) .useHandle(handle -> { handle.execute("insert into something (id, name) values (1, 'abcdef')"); assertThat( handle.select("SELECT name FROM something") .mapTo(QualifiedType.of(String.class).with(Reversed.class)) .findOnly()) .isEqualTo("fedcba"); }); }