第11章 JPA的查询支持

– setFirstResult:记录的开始位置 – setMaxResult:返回记录的条数
• 实际操作演示
子查询和命名查询
• 子查询:在一个查询中包含另外一个查询
– 例如:select 属性名 from 实体类 where 属性 名>(select avg(属性名2) from 实体类2)
• 命名查询:在Annotation中定义JPQL查询 语句。
关联和连接
• JPQL查询除了行多表连接查询。 • 这种多表连接查询既可以是隐式连接,也 可以是显示连接。
• 实际操作演示
使用order by进行排序
• 查询返回的集合可以根据实体或符合属性的 任何属性使用order by进行排序。 • 还可以使用asc或desc关键字指定升序或降 序的排序规则。 • 默认是升序规则。
• JPQL内置了大量功能强大的函数,可以 更有效的执行查询,设置查询结果。 • JPQL的内置函数有:
– 字符串函数 – 数学函数 – 日期、时间函数
• 实际操作演示
多态查询
• 当查询实体类时,不仅可以查询该实体类 的全部实例,还会查询出该类的子类的全 部实例。 • 必须具有继承关系。 • 实际操作演示
– from 实体类名 [as] 实体别名
• 尽量避免在from后跟多个实体类名
• 实际操作演示
使用select子句
• select子句用于选择指定的属性或之际选 择某个实体。常用的格式如下:
– select 实体别名.实体属性1,实体别名.实体属 性2...... from......
• 如果select后有多个项,则查询出来的集 合元素就是相应类型的数组。 • 实际操作演示
存储过程简介
• 存储过程通常有以下优点: – 存储过程增强了SQL语言的功能和灵活性。 – 存储过程允许标准组件式编程。 – 存储过程能实现较快的执行速度。 – 存储过程能过减少网络流量。 – 存储过程可被作为一种安全机制来充分利用。
存储过程简介
• MySQL存储过程共有三种参数类型 ,IN,OUT,INOUT,形式如:
– CREATE PROCEDURE([[IN |OUT |INOUT ] 参 数名 数据类型...]) – IN 输入参数:表示该参数的值必须在调用存储过程 时指定,在存储过程中修改该参数的值不能被返 回,为默认值。 – OUT 输出参数:该值可在存储过程内部被改变,并 可返回。 – INOUT 输入输出参数:调用时指定,并且可被改变 和返回。
概述
• 使用原生SQL查询的过程很简单,主要使 用EntityManager的 CreateNativeQuery(String sql)方法即可 创建一个代表原生SQL查询的Query对象 ,接下来就可以利用该Query对象执行查 询了。 • 实际操作演示
结果集映射和实体查询
• 原生SQL查询的结果集,里面的每个元素, 要么是数组,要么是List集合。 • 可以对查询结果集里面的元素映射成查询实 体,或将查询结果映射为普通的数据列。 • @SqlResultSetMapping • @SqlResultSetMappings • 实际操作演示
select 实体别名.属性名,... from 实体名 [as] 实体别名 where 实体别名.实体属性 op 比较值
查询API简介
• JPQL的查询主要由Query接口来完成 • JPQL查询的步骤:
– Query的创建
• createQuery(String JPQLString) • 其他重载方法
– Query设置查询参数
• setParameter(...) • 其他重载方法
– Query执行查询
• getResultList() • 其他查询方法
目录
• • • • • 查询API 执行查询 JPQl语法 批量更新和批量删除 原生SQL查询
执行查询
• 位置参数:
– ?位置编号
• 命名参数:
• 执行update方法返回的结果是记录个数。
• 实际操作演示
批量删除
• 批量删除使用delete语句。
– delete <ClassName> [where where _conditions]
• 执行update方法返回的结果是记录个数。
• 实际操作演示
目录
• • • • • 查询API 执行查询 JPQl语法 批量更新和批量删除 原生SQL查询
– @NamedQuery
• name:命名查询的名称 • query:查询语句
– @NamedQueries
• 用法参考本页PPT注解
• 实际操作演示
目录
• • • • • 查询API 执行查询 JPQl语法 批量更新和批量删除 原生SQL查询
批量更新
• 批量更新使用update语句。
– update <ClassName> set ... [where where _conditions]
经典 Java EE 课程
段鹏松
第11章 JPA的查询支持
课程目标
掌握JPA查询的基本流程 掌握JPQL的基本语法 了解在JPA中使用原生SQL查询
概述
• JPA定义了一套属于面向对象的查询语言: Java Persistence Query Language(JPQL) • JPQL是面向对象的查询语言,因此它完全可 以理解继承、多态和关联等特性。
• where子句用于筛选查询的结果,缩小查 询的范围。常用的格式如下:
– select 实体别名.实体属性1,实体别名.实体属 性2...... from...... where 条件表达式
• 条件表达式中可以采用精确查找,也可以 采用模糊查找。 • 常用的条件运算符都支持。 • 实际操作演示
使用JPQL函数
• 实际操作演示
聚集函数和分组
• JPQL的聚集函数
– avg – count – max – min – sum
• 返回聚集值的查询可以对实体类或组件的 属性使用group by进行分组。 • 实际操作演示
结果集分页
• 分页指的是获取查询记录中指定范围的记 录,在显示的时候非常有用。 • JPQL中的Query接口中提供了如下两个方 法进行分页控制:
查询中使用构造器
• JPQL允许在查询中根据选出的属性来创 建对象。常用的格式如下:
– select new className(属性名1,属性名2 ,...) from ...
• 必须存在相应的构造函数。 • 查询出来的集合元素就是相应类型的构造 类型。 • 实际操作演示
where子句和条件表达式
• JPQL内置了大量函数,极大地方便了数据库 查询操作。
目录
• • • • • 查询API 执行查询 JPQl语法 批量更新和批量删除 原生SQL查询
面向对象的JPQL
• SQL和JPQL最大的区别
– SQL是面向数据库的查询语言 – JPQL是面向对象的查询语言,类似HQL
• JPQL的基本语法格式
调用存储过程
• JPQL允许通过Query来调用存储过程,调 用存储过程相当于执行原生SQL查询。 • 格式如下
– call 存储过程名 (?1,?2,...) • 注意:
– 如果要给存储过程传参数,必须带编号 – 不要带大括弧
• 实际操作演示
本章小结
• • • • 学习了JPA的查询 学习了JPQL语言的基本用法 学习了批量修改和批量删除操作 注意各种不同查询的用法
– :参数名
• 查询结果
– 一条记录,使用getSingleResult() – 多条记录,使用getResultList()
• 实际操作演示
简单示例(位置参数查询)
Query query =em.createQuery ("select p from Flentity p where p.f_name=?1"); query.setParameter(1,"A1");
return query.getResultList();
目录
• • • • • 查询API 执行查询 JPQl语法 批量更新和批量删除 原生SQL查询
概述
• 经过前面的学习,已经掌握了JPQL的基 本查询流程。 • 本小节主要讲述JPQL查询的细节,知识 点较为零碎。
使用from子句
• from子句用于查询指定的实体,其后紧跟 实体类的类名。常用的格式如下:
return query.getResultList();
简单示例(命名参数查询)
Query query =em.createQuery ("select p from Flentity p where p.f_name=:name"); query.setParameter(“name”,"A1");
合集下载

