之前我曾经使用过JDBI用于Java持久性的东西,但它始终是流畅的API而不是对象API。现在尝试使用Object API。
我有一个非常简单的DAO对象:
public interface PersonDAO {
@SqlQuery("insert into person(id,first_name,last_name,position) values(:id,:firstName,:lastName,:position)")
void insertPerson(@Bind("id") Integer id,
@Bind("firstName") String firstName,
@Bind("lastName") String lastName,
@Bind("position") String position);
}
在mysql中测试了查询,它运行正常,但是在单元测试中运行它:
@Test
public void testInsertPerson() {
PersonDAO personDao = dao.getRegHandle().attach(PersonDAO.class);
personDao.insertPerson(888888,"Tom", "Ford", "Manager");
}
我得到一个例外:
java.lang.IllegalStateException:Method com.hrweb.dao.PersonDAO#insertPerson注释就好像它应该 返回一个值,但该方法无效。
我在这里做错了什么?
答案 0 :(得分:9)
看起来你的插入语句中有SqlQuery
注释而不是SqlUpdate
注释。请查看JDBI文档中的示例:Link
更改注释:
@SqlUpdate("insert into person(id,first_name,last_name,position) values(:id,:firstName,:lastName,:position)")
应该摆脱那个例外。