首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在Java中查询对象集合(Criteria/SQL-like)?

在Java中查询对象集合(Criteria/SQL-like)有多种方式,以下是一些常见的方法:

1. Java 8 Stream API

Java 8引入了新的Stream API,允许您在程序中创建实时和表达式导向的数据操作,它类似于操作列表的SQL查询。这是使用Java 8 Stream API查询对象集合的简单示例:

代码语言:java
复制
List<Person> people = Arrays.asList(
    new Person("Alice", "A123"),
    new Person("Bob", "B456"),
    new Person("Carol", "C789")
);

List<String> namesStartingWithA = people.stream()
    .filter(p -> p.getName().startsWith("A"))
    .map(p -> p.getName())
    .sorted()
    .collect(toList());

System.out.println(namesStartingWithA); // 输出 [Alice, Carol]

2. Predicate (标准谓词) 和 Lambda 表达式

您也可以使用Java 8的标准谓词(Predicate)或Lambda表达式来构建自定义的查询条件。下面是一个使用标准谓词的例子:

代码语言:java
复制
List<Person> people = ...;

Predicate<Person> startsWithA = p -> p.getName().startsWith("A");

List<String> namesStartingWithA = people.stream()
    .filter(startsWithA)
    .map(p -> p.getName())
    .sorted()
    .collect(toList());

3. Criteria API (Java Persistence API)

使用Criteria API,您可以更精确地控制查询行为。该API类似于SQL语句或Hibernate实体查询语言(HQL)的扩展。以下是一个使用Criteria API来筛选姓名的例子:

代码语言:java
复制
List<Person> people = ...;
Query q = entityManager.createQuery("FROM People p WHERE p.name.startswith('A')");
List<String> namesStartingWithA = q.getResultList();

4. Hibernate Criteria

在使用JPA的情况下,您也可以使用Hibernate Criteria API来构建自定义的查询标准。下面的示例演示了如何使用Hiberate Criteria筛选姓名的例子:

代码语言:java
复制
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
CriteriaQuery<String> cq = criteriaBuilder.createQuery(String.class);
Root<Person> root = cq.from(Person.class);
criterion = criteriaBuilder.equal(root.get("name").as(String.class), "Alice");

Predicate predicate = criterion.getRestriction();
List namesStartingWithA = entityManager.createQuery(cq.select(root.get("name")).where(predicate)).getResultList();

推荐腾讯云的产品及相关链接地址

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券