我有这个ArrayList:

List<String> zainteresowanka = new ArrayList<String>();
zainteresowanka.add("Java");
zainteresowanka.add("Platforma .NET (C#)");
zainteresowanka.add("Android");
zainteresowanka.add("iOS");
zainteresowanka.add("Windows Phone");
zainteresowanka.add("Technologie WWW (HTML, CSS, JavaScript)");
zainteresowanka.add("Testowanie aplikacji");
zainteresowanka.add("Projektowanie aplikacji");
zainteresowanka.add("Analiza Biznesowa");
zainteresowanka.add("Inne");


这些都是某人可以选择自己喜欢的东西的东西。
如果他选择“ Inne”,那么他必须输入他喜欢此ArrayList不包含的其他内容。

它将这样写入数据库:


  
  Platforma .NET(C#)2. iOS 3. Windows Phone
  


一串。

将其保存到字符串的方法如下所示:

 zainteresowaniaa = zainteresowaniaa + " " + licz + ". " + zainteresowanka.get(wyboor);
 licz = licz + 1;


我需要做的是基于ArrayList zainteresowanka搜索列表,因此我可以选择“ Java,iOS”,然后每个人都选择了那些。

我怎样才能做到这一点?

最佳答案

据我了解

您有一个arraylist,其中包含用户可以选择的项目。您将选择的项目保存到数据库。然后,您需要获取选择了某些项目(例如“ Windows Phone”)的用户

首先,您需要为不同的用户分配一个ID,以区分它们。

使用用户标识将详细信息存储在数据库中

例如

 ==============================
 userid | chosen items
 ==============================
  1      | windows  ios android
  2      | android ios
  ===============================


然后,您需要在数据库中(假设使用mysql或sql之类的)在数据库中搜索特定项(value1,value2)。您可以使用“ LIKE”或“ IN”运算符

您可以使用SQL IN运算符来搜索多个绝对值:

SELECT userid FROM tablename WHERE name IN('Value1','Value2',...);

如果要使用LIKE,则需要改用OR:

从表名中选择用户ID,名称为LIKE'%Value1'或名称LIKE'%Value2';
使用AND(您尝试过)要求所有条件为真,而使用OR至少需要一个条件为真。

在这里,您将获得用户ID列表,因此将选择特定项的用户value1,value2

对于休眠

您可以使用本机sql查询或创建查询。但是搜索功能最好由Hibernate搜索查询DSL实现

简单的方法是使用查询

Query query = session.createQuery("SELECT u FROM UserData u WHERE u.userRole IN (:roles)");
query.setParameterList("roles", roles);


更多信息在下面的链接

http://w3facility.org/question/jpa-get-all-rows-that-matches-multiple-strings/

更好,更正确但更高级的方法可能是使用休眠搜索查询DSL

您可以使用此功能在多个字段中搜索多个关键字

基本语法

Query luceneQuery = queryBuilder
    .keyword()
      .wildcard()
    .onField("foo")
    .matching("bar*")
    .createQuery();


更多信息

http://hibernate.org/search/documentation/getting-started/

关于java - 比较String与我的ArrayList,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29743944/

10-15 19:33