jpa教程

jpa教程

jpa教程JPA(Java Persistence API) 是Java平台上的一个ORM(Object-Relational Mapping)标准,它允许开发人员将Java对象映射到关系数据库。

JPA提供了一种简单且一致的方式来执行常见的数据库操作,如插入、更新、删除和查询数据。

JPA的核心是实体类(Entity Class),它们是映射到数据库表的Java类。

通过使用JPA注解来注释实体类,开发人员可以指定实体类的属性与数据库表的列之间的映射关系。

这些注解包括@Entity 、@Table、@Column等。

开发人员还可以使用关系注解,如@OneToMany、@ManyToOne等来定义实体类之间的关系。

在使用JPA时,开发人员通常需要创建一个实体管理器(Entity Manager),它是JPA的核心接口之一。

通过实体管理器,可以执行各种数据库操作,如持久化(Persist)、合并(Merge)、删除(Remove)和查询(Query)等。

为了获取实体管理器,可以通过JPA的实体管理器工厂(Entity Manager Factory)来创建。

JPA支持各种查询操作。

可以使用Java Persistence Query Language(JPQL)编写查询语句,它类似于SQL。

JPQL支持基本的查询功能,如选择(Select)、过滤(Where)、排序(Order by)等。

此外,还可以使用JPA的Criteria API来编程式地构建查询。

