我正在为我的申请创建一个搜索表单
在其中,用户选择应该用于过滤数据的字段
数字字段是可变的,所以我不知道SQL查询的where子句中应该有多少?
如何在where子句中使用preparedStatement
具有可变数量的条件?
由于
答案 0 :(得分:4)
如果要在where子句中添加可变数量的条件 StringBuilder(StringBuffer,如果它的多线程env。)和运行时间取决于你的条件连接/附加到你的字符串。
喜欢
StringBuilder query = new StringBuilder("Select id, name from Student ");
if(args >0)
{
query.append(" where "); //and add more args.
稍后通过将此转换为字符串
来使用此查询创建预准备语句PrepareStatement(query.toString());
答案 1 :(得分:3)
PrepardStatements不支持可变数量的条件。一些框架的作用是,它们将每个PreparedStatement缓存在一个Map中,其中键是查询。
因此,每次要运行查询时,都需要构建字符串以创建PreparedStatement,检查是否在地图中具有它(并重复使用)或创建新查询,并将其添加到地图中。