@Test
public void beanMapperPrefix() {
handle.execute("create table contacts (id int, name text)");
handle.execute("create table phones (id int, contact_id int, name text, number text)");
handle.execute("insert into contacts (id, name) values (?, ?)", 1, "Alice");
handle.execute("insert into phones (id, contact_id, name, number) values (?, ?, ?, ?)",
100, 1, "Home", "555-1212");
handle.execute("insert into phones (id, contact_id, name, number) values (?, ?, ?, ?)",
101, 1, "Work", "555-9999");
handle.registerRowMapper(BeanMapper.factory(ContactBean.class, "c"));
handle.registerRowMapper(BeanMapper.factory(PhoneBean.class, "p"));
handle.registerRowMapper(JoinRowMapper.forTypes(ContactBean.class, PhoneBean.class));
List<JoinRow> contactPhones = handle.select("select "
+ "c.id cid, c.name cname, "
+ "p.id pid, p.name pname, p.number pnumber "
+ "from contacts c left join phones p on c.id = p.contact_id")
.mapTo(JoinRow.class)
.list();
assertThat(contactPhones)
.extracting(cp -> cp.get(ContactBean.class), cp -> cp.get(PhoneBean.class))
.containsExactly(
tuple(new ContactBean(1, "Alice"), new PhoneBean(100, "Home", "555-1212")),
tuple(new ContactBean(1, "Alice"), new PhoneBean(101, "Work", "555-9999")));
}
}