JDO(Java Data Object) 是一种面向对象的数据持久化框架,它提供了一个标准API来使得Java应用程序与关系型数据库交互。JDO 2.0版本提供了一个强大的查询语言,下面我们详细讲解其特点。
JDO(Java Data Object) 是一种面向对象的数据持久化框架,它提供了一个标准API来使得Java应用程序与关系型数据库交互。JDO 2.0版本提供了一个强大的查询语言,下面我们详细讲解其特点。
JDO 2.0查询语言的特点:
1. 支持“from”语法
查询语句以“from”关键词开始,后面接一个或多个表名或实体类名。示例:
SELECT e FROM Employee e
以上语句用于从Employee类的所有实例中选择所有属性。
2. 强类型
JDO查询语言是强类型的,这意味着必须为每个属性定义类型和参数类型。JDO支持的类型有Integer、String、Date、Boolean等。示例:
SELECT e FROM Employee e WHERE e.salary > :salary
以上语句用于从Employee类的实例中选择那些工资大于参数“salary”的所有属性。
3. 支持查询嵌套类
查询语句也可以使用嵌套类,查询结果将包含嵌套类中的所有属性。示例:
SELECT c FROM Customer c WHERE c.contact.name.last = :lastName
以上语句用于从Customer类的实例中选择那些联系人姓为参数“lastName”的所有属性。
4. 支持聚合函数
JDO查询语言支持SUM、AVG、MAX、MIN、COUNT等聚合函数。示例:
SELECT AVG(e.salary) FROM Employee e
以上语句用于从Employee类的实例中选择平均工资。
5. 支持使用变量
查询语句可以使用变量来定义查询条件。语法为“:参数名”。示例:
SELECT e FROM Employee e WHERE e.name = :name
以上语句用于从Employee类的实例中选择那些名字为参数“name”的所有属性。
6. 支持逻辑运算符
JDO查询语言支持AND、OR、NOT等逻辑运算符。示例:
SELECT e FROM Employee e WHERE e.name = :name AND e.salary > :salary
以上语句用于从Employee类的实例中选择那些名字为参数“name”,并且工资大于参数“salary”的所有属性。
示例说明
假设我们有一个Java应用程序,需要从数据库中查询所有员工姓名以及他们的工资。
1. 定义Employee实体类
定义Employee实体类,包含id、name、salary三个属性。
public class Employee {
private Long id;
private String name;
private Double salary;
// 省略getter和setter方法
}
2. 创建JDO查询语句
在查询语句中使用“from”关键词选择所有Employee实例:
SELECT e FROM Employee e
3. 执行JDO查询语句
将查询语句传递给JDO实现,获取查询结果:
PersistenceManager pm = // 获取PersistenceManager实例
Query query = pm.newQuery("SELECT e FROM Employee e");
List<Employee> results = (List<Employee>)query.execute();
4. 遍历结果集
遍历JDO查询结果,获取所有员工姓名和工资:
for (Employee e : results) {
System.out.println("Name: " + e.getName() + ", Salary: " + e.getSalary());
}
以上示例展示了如何使用JDO查询语言获取所有员工姓名和工资。
5. 定义Customer实体类
定义Customer实体类,包含id、name、contact三个属性。其中contact属性为一个Contact实体类,包含firstName、lastName两个属性。
public class Customer {
private Long id;
private String name;
private Contact contact;
// 省略getter和setter方法
}
public class Contact {
private String firstName;
private String lastName;
// 省略getter和setter方法
}
6. 创建JDO查询语句
在查询语句中使用嵌套类选择那些联系人姓为参数“lastName”的所有属性:
SELECT c FROM Customer c WHERE c.contact.name.last = :lastName
7. 执行JDO查询语句
将查询语句传递给JDO实现,获取查询结果:
PersistenceManager pm = // 获取PersistenceManager实例
Query query = pm.newQuery("SELECT c FROM Customer c WHERE c.contact.name.last = :lastName");
String lastName = "Smith";
List<Customer> results = (List<Customer>)query.execute(lastName);
8. 遍历结果集
遍历JDO查询结果,获取所有姓为“Smith”的联系人:
for (Customer c : results) {
System.out.println("Customer: " + c.getName() + ", Contact: " + c.getContact().getFirstName() + " " + c.getContact().getLastName());
}
以上示例展示了如何使用JDO查询语言获取所有姓为“Smith”的联系人。
本文标题为:JDO 2.0查询语言的特点
- Java中String类的常用方法总结 2023-06-30
- Springboot项目启动到一半卡住了,不报错问题及解决 2023-01-02
- MyBatis-Plus插件机制及通用Service新功能 2023-02-28
- 我们可以从mysql触发器调用servlet或java方法吗? 2023-10-31
- 详解velocity模板使javaWeb的html+js实现模块化 2023-08-01
- SpringBoot实现PPT格式文件上传并在线预览功能 2022-10-24
- Spring AOP实现打印HTTP接口出入参日志 2023-06-01
- SpringBoot+Vue实现动态菜单的思路梳理 2023-03-06
- 基于Springboot的高校社团管理系统的设计与实现 2023-03-21
- 工作中禁止使用Executors快捷创建线程池原理详解 2023-07-01