DruidAbstractDataSource #setFilters判断filters是否以!开始后的处理逻辑没看明白,还是说不允许使用!来排除filter
public void setFilters(String filters) throws SQLException { if (filters != null && filters.startsWith("!")) { filters = filters.substring(1); this.clearFilters(); } this.addFilters(filters); }
原提问者GitHub用户601724080
为了解决这个问题,您可以尝试以下方法:
String filter = "!wall";
if (condition) {
filter += " AND column1 = 'value1' AND column2 = 'value2'";
} else {
filter += " AND column1 = 'value3' AND column2 = 'value4'";
}
CopyCopyCopy
String filter = "!wall";
if (condition) {
filter += " AND column1 = 'value1' AND column2 = 'value2'";
} else {
filter += " AND column1 = 'value3' AND column2 = 'value4'";
}
CopyCopyCopy
String query = "SELECT * FROM table_name WHERE " + filter;
if (condition) {
query += " AND column1 = 'value1' AND column2 = 'value2'";
} else {
query += " AND column1 = 'value3' AND column2 = 'value4'";
}
DruidAbstractDataSource的setFilters方法用于设置过滤条件,如果filters字符串开头为"!",则将其去掉。这是因为Druid采用了一种特殊的过滤方式,即使用"!"字符来排除过滤条件。例如,如果需要排除名称为"test"的SQL语句,则可以使用"test!"作为过滤条件。如果使用普通的过滤条件,则需要在过滤条件开头使用"-"或者"("等字符来表示。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。