我正在尝试使用这样的方法在我们的类中创建一个表:
void createTab() {
DBI dbi = new DBI(DBURL, DBUSER, DBPASS);
BindExamples dao = dbi.open(BindExamples.class);
dao.createSomethingTable();
dao.close();
}我的BindExamples接口:
public interface BindExamples
{
@SqlUpdate("insert into something (id, name) values (:id, :name)")
void insert(@Bind("id") int id, @Bind("name") String name);
@SqlUpdate("delete from something where name = :it")
void deleteByName(@Bind("name") String name);
@SqlSelect("select text from articles where id = :id")
String selectText(@Bind("id") int id);
@SqlUpdate("create table something (id int primary key, name varchar(100))")
void createSomethingTable();
void close();
}结果:我有一个错误:
Exception in thread "main" java.lang.NoSuchMethodError:java.lang.Object.createSomethingTable()V
at org.skife.jdbi.v2.sqlobject.CloseInternalDoNotUseThisClass$$EnhancerByCGLIB$$7c60a575.CGLIB$createSomethingTable$8(<generated>)
at org.skife.jdbi.v2.sqlobject.CloseInternalDoNotUseThisClass$$EnhancerByCGLIB$$7c60a575$$FastClassByCGLIB$$c61ecaca.invoke(<generated>)
at org.skife.jdbi.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228)
at org.skife.jdbi.v2.sqlobject.PassThroughHandler.invoke(PassThroughHandler.java:21)
at org.skife.jdbi.v2.sqlobject.SqlObject.invoke(SqlObject.java:147)
at org.skife.jdbi.v2.sqlobject.SqlObject$1.intercept(SqlObject.java:60)
at org.skife.jdbi.v2.sqlobject.CloseInternalDoNotUseThisClass$$EnhancerByCGLIB$$7c60a575.createSomethingTable(<generated>)
at DBAccessJDBC.saveObjectAPI(DBAccessJDBC.java:58)
at MainMain.main(MainMain.java:7)我有什么错吗?我想和intro/一样
我用:
谢谢你的帮助!
发布于 2014-12-27 21:11:23
在jdbi中没有注释@SqlSelect。您可以说,您使用的是哪个库的注释。我将注释更改为@SqlQuery,它运行良好。它将扫描所有方法,并根据注释分配处理程序。扫描可能因为未知的注释而失败。
发布于 2014-12-14 03:48:26
JDBI正在扫描您的接口注释。使用@SqlQuery注释。
https://stackoverflow.com/questions/27130812
复制相似问题