/* * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.jdbi.v3.core.argument; import static org.assertj.core.api.Assertions.assertThat; import java.util.HashMap; import java.util.List; import java.util.Map; import org.jdbi.v3.core.rule.H2DatabaseRule; import org.jdbi.v3.core.Handle; import org.jdbi.v3.core.Something; import org.jdbi.v3.core.statement.Update; import org.junit.Rule; import org.junit.Test; public class TestNamedParams { @Rule public H2DatabaseRule dbRule = new H2DatabaseRule(); @Test public void testInsert() throws Exception { Handle h = dbRule.openHandle(); Update insert = h.createUpdate("insert into something (id, name) values (:id, :name)"); insert.bind("id", 1); insert.bind("name", "Brian"); int count = insert.execute(); assertThat(count).isEqualTo(1); } @Test public void testDemo() throws Exception { Handle h = dbRule.getSharedHandle(); h.createUpdate("insert into something (id, name) values (:id, :name)") .bind("id", 1) .bind("name", "Brian") .execute(); h.execute("insert into something (id, name) values (?, ?)", 2, "Eric"); h.execute("insert into something (id, name) values (?, ?)", 3, "Erin"); List<Something> r = h.createQuery("select id, name from something " + "where name like :name " + "order by id") .bind("name", "Eri%") .mapToBean(Something.class) .list(); assertThat(r).extracting(Something::getId).containsExactly(2, 3); } @Test public void testBeanPropertyBinding() throws Exception { Handle h = dbRule.openHandle(); Update s = h.createUpdate("insert into something (id, name) values (:id, :name)"); s.bindBean(new Something(0, "Keith")); int insert_count = s.execute(); assertThat(insert_count).isEqualTo(1); } @Test public void testMapKeyBinding() throws Exception { Handle h = dbRule.openHandle(); Update s = h.createUpdate("insert into something (id, name) values (:id, :name)"); Map<String, Object> args = new HashMap<>(); args.put("id", 0); args.put("name", "Keith"); s.bindMap(args); int insert_count = s.execute(); assertThat(insert_count).isEqualTo(1); } @Test public void testCascadedLazyArgs() throws Exception { Handle h = dbRule.openHandle(); Update s = h.createUpdate("insert into something (id, name) values (:id, :name)"); Map<String, Object> args = new HashMap<>(); args.put("id", 0); s.bindMap(args); s.bindBean(new Object() { @SuppressWarnings("unused") public String getName() { return "Keith"; } }); int insert_count = s.execute(); assertThat(insert_count).isEqualTo(1); Something something = h.createQuery("select id, name from something").mapToBean(Something.class).findOnly(); assertThat(something).isEqualTo(new Something(0, "Keith")); } }