我将所有广告单独保存在单独的.sql
中并使用@SqlQuery("db/my-dao/fetch-my-dao.sql")
。
一切正常,但是一旦我将UseStringTemplate3StatementLocator
添加到Dao界面,它就再也找不到该文件了,我只是得到一个语法错误,说字符串" db / my-dao /fetch-my-dao.sql"不是有效的查询。
我怎样才能让两者兼顾?
答案 0 :(得分:1)
这里发生了几件事。
jdbi v2使用UseStringTemplate3StatementLocator从类路径上的StringTemplate(v3)组文件中加载SQL。
例如,如果您有一个AccountDao文件,例如:
package com.foo;
public interface AccountDao {
@SqlQuery
@UseStringTemplate3StatementLocator
List<Account> selectAll();
}
在此示例中,由于完全限定的类名是com.foo.AccountDao,因此将从类路径上的文件com/foo/AccountDao.sql.stg
加载SQL。注意* .sql.stg部分。由于我们正在使用UseStringTemplate3StatementLocator,因此必须在相同的类路径中创建* .sql.stg文件。例如:com/foo/AccountDao.sql.stg
group AccountDao;
selectAll() ::= <<
your query goes here
>>