如何在Jbdi中编写动态SQL查询,就像在我的项目中一样,客户会询问一些详细信息,如first name,last name,mobile
。所以我会将这些值读入字符串,我的想法是直接将其附加到SQL查询中,如
select first name,last name,mobile from customer
另一位用户只询问first name
,然后我的查询会改变
select first name from customer where customer Id=12345
答案 0 :(得分:0)
我正在使用JDBI在Dropwizard应用程序中为动态生成的搜索条件字符串做类似的事情。
@UseStringTemplate3StatementLocator
public interface ThingieDao {
@SqlQuery
@MapResultAsBean
Iterator<Thingie> search(@Define("criteria") String criteria);
}
定义的字符串&#34;标准&#34;然后可以在SQL模板中使用:
group ThingieDao;
search(criteria) ::= <<
SELECT * FROM table_name WHERE <criteria>
>>
您可以使用相同的技术在SQL中插入任何字符串,即您的情况下的SELECT列名称。
界面中的变量名无关紧要,重要的是@Define注释字符串。假设Dropwizard没有添加任何魔法,它通常不会,我想这应该可以使用简单的JDBI。