以下查询创建方法有哪些潜在的缺点?

时间:2018-07-12 15:12:00

标签: java

下面是用于为运行PSQL的数据库创建查询的方法的一种版本。

protected Query createQuery(String hql, Object... queryArgs) {
    final Query query = createQuery(hql);
    for (int i = 0; i < queryArgs.length; i++) {
        Object arg = queryArgs[i];
        query.setParameter(i, arg);
    }
    return query;
}

此方法不允许在任何varargs中处理字符',当然前提是未在程序中的其他位置使用其他方法处理该字符。

下面是对该方法的潜在修改,以允许处理此字符。

protected Query createQuery(String hql, Object... queryArgs) {
    final Query query = createQuery(hql);
    for (int i = 0; i < queryArgs.length; i++) {
        Object arg = queryArgs[i];
        if(String.valueOf(arg).contains("'")){
            query.setParameter(i, String.valueOf(arg).replace("'", "''"));
        }else{
            query.setParameter(i, arg);
        }

    }
    return query;
}

在任何情况下此修改都将失败,并且此修改是否有可能导致该方法完成的时间显着增加?

或者,是否存在一种更优雅的解决方案来转义'字符以插入数据库?

0 个答案:

没有答案