6

私は以前に Java 永続化のために JDBI を使用したことがありますが、それは常にオブジェクト 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: メソッド com.hrweb.dao.PersonDAO#insertPerson は、値を返す必要があるかのように注釈が付けられていますが、メソッドは無効です。

ここで何が間違っていますか?

4

1 に答える 1

11

挿入ステートメントの注釈でSqlQueryはなく、注釈を持っているようです。SqlUpdateJDBI ドキュメントの例を見てみましょう:リンク

注釈を次のように変更します。

@SqlUpdate("insert into person(id,first_name,last_name,position) values(:id,:firstName,:lastName,:position)")

その例外を取り除く必要があります。

于 2014-02-17T04:39:02.757 に答える