anchor.diff:  ----
   include::{sqlobjectexampledir}/TestReturningMap.java[tags=joinRowMultimap]
   ----
  -
  -==== @SqlUpdate
  -
  -TODO:
  -
  -* By default supports void, int/long (update count), or boolean (update count
  -  > 0) return types
  -* Or use @GetGeneratedKeys annotation to return generated keys. e.g. return an
  -  id column value obtained from a sequence.
   
   ==== @SqlBatch
   
  
positive.code: The parameters to the method are used as arguments to the statement, and the
  SQL statement result mapped into the method return type.
  
  ==== Binding Arguments
  
  Arguments passed to the method are bound as arguments to the SQL statement.
  
  If using positional arguments, the method arguments are bound to the
  corresponding `?` argument marker in the SQL statement:
  
  [source,java]
  ----
  
negative.code: See the link:{jdbidocs}/postgres/package-summary.html[javadoc^] for an
  exhaustive list.
  
  [reftext="PostgreSQL-GetGeneratedKeys"]
  ==== @GetGeneratedKeys
  
  In Postgres, `@GetGeneratedKeys` can return the entire modified row if you
  request generated keys without naming any columns.
  
  [source,java]
  ----
  public interface UserDao {
    @SqlUpdate("insert into users (id, name, created_on) values (nextval('user_seq'), ?, now())")
    @GetGeneratedKeys
    @RegisterBeanMapper(User.class)
    User insert(String name);
  }
  ----
  
  If a database operation modifies multiple rows (e.g. an update that will modify
  several rows), your method can return all the modified rows in a collection:
  
  [source,java]
  ----
  public interface UserDao {
    @SqlUpdate("update users set active = false where id = any(?)")
    @GetGeneratedKeys
    @RegisterBeanMapper(User.class)
    List<User> deactivateUsers(long... userIds);
  }
  ----
  
  === Spring
  
  This module provides `JdbiFactoryBean`, a factory bean which sets up a `Jdbi`
  