public void addColumnProperties(JdbcMapperFactory mapperFactory) { for(ColumnMeta columnMeta : columnMetas) { mapperFactory.addColumnProperty(columnMeta.getColumn(), SqlTypeColumnProperty.of(columnMeta.getSqlType())); if (columnMeta.isKey()) { mapperFactory.addColumnProperty(columnMeta.getColumn(), KeyProperty.DEFAULT); } } }
public void addColumnProperties(JdbcMapperFactory mapperFactory) { for(ColumnMeta columnMeta : columnMetas) { mapperFactory.addColumnProperty(columnMeta.getColumn(), SqlTypeColumnProperty.of(columnMeta.getSqlType())); if (columnMeta.isKey()) { mapperFactory.addColumnProperty(columnMeta.getColumn(), KeyProperty.DEFAULT); } } }
@Test public void testCustomGetterOnNonExistantProp() throws Exception { PreparedStatementMapperBuilder<Object> mapperBuilder = JdbcMapperFactory.newInstance() .addColumnProperty("text", new ConstantValueProperty<String>("value2", String.class)) .buildFrom(Object.class); mapperBuilder.addColumn("text"); FieldMapper<Object, PreparedStatement> mapper = mapperBuilder.mapper(); PreparedStatement ps = mock(PreparedStatement.class); mapper.mapTo(new Object(), ps, null); verify(ps).setString(1, "value2"); } }
private QueryPreparer<T> getQueryPreparer(SQLStatement<?> sqlStatement, SfmBind annotation, Class<?> aClass) { QueryPreparerKey key = new QueryPreparerKey(sqlStatement.getContext().getRawSql(), aClass); QueryPreparer<T> queryPreparer = cache.get(key); if (queryPreparer == null) { NamedSqlQuery parse = NamedSqlQuery.parse(sqlStatement.getContext().getRawSql()); JdbcMapperFactory jdbcMapperFactory = JdbcMapperFactory .newInstance(); for (SqlType col : annotation.sqlTypes()) { jdbcMapperFactory.addColumnProperty(col.name(), SqlTypeColumnProperty.of(col.type())); } queryPreparer = jdbcMapperFactory.<T>from(aClass).to(parse); QueryPreparer<T> cachedQP = cache.putIfAbsent(key, queryPreparer); if (cachedQP != null) { queryPreparer = cachedQP; } } return queryPreparer; } }
@Test public void testCustomGetter() throws Exception { PreparedStatementMapperBuilder<DMClass> mapperBuilder = JdbcMapperFactory.newInstance() .addColumnProperty("value", new GetterProperty(new Getter<Object, String>() { @Override public String get(Object target) throws Exception { return "value2"; } })) .buildFrom(DMClass.class); mapperBuilder.addColumn("value"); FieldMapper<DMClass, PreparedStatement> mapper = mapperBuilder.mapper(); DMClass dmClass = new DMClass(); PreparedStatement ps = mock(PreparedStatement.class); mapper.mapTo(dmClass, ps, null); verify(ps).setString(1, "value2"); }
.addColumnProperty("id", KeyProperty.DEFAULT) .<CrudTest.OnlyKey, Long>crud(MyPojo.class, Long.class).table("issue569_v");
@Test public void jdbcMapperCustomGetter() { JdbcMapperFactory .newInstance() .addColumnProperty("bar", new GetterProperty(new Getter<ResultSet, Bar2>() { @Override public Bar2 get(ResultSet target) throws Exception { return new Bar2(target.getString("bar"), 2); } })) .newBuilder(Foo2.class) .addKey("bar").mapper(); }
@Test public void jdbcMapperCustomGetter() { JdbcMapperFactory .newInstance() .addColumnProperty("bar", new GetterProperty(new Getter<ResultSet, Bar2>() { @Override public Bar2 get(ResultSet target) throws Exception { return new Bar2(target.getString("bar"), 2); } })) .newBuilder(Foo2.class) .addKey("bar").mapper(); }
JdbcMapperFactory .newInstance() .addColumnProperty("id", KeyProperty.DEFAULT, AutoGeneratedProperty.DEFAULT) .<DbObject, Long>crud(DbObject.class, Long.class) .table(connection, "test_db_object_dv");
@Test public void jdbcMapperExtrapolateOverrideIndexedSetter() { JdbcMapperFactory .newInstance() .addColumnProperty("bar", new IndexedSetterProperty(new IndexedSetter<PreparedStatement, Bar2Prop>() { @Override public void set(PreparedStatement target, Bar2Prop value, int index) throws Exception { target.setString(index, value.getVal()); target.setInt(index + 1, value.getI()); } })) .buildFrom(Foo2.class) .addColumn("bar") .mapper(); } @Test
@Test public void jdbcMapperExtrapolateOverrideSetter() { JdbcMapperFactory .newInstance() .addColumnProperty("bar", new IndexedSetterProperty(new IndexedSetter<PreparedStatement, Bar2Prop>() { @Override public void set(PreparedStatement target, Bar2Prop value, int index) throws Exception { target.setString(index, value.getVal()); target.setInt(index + 1, value.getI()); } })) .buildFrom(Foo2.class) .addColumn("bar") .buildIndexFieldMappers(EmptyContextFactoryBuilder.INSTANCE); } @Test
@Test public void jdbcMapperExtrapolateOverrideSetter() { JdbcMapperFactory .newInstance() .addColumnProperty("bar", new SetterProperty(new Setter<PreparedStatement, Bar2Prop>() { @Override public void set(PreparedStatement target, Bar2Prop value) throws Exception { target.setString(3, value.getVal()); target.setInt(4, value.getI()); } })) .buildFrom(Foo2.class) .addColumn("bar") .mapper(); } @Test
@Test public void jdbcMapperExtrapolateOverrideIndexedSetterFactory() { JdbcMapperFactory .newInstance() .addColumnProperty("bar", new IndexedSetterFactoryProperty( new IndexedSetterFactory<PreparedStatement, PropertyMapping<?, ?, JdbcColumnKey>>() { @SuppressWarnings("unchecked") @Override public <P> IndexedSetter<PreparedStatement, P> getIndexedSetter(final PropertyMapping<?, ?, JdbcColumnKey> arg, Object... properties) { return (IndexedSetter<PreparedStatement, P>) new IndexedSetter<PreparedStatement, Bar2Prop>() { @Override public void set(PreparedStatement target, Bar2Prop value, int index) throws Exception { target.setString(index, value.getVal()); target.setInt(index + 1, value.getI()); } }; } } )) .buildFrom(Foo2.class) .addColumn("bar") .mapper(); }
@Test public void jdbcMapperExtrapolateOverrideSetterFactory() { JdbcMapperFactory .newInstance() .addColumnProperty("bar", new SetterFactoryProperty( new SetterFactory<PreparedStatement, PropertyMapping<?, ?, JdbcColumnKey>>() { @SuppressWarnings("unchecked") @Override public <P> Setter<PreparedStatement, P> getSetter(final PropertyMapping<?, ?, JdbcColumnKey> arg) { return (Setter<PreparedStatement, P>) new Setter<PreparedStatement, Bar2Prop>() { @Override public void set(PreparedStatement target, Bar2Prop value) throws Exception { target.setString(arg.getColumnKey().getIndex(), value.getVal()); target.setInt(arg.getColumnKey().getIndex() + 1, value.getI()); } }; } } )) .buildFrom(Foo2.class) .addColumn("bar") .mapper(); }
@Test public void jdbcMapperExtrapolateOverrideSetterFactory() { JdbcMapperFactory .newInstance() .addColumnProperty("bar", new IndexedSetterFactoryProperty( new IndexedSetterFactory<PreparedStatement, PropertyMapping<?, ?, JdbcColumnKey>>() { @SuppressWarnings("unchecked") @Override public <P> IndexedSetter<PreparedStatement, P> getIndexedSetter(final PropertyMapping<?, ?, JdbcColumnKey> arg, Object... properties) { return (IndexedSetter<PreparedStatement, P>) new IndexedSetter<PreparedStatement, Bar2Prop>() { @Override public void set(PreparedStatement target, Bar2Prop value, int index) throws Exception { target.setString(index, value.getVal()); target.setInt(index + 1, value.getI()); } }; } } )) .buildFrom(Foo2.class) .addColumn("bar") .buildIndexFieldMappers(EmptyContextFactoryBuilder.INSTANCE); } }
final JdbcMapper<DbObject> mapper = JdbcMapperFactory .newInstance() .addColumnProperty("name", new DefaultValueProperty<String>("defaultName")).newMapper(DbObject.class);
@Test public void testDbObjectCrudWithCustomGetter() throws Exception { JdbcMapperFactory mapperFactory = JdbcMapperFactory .newInstance() .addColumnProperty("name", new GetterProperty(new Getter<ResultSet, String>() { @Override public String get(ResultSet target) throws Exception { return "customname"; } })); Connection connection = DbHelper.getDbConnection(targetDB); if (connection == null) { System.err.println("Db " + targetDB + " not available"); return; } try { Crud<TestDbObject, Long> objectCrud = mapperFactory.<TestDbObject, Long>crud(TestDbObject.class, Long.class).to(connection); TestDbObject testDbObject = DbObject.newInstance(new TestDbObject()); objectCrud.create(connection, testDbObject); TestDbObject read = objectCrud.read(connection, testDbObject.getId()); assertEquals("customname", read.getName()); assertEquals(testDbObject.getEmail(), read.getEmail()); } finally { connection.close(); } }
JdbcMapperFactory .newInstance() .addColumnProperty("id", KeyProperty.DEFAULT, AutoGeneratedProperty.of("nextval('test_seq_seq')")) .<DbObject, Long>crud(DbObject.class, Long.class) .table(connection, "test_db_object_seq");
@Test public void testDbObjectCrudWithCustomSetter() throws Exception { JdbcMapperFactory mapperFactory = JdbcMapperFactory.newInstance().addColumnProperty("name", new IndexedSetterProperty(new IndexedSetter<PreparedStatement, Object>() { @Override public void set(PreparedStatement target, Object value, int index) throws Exception { target.setString(index, "customname"); } })); Connection connection = DbHelper.getDbConnection(targetDB); if (connection == null) { System.err.println("Db " + targetDB + " not available"); return; } try { Crud<TestDbObject, Long> objectCrud = mapperFactory.<TestDbObject, Long>crud(TestDbObject.class, Long.class).to(connection); TestDbObject testDbObject = DbObject.newInstance(new TestDbObject()); assertNotEquals("customname", testDbObject); objectCrud.create(connection, testDbObject); TestDbObject read = objectCrud.read(connection, testDbObject.getId()); assertEquals("customname", read.getName()); assertEquals(testDbObject.getEmail(), read.getEmail()); } finally { connection.close(); } }