有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java 8筛选流以替换(…)中的SQL条款

有没有任何方法可以通过像SQL IN子句这样的集合获得相同的结果?例如,有一个对象列表,我必须选择那些ID在(2,17,31,…)中的对象什么是SQL

SELECT *
FROM table_name
WHERE column_name IN (value1, value2, ...);

共 (3) 个答案

  1. # 1 楼答案

    您可以在筛选器中使用谓词来模拟IN子句:

    一个简单且未经测试的示例:

    List<Number> myList= Arrays.asList(1, 2, 3);
    List<Integer> finalList= Arrays
        .stream(new Integer[] { 1, 2, 3, 4, 5 })
        .filter(element -> myList.contains(element))
        .collect(Collectors.toList());
    

    输出应该是1, 2, 3

  2. # 2 楼答案

    我想出了办法:

    private static void selectByRange(List<Integer> range) {
            List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 20, 23, 101);
            Stream<Integer> filterStream = numbers.stream().filter((Integer number) -> range.contains(number));
            List<Integer> collected = filterStream.collect(Collectors.toList());
            System.out.println(collected.toString());
    
        }
    

    您传入一个整数列表,并获得过滤后的列表:

    selectByRange(Arrays.asList(5, 3, 4, 20, 100)); #=> [3, 4, 5, 20]