Beanをバインドした時に接頭辞を付ける
ObjectAPI形式の場合、引数にBeanがいくつもあった場合、同じフィールド名がかぶってしまう可能性があるので、そんな時にどのBeanがどのパラメータにバインドさせるかちゃんと指定できるようします
Dao011.java
public interface Dao011 { @SqlUpdate("insert into table001 (id, name) values (:b1.id, :b2.name)") void insert( @BindBean("b1") Sample017.Bean bean1, @BindBean("b2") Sample017.Bean bean2 ); @SqlQuery("select name from table001 where id=:id") String findNameById(@Bind("id") int id); }
Sample017.java
public static class Bean { public Bean(int id, String name) { this.id = id; this.name = name; } private int id; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } } public static void main(String[] args) { String url = "jdbc:postgresql://192.168.52.128/jdbi"; DBI dbi = new DBI(url, "jdbi_user", "jdbi_pass"); Dao011 dao = dbi.onDemand(Dao011.class); Bean bean1 = new Bean(1001, "name1"); Bean bean2 = new Bean(1002, "name2"); dao.insert(bean1, bean2); System.out.println("id=1001 => " + dao.findNameById(1001)); // name2 System.out.println("id=1002 => " + dao.findNameById(1002)); // null }
Dao011.insert のSQL文と引数に注目です