2

私はMySQLでJDBIを使用しており、このメソッドがあるGenericDaoインターフェースを持っています

public void insert(T entity);

SQLObjects の代わりに流暢なクエリを使用して、JDBI でこのメソッドを実装するにはどうすればよいですか?

これのどちらかを使用することは可能ですか?

handle.insert

また

handle.createQuery 
4

2 に答える 2

3

SQLObjects スタイルを使用すると、SQLObjects がうまく機能することがわかりました。

public interface GenericDao<T> {
    List<T> findAll();
    long insert(T t);
    long update(T t);
    long delete(long id);
    T findNameById(long id);
}

次に、抽象クラスを使用してすべての SQL を配置しました

@RegisterMapper(VesselJDBIMapper.class)
public abstract class VesselJDBI implements Transactional<VesselJDBI>, GenericDao<Vessel> {

    @SqlUpdate("UPDATE vessel SET vessel_name = :vesselName, version = version +1 WHERE vessel_id = :id" +
            " AND version = :version")
    public abstract long update(@BindBean Vessel vessel);

    @SqlUpdate("DELETE FROM vessel WHERE vessel_id = :id")
    public abstract long delete(@Bind("id") long id);

    @SqlQuery("SELECT vessel_id, vessel_name, version FROM vessel WHERE vessel_id = :id")
    public abstract Vessel findNameById(@Bind("id") long id);

    @SqlUpdate("INSERT INTO vessel (vessel_name, version) VALUES (:vesselName, :version)")
    @GetGeneratedKeys
    public abstract long insert(@BindBean Vessel vessel);

    @SqlQuery("SELECT vessel_id, vessel_name, version FROM vessel ORDER BY vessel_id")
    public abstract List<Vessel> findAll();
}

多分それは誰かに解決策を提供するでしょう。

于 2015-06-08T15:25:12.993 に答える
0

GetHandle インターフェイスを実装することでハンドルを取得できます。

public abstract class GenericDao<T>  implements GetHandle {

    public void insert(T entity) {
        getHandle().insert("some sql");
    };

}
于 2015-03-26T14:20:04.677 に答える