当前位置: 首页 > 面试题库 >

如何使用Java Spring Framework搜索字符串LIKE'something%'?

闻人业
2023-03-14
问题内容

我有一个带Foos的MySQL表。每个Foo都有一个数字非唯一代码和一个名称。现在,我需要查找具有某些特定代码之一的Foo是否恰好具有以给定字符串开头的名称。在普通的SQL中,这很简单:

select * from FOO where CODE in (2,3,5) and NAME like 'bar%';

但是我现在如何在春季正确地做到这一点?不需要’like’运算符,我可以这样做:

public List<Foo> getByName(List<Integer> codes, String namePart) {
    String sql = "select * from FOO where CODE in (:codes) and NAME=:name"
    Map<String,Object> params = new HashMap<String,Object>();
    params.put("codes", codes);
    params.put("name", namePart);
    return getSimpleJdbcTemplate().query(sql, new FooRowMapper(), params);
}

然而,与“喜欢”似乎没有任何工作:NAME like :name%NAME like ':name%'NAME like ?%使用占位符代替命名参数时。

我可能会残酷地输入

String sql = "select * from FOO where CODE in (:codes) and NAME like '"+namePart+"%'";`

但是显然,如果Spring可以正确地清理输入参数等,那就更好了。

您可能认为Spring会以某种方式支持这一点,但我无法弄清楚。


问题答案:

等待,当然,我必须在一天结束之前“再做一件事”,瞧瞧,我所有的单元测试都突然通过了:

public List<Foo> getByName(List<Integer> codes, String namePart) {
    String sql = "select * from FOO where CODE in (:codes) and NAME like :name"
    Map<String,Object> params = new HashMap<String,Object>();
    params.put("codes", codes);
    params.put("name", namePart+"%");
    return getSimpleJdbcTemplate().query(sql, new FooRowMapper(), params);
}

我没想到要在参数中输入“%”,我确定Spring会自动对其进行转义。我想知道我做对了吗?



 类似资料:
  • 我希望typeahead.js在如何匹配项方面表现得像jqueryui autocomplete。使用jqueryui autocomplete可以在文本项中进行搜索。在typeahead中,它仅从字符串的开头开始。 自动完成示例:http://goo.gl/O43afF 提前键入示例:http://twitter.github.io/typeahead.js/examples/ 使用autoco

  • 问题内容: 我想要一个自动完成功能。我对数据类型的属性有简短的描述性字符串。我在redis中有一个ID列表,其中包含按创建日期排序的数据类型,并且使用ID来设置和获取该数据类型的属性,如redis类型文档中所述。我不使用哈希表。在此设置下,获取与输入到自动完成输入框中的内容相匹配的字符串集的最佳方法是什么?遍历所有id并检查我要搜索的属性- 对于每次击键,这似乎是错误的方法。 编辑: 除了下面的答

  • 我正在写一个程序来跟踪学校的班级和学生。我有学校、教室和学生用品。学校包含教室对象的ArrayList,每个教室包含学生对象的ArrayList。 我试图在学校类中编写一个方法,使用字符串名称和字符串classroomName作为参数来删除学生。 这就是我到目前为止所做的: 我认为这不起作用,因为学生对象的ArrayList是在课堂上声明的。 是否有一种方法可以通过对象ArrayList搜索使用非

  • 要转义这些字符,请在字符前面使用\。例如,要搜索(1+1):2,请使用以下查询: 为此,我使用方法: 我使用经典分析器是因为我注意到标准分析器在转义特殊字符方面存在一些问题。 null

  • 问题内容: 在SQLite中搜索子字符串的最有效方法是什么? 我在看LIKE运算子。 我有正确的主意吗?这对您来说效果很好吗? http://www.sqlite.org/lang_expr.html 谢谢你。 问题答案: 是的,请使用“赞”。 将返回名称列中任何位置带有“ omm”的行。

  • 本文向大家介绍使用MySQL搜索字符串中的特定字符?,包括了使用MySQL搜索字符串中的特定字符?的使用技巧和注意事项,需要的朋友参考一下 为此,请使用REGEXP。例如,字符J,A,V和A。让我们首先创建一个表- 使用插入命令在表中插入一些记录- 使用select语句显示表中的所有记录- 这将产生以下输出- 以下是使用MySQL在字符串中搜索字符的查询- 这将产生以下输出-