@Test public void testCustomMapping() throws SQLException, Exception { JdbcMapperFactory mapperFactory = JdbcMapperFactoryHelper.asm(); mapperFactory.addCustomFieldMapper("id", new FieldMapper<ResultSet, DbObject>() { @Override public void mapTo(ResultSet source, DbObject target, MappingContext<? super ResultSet> mappingContext) throws MappingException { target.setId(1); } }); final JdbcMapper<DbObject> mapper = mapperFactory.newMapper(DbObject.class); DbHelper.testQuery(new TestRowHandler<PreparedStatement>() { @Override public void handle(PreparedStatement t) throws Exception { ResultSet r = t.executeQuery(); r.next(); DbHelper.assertDbObjectMapping(mapper.map(r)); } }, DbHelper.TEST_DB_OBJECT_QUERY.replace("id,", "33 as id,")); }
@Test public void testFieldErrorHandling() throws SQLException, Exception, ParseException { @SuppressWarnings("unchecked") FieldMapperErrorHandler<JdbcColumnKey> fieldMapperErrorHandler = mock(FieldMapperErrorHandler.class); final Exception exception = new Exception("Error!"); JdbcMapper<DbObject> mapper = JdbcMapperFactoryHelper.asm() .fieldMapperErrorHandler(fieldMapperErrorHandler) .addCustomFieldMapper("id", new FieldMapper<ResultSet, DbObject>() { @Override public void mapTo(ResultSet source, DbObject target, MappingContext<? super ResultSet> mappingContext) throws Exception { throw exception; } }).newBuilder(DbObject.class).addMapping("id").mapper(); List<DbObject> list = mapper.forEach(new MockDbObjectResultSet(1), new ListCollector<DbObject>()).getList(); assertNotNull(list.get(0)); verify(fieldMapperErrorHandler).errorMappingField(eq(new JdbcColumnKey("id", 1)), any(), same(list.get(0)), same(exception), any(Context.class)); }
@Test public void testCustomMappingStatic() throws SQLException, Exception { JdbcMapperFactory mapperFactory = JdbcMapperFactoryHelper.asm(); mapperFactory.addCustomFieldMapper("id", new FieldMapper<ResultSet, DbObject>() { @Override public void mapTo(ResultSet source, DbObject target, MappingContext<? super ResultSet> mappingContext) throws MappingException { target.setId(1); } }); final JdbcMapper<DbObject> mapper = JdbcMapperDbObjectTest.addColumn(mapperFactory.newBuilder(DbObject.class)).mapper(); DbHelper.testQuery(new TestRowHandler<PreparedStatement>() { @Override public void handle(PreparedStatement t) throws Exception { ResultSet r = t.executeQuery(); r.next(); DbHelper.assertDbObjectMapping(mapper.map(r)); } }, DbHelper.TEST_DB_OBJECT_QUERY.replace("id,", "33 as id,")); }