gpt4 book ai didi

java - 使用 UseStringTemplate3StatementLocator 不再从文件加载 SQL 文件

转载 作者:行者123 更新时间:2023-12-02 12:09:05 26 4
gpt4 key购买 nike

我将所有 sql 保存在单独的 .sql 中并使用 @SqlQuery("db/my-dao/fetch-my-dao.sql")

一切正常,但是一旦我将 UseStringTemplate3StatementLocator 添加到 Dao 接口(interface),它就无法再找到该文件,并且我只是收到一个语法错误,显示字符串“db/my-dao”/fetch-my-dao.sql”不是有效的查询。

我怎样才能让两者都工作?

最佳答案

这里发生了几件事。

UseStringTemplate3StatementLocator 由 jdbi v2 使用,从 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
>>

关于java - 使用 UseStringTemplate3StatementLocator 不再从文件加载 SQL 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46677820/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com