JDBI对象查询

Joe*_*uck 5 java mysql jdbi

之前我曾经使用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);
}
Run Code Online (Sandbox Code Playgroud)

在mysql中测试了查询,它工作正常,但在单元测试中运行它:

@Test 
public void testInsertPerson() {
    PersonDAO personDao = dao.getRegHandle().attach(PersonDAO.class);
    personDao.insertPerson(888888,"Tom", "Ford", "Manager");
}
Run Code Online (Sandbox Code Playgroud)

我得到一个例外:

java.lang.IllegalStateException:方法com.hrweb.dao.PersonDAO#insertPerson注释,好像它应该返回一个值,但方法是无效的.

我在这做错了什么?

Dur*_*dal 9

看起来你的SqlQuery注释不是SqlUpdate注释语句中的注释.看一下JDBI Docs:Link中的示例

像这样更改注释:

@SqlUpdate("insert into person(id,first_name,last_name,position) values(:id,:firstName,:lastName,:position)")
Run Code Online (Sandbox Code Playgroud)

应该摆脱那个例外.