Criteria API提供了一种类型安全的查询方式,利用编译时检查来避免运行时错误。

除了基本的CRUD操作,JPA还提供了一些高级特性。

例如,可以使用继承来实现对象间的多态关系,通过映射继承层次结构到数据库表。

还可以使用JPA的事务管理机制,确保数据的一致性和完整性。

另外,JPA还支持延迟加载(Lazy loading)和缓存(Caching),以提高应用程序的性能。

java学习(JPA的查询语言)

java学习(JPA的查询语言)

JPA的查询语言:JPQL的关联查询本文主要讲解了JPA的查询语言,从一关联到多的查询和从多关联到一的查询来简单说说关联查询。

详细请看下文从一关联到多的查询和从多关联到一的查询来简单说说关联查询。

实体Team:球队。

实体Player:球员。

球队和球员是一对多的关系。

Team.java:1.package datacom.jpa.entity;2.3.import java.util.HashSet;4.import java.util.Set;5.6.import javax.persistence.CascadeType;7.import javax.persistence.Column;8.import javax.persistence.Entity;9.import javax.persistence.FetchType;10.import javax.persistence.GeneratedValue;11.import javax.persistence.Id;12.import javax.persistence.OneToMany;13.import javax.persistence.Table;14.15.16./**17. * 球队18. * @author Luxh19. */20.@Entity21.@Table(name="team")22.public class Team{23.24.@Id25.@GeneratedValue26.private Long id;27.28./**球队名称*/29.@Column(name="name",length=32)30.private String name;31.32./**拥有的球员*/33.@OneToMany(mappedBy="team",cascade=CascadeType.ALL,fetch=FetchType.LAZY)34.private Set<Player> players = new HashSet<Player>();35.36.//以下省略了getter/setter方法37.38.//......39.}Player.java:1.package datacom.jpa.entity;2.3.4.import javax.persistence.CascadeType;5.import javax.persistence.Column;6.import javax.persistence.Entity;7.import javax.persistence.GeneratedValue;8.import javax.persistence.Id;9.import javax.persistence.JoinColumn;10.import javax.persistence.ManyToOne;11.import javax.persistence.Table;12.13.14./**15. * 球员16. * @author Luxh17. */18.@Entity19.@Table(name="player")20.public class Player{21.22.@Id23.@GeneratedValue24.private Long id;25.26./**球员姓名*/27.@Column(name="name")28.private String name;29.30./**所属球队*/31.@ManyToOne(cascade={CascadeType.MERGE,CascadeType.REFRESH})32.@JoinColumn(name="team_id")33.private Team team;34.35.//以下省略了getter/setter方法36.37.//......38.}1、从One的一方关联到Many的一方:查找出球员所属的球队,可以使用以下语句:1.SELECT DISTINCT t FROM Team t JOIN t.players p where LIKE :name或者使用以下语句:1.SELECT DISTINCT t FROM Team t,IN(t.players) p WHERE LIKE :name 上面两条语句是等价的,产生的SQL语句如下:1.select2.distinct team0_.id as id0_,3. team0_.name as name0_4.from5. team team0_6.inner join7. player players1_8.on team0_.id=players1_.team_id9.where10. players1_.name like ?从SQL语句中可以看到team inner join 到player。

jpa高级用法

jpa高级用法

jpa高级用法
- 自定义查询:JPA 提供了强大的查询语言(JPQL),可以使用它来定义复杂的查询。

除了使用 JPQL 之外,还可以使用 Criteria API 来动态构建查询。

- 继承映射:JPA 支持继承映射,可以将一个类继承结构映射到数据库表中。

通过使用继承映射,可以更好地组织和管理数据。

- 关联关系:JPA 支持多种关联关系,如一对一、一对多和多对多。

可以通过注解或 XML 映射文件来定义这些关联关系。

- 事务管理:JPA 提供了事务管理的功能,可以将多个数据库操作组合成一个事务,以确保数据的一致性。

- 缓存:JPA 提供了缓存机制,可以提高查询性能。

可以通过配置缓存策略和大小来优化缓存的使用。

- 乐观锁:JPA 支持乐观锁,可以在并发环境下确保数据的一致性。

通过在注解或 XML 映射文件中配置乐观锁,可以控制并发更新的行为。

这些只是 JPA 的一些高级用法,你可以根据具体需求查看相关文档或进行更深入的学习。

如需了解更多关于 JPA 的高级用法信息,可以继续向我提问。

jpa expression 多表达式

jpa expression 多表达式

JPA是Java持久化API的缩写,是一种用于管理Java应用程序持久化数据的标准。

JPA提供了多种查询方式,其中JPA表达式是一个非常常用的查询方法。

它允许开发人员以一种非常规范的方式编写数据库查询语句,而不需要直接使用SQL语句。

在JPA中,表达式可以用于多表关联查询,通过在实体类之间建立关联关系来实现多表查询。

在使用JPA表达式进行多表查询时,可以使用以下几种方法:1. 使用关联实体类的属性进行查询当实体类之间建立了关联关系时,可以直接使用关联实体类的属性进行查询。

如果有一个订单实体类和一个客户实体类,订单实体类中有一个customer属性,表示该订单所属的客户,那么可以使用customer属性进行查询客户相关的订单信息。

2. 使用连接查询在JPA中,可以使用JOIN关键字进行连接查询,将多个实体类进行关联查询。

如果需要查询订单和客户的相关信息,可以使用连接查询将订单表和客户表进行关联,并根据条件进行筛选。

3. 使用子查询JPA表达式还支持使用子查询进行多表查询。

子查询是指在查询语句中嵌套另一个查询语句,可以根据外部查询的结果来进行内部查询的条件筛选。

使用子查询可以在不使用连接查询的情况下,实现多表的关联查询。

4. 使用Fetch关键字在JPA中,可以使用Fetch关键字来指定查询时关联实体类的加载方式。

通过Fetch关键字,可以指定关联实体类在查询时是立即加载还是延迟加载,从而提高查询的性能。

5. 使用Criteria查询JPA还提供了Criteria查询的方式,通过CriteriaBuilder和CriteriaQuery来构建查询条件,可以实现动态查询、多条件查询等功能,非常灵活。

总结JPA表达式是JPA中进行多表查询的常用方法,通过使用JPA表达式,开发人员可以以一种非常规范的方式编写多表查询语句,而不需要直接使用SQL语句。

在实际开发中,根据业务需求和性能考虑,可以选择适合的多表查询方式,并结合JPA提供的其他查询功能,构建高效、灵活的数据库查询操作。

jpa的用法

jpa的用法

jpa的用法JPA(即Java Persistence API)是Java平台的一个ORM(对象关系映射)规范,它提供了一种方便的方式来访问和管理数据库中的数据。

JPA的使用可以大大简化开发人员对数据库操作的工作量,同时提高了应用的可维护性和可扩展性。

首先,使用JPA需要将其整合到Java应用程序中。

首先,我们需要在项目的依赖管理中添加JPA的相关依赖项,例如Hibernate、Spring Data JPA等。

然后,我们需要配置JPA的连接信息,包括数据库的连接URL、用户名、密码等。

接下来,我们需要定义实体类。

实体类是映射到数据库表的Java对象,每个字段对应表的一个列。

在实体类中,我们可以使用注解来指定表名、字段名等。

同时,还需要定义实体类与表之间的映射关系,例如一对一、一对多等关系。

在完成实体类的定义后,我们就可以使用JPA提供的各种API来对数据库进行操作了。

JPA提供了一系列的接口和类,用于查询、插入、更新、删除等操作。

可以通过编写JPQL(即Java Persistence Query Language)查询语句来执行数据库查询操作。

除了基本的CRUD操作,JPA还提供了一些高级功能,例如事务管理、缓存、延迟加载等。

通过使用JPA的事务管理功能,可以确保在数据库操作中保持一致性和完整性。

缓存功能可以提高应用程序的性能,减少数据库访问次数。

延迟加载功能可以延迟加载实体对象的关联属性,以减少不必要的数据库查询。

总而言之,JPA是一个强大且易于使用的ORM框架,可以帮助开发人员更高效地操作数据库。

通过学习和掌握JPA的用法,可以大大提升开发效率,并提供更好的应用性能和可维护性。

jpa 用法

jpa 用法

jpa 用法
JPA(Java Persistence API)是一种Java标准,用于将Java 对象与关系数据库进行映射。

下面是JPA的基本用法:
1.添加依赖:首先,需要在项目中添加JPA的依赖。

常见的做法是使用Maven或Gradle等构建工具,将相关的JAR 包添加到项目中。

2.配置数据源:在项目中配置数据源,包括数据库连接信息、用户名和密码等。

这通常在项目的配置文件中完成。

3.创建实体类:根据数据库表的结构,创建对应的Java 实体类。

每个实体类通常对应一个数据库表,实体类中的属性与表中的列一一对应。

4.配置实体管理器:使用实体管理器来管理实体类的生命周期,包括实体的创建、查询、更新和删除等操作。

5.查询数据:使用JPQL(Java Persistence Query Language)或SQL查询数据。

JPQL是一种类似于SQL的查询语言,专门用于查询实体类和关联数据。

6.处理结果:查询结果通常返回一个实体类的列表或单个实体对象。

可以根据需要对结果进行处理,例如将数据展示在前端页面上。

7.事务管理:在执行数据增删改查等操作时,需要进行事务管理。

JPA支持声明式事务管理,可以通过注解或XML
配置来指定事务的边界。

以上是JPA的基本用法,具体的实现方式可能因不同的框架和环境而有所差异。

jpa查询语言

JPA查询语言(JPQL)JPQL,SQL和批量处理白汉奇[译]目录概述 (1)类型 (2)保留标志符 (4)路径表达式 (4)界定变量(Range Variables) (6)JOINS (6)INNER JOIN (7)LEFT OUTER JOIN (7)FETCH JOIN (8)WHERE,GROUP BY,HAVING (10)条件表达式(CONDITIONAL EXPRESSIONS) (10)函数与表达式(FUNCTIONS AND EXPRESSIONS) (10)字符串函数(STRING FUNCTIONS) (13)数学函数(ARITHMETIC FUNCTIONS) (13)时间函数(DATETIME FUNCTIONS) (14)SECLECT函数 (14)构造器函数(CONSTRUCTOR EXPRESSION) (15)统计函数(AGGREGATE FUNCTIONS) (15)使用法则(RULES OF USAGE) (16)排序(ORDER BY) (16)批量处理(BULK OPERATIONS) (17)实例 (18)总结(SUMMARY) (20)本章探讨Java持久化查询语言(JPQL),在简单的向你介绍JPQL后,会直接切入创建查询这个话题。

本章会涉及一个查询的方方面面,包括fetch join操作。

fetch join操作会提前读取延时关联(lazy relationship),以消除LazyInitializationException异常,这在使用ORM方案时,常常困扰很多应用程序的开发。

接下来,会了解一下JPQL的打量操作支持。

学习完本章时,你会对JPQL有一个全面的认识。

概述JPQL是一种与数据库无关的,基于实体(entity-based)的查询语言。

它是EJB QL的一个扩展,并加入了很多EJB QL中所没有的新特性。

JPQL支持projection(可以查询某个实体的字段而不需要查询整个实体),批量操作(update和delete),子查询,join,group by和having操作。

jpa查询语法

jpa查询语法JPA(Java Persistence API)是Java EE的一部分,它提供了一种标准的ORM(对象关系映射)框架,使得Java开发人员可以更加方便地操作数据库。

在JPA中,查询是非常重要的一部分,因为它可以帮助我们从数据库中获取所需的数据。

本文将介绍JPA查询语法的基本知识和使用方法。

1. 查询语法JPA查询语法分为两种:JPQL(Java Persistence Query Language)和Criteria API。

JPQL是一种面向对象的查询语言,类似于SQL,但是它是基于实体类和属性的,而不是基于表和列的。

Criteria API是一种类型安全的查询语言,它使用Java代码来构建查询,可以避免一些常见的错误。

2. JPQL查询语法JPQL查询语法类似于SQL,但是它使用实体类和属性来代替表和列。

以下是JPQL查询语法的基本结构:SELECT [DISTINCT] [OBJECT | NEW] entity_name [alias]FROM entity_name [alias][WHERE where_clause][GROUP BY {grouping_item,}*][HAVING conditional_expression][ORDER BY {ordering_item,}*]其中,entity_name是实体类的名称,alias是实体类的别名,where_clause是查询条件,grouping_item和ordering_item是分组和排序的属性。

以下是一个简单的JPQL查询示例:SELECT e FROM Employee e WHERE e.salary > 50000这个查询将返回所有薪水大于50000的员工。

3. Criteria API查询语法Criteria API是一种类型安全的查询语言,它使用Java代码来构建查询。

以下是Criteria API查询语法的基本结构:CriteriaBuilder cb = entityManager.getCriteriaBuilder(); CriteriaQuery<Employee> cq = cb.createQuery(Employee.class);Root<Employee> root = cq.from(Employee.class);cq.select(root).where(cb.gt(root.get("salary"), 50000));其中,CriteriaBuilder是Criteria API的构建器,entityManager是JPA的实体管理器,CriteriaQuery是查询对象,Root是查询的根实体,select方法用于指定查询的返回结果,where方法用于指定查询条件。

JPA帮助文档

JPA 批注参考版本: 5/12/06作为 Java 企业版 5 (Java EE 5) Enterprise Java Bean (EJB) 3.0 规范的组成部分,Java 持续性 API (JPA) 显著简化了 EJB 持续性并提供了一个对象关系映射方法,该方法使您可以采用声明方式定义如何通过一种标准的可移植方式(在 Java EE 5 应用服务器内部以及 Java 标准版 (Java SE) 5 应用程序中的 EJB 容器外部均可使用)将 Java 对象映射到关系数据库表。

在 JPA 之前,Java EE 应用程序将持续类表示为容器管理的实体 bean。

使用 JPA,您可以将任何普通的旧式 Java 对象 (POJO) 类指定为 JPA 实体:一个应使用 JPA 持续性提供程序的服务将其非临时字段持久保存到关系数据库(在 Java EE EJB 容器的内部或在简单 Java SE 应用程序中的 EJB 容器的外部)的 Java 对象。

使用 JPA 时,可以使用批注配置实体的 JPA 行为。

批注是一种使用元数据修饰 Java 源代码的简单表达方法,它编译为相应的 Java 类文件,以便在运行时由 JPA 持续性提供程序解释以管理 JPA 行为。

例如,要将 Java 类指定为 JPA 实体,请使用@Entity批注,如下所示:@Entitypublic class Employee implements Serializable {...}您可以有选择地使用批注来修饰实体类以覆盖默认值。

这称作按异常进行配置 (configuration by exception)。

本参考广泛引用了JSR-220 Enterprise JavaBean 版本 3.0 Java 持续性 API 规范,以按类别汇总批注信息(请参阅表 1-1),并解释了何时以及如何使用这些批注来自定义 JPA 行为,以满足应用程序的需要。

jpa查询方法命名规则 实现原理

JPA(Java Persistence API)是一种用于对象持久化的API。

在JPA 中,查询方法命名规则是指在repository接口中定义查询方法时,方法名需要符合一定的规范,以便JPA可以根据方法名自动生成查询语句。

本文将介绍JPA查询方法命名规则的实现原理,帮助读者更好地理解JPA的工作原理。

一、JPA查询方法命名规则在JPA中,可以通过定义repository接口的方法来实现数据持久化操作。

这些方法在命名时,需要符合一定的规范,以便JPA可以通过方法名自动生成查询语句。

具体地,JPA查询方法命名规则包括以下几个方面:1. 方法名的前缀在定义查询方法时,方法名一般以find、read、get、query、count 等关键词开头,用于表示该方法是用于查询操作。

2. 查询条件的属性在方法名中可以通过实体类的属性名来定义查询条件,比如findByUsername、findByAge等。

这些属性名需要与实体类中的属性名一致。

3. 查询条件的连接词在定义多个查询条件时,可以通过And、Or等连接词将多个条件连接起来,比如findByUsernameAndAge、findByUsernameOrEm本人l等。

4. 查询条件的关键词在定义特定的查询条件时,可以使用Is、Equals、Like、GreaterThan、LessThan等关键词来表示不同的比较方式,比如findByUsernameLike、findByAgeGreaterThan等。

5. 查询条件的排序在定义查询方法时,可以通过OrderBy关键词来指定查询结果的排序方式,比如findByUsernameOrderByAgeDesc等。

通过符合以上规范,JPA可以根据方法名自动生成对应的SQL查询语句,从而实现数据持久化操作。

二、JPA查询方法命名规则的实现原理JPA查询方法命名规则的实现原理主要涉及到JPA的底层机制及其对方法名的解析。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档