单射要求不同输入对应不同输出,满射要求陪域每个元素都有原像,双射则需同时满足单射与满射;三者本质区别在于单射约束定义域分离性,满射约束陪域完备性,二者独立且不互相蕴含。

如果您在分析函数映射关系时需要区分单射、满射与双射,关键在于理解它们对定义域与陪域之间元素对应方式的不同约束。以下是辨析这三类映射的核心方法:
一、单射:强调“不重复”的输入输出关系
单射要求定义域中任意两个不同元素不能映射到同一个陪域元素,即保证“不同输入 → 不同输出”,其本质是防止映射过程出现“多对一”现象。该性质不关心陪域是否被完全覆盖,只关注映射的唯一性。
1、设函数 f: X → Y,任取 x₁, x₂ ∈ X 且 x₁ ≠ x₂,验证是否总有 f(x₁) ≠ f(x₂)。
2、采用代数反证法:假设 f(x₁) = f(x₂),推导出 x₁ = x₂ 成立,则 f 是单射。
3、对图像函数,可使用水平线测试:若任意一条水平线与函数图像至多交于一点,则该函数为单射。
二、满射:强调“无遗漏”的值域覆盖
满射要求陪域 Y 中的每一个元素 y 都至少有一个定义域 X 中的 x 满足 f(x) = y,即函数的值域必须等于陪域。其本质是确保“每个目标都有来源”,允许多个输入映射到同一输出,但绝不允许陪域中存在未被映射到的元素。
1、明确给定函数的陪域 Y,再求出其实际值域 {f(x) | x ∈ X}。
2、判断是否满足值域 = 陪域;若值域 ⊂ 陪域且存在 y₀ ∈ Y 使得 ∀x ∈ X, f(x) ≠ y₀,则不是满射。
3、对有限集合间的映射,可逐一列出 Y 中每个元素,并在 X 中寻找至少一个原像;若某 y 缺乏原像,则非满射。
本文档主要讲述的是mybatis语法和介绍;MyBatis 是一个可以自定义SQL、存储过程和高级映射的持久层框架。MyBatis 摒除了大部分的JDBC代码、手工设置参数和结果集重获。MyBatis 只使用简单的XML 和注解来配置和映射基本数据类型、Map 接口和POJO 到数据库记录。相对Hibernate和Apache OJB等“一站式”ORM解决方案而言,Mybatis 是一种“半自动化”的ORM实现。感兴趣的朋友可
三、双射:单射与满射的严格叠加
双射是单射与满射同时成立的情形,意味着定义域与陪域之间构成严格的“一一对应”关系:每个 x 对应唯一 y,且每个 y 也恰好对应唯一 x。这种映射具有可逆性,且其逆函数必然存在并同样为双射。
1、先验证是否为单射:确认 f(x₁) = f(x₂) ⇒ x₁ = x₂。
2、再验证是否为满射:确认 ∀y ∈ Y, ∃x ∈ X 使 f(x) = y。
3、若两条件均满足,则 f 是双射,且存在唯一的逆函数 f⁻¹: Y → X,满足 f⁻¹(f(x)) = x 且 f(f⁻¹(y)) = y。
四、本质区别的直观对照
单射与满射的本质区别在于约束方向根本不同:单射限制的是定义域内部元素在映射下的**分离性**,即不允许两个不同输入共享同一输出;而满射限制的是陪域整体在映射下的**完备性**,即不允许任何陪域元素处于“未被到达”状态。二者独立存在,互不蕴含。
1、函数 f(n) = n + 1 在 ℤ → ℤ 上是单射但非满射,因所有整数均有唯一像,但陪域中无元素映射到 0(若从 ℕ 出发则更明显)。
2、函数 g(x) = x² 在 ℝ → [0, +∞) 上是满射但非单射,因每个非负实数都有原像,但 g(−1) = g(1) = 1,违反单射定义。
3、函数 h(x) = 2x + 3 在 ℝ → ℝ 上既是单射又是满射,故为双射;其逆函数 h⁻¹(y) = (y − 3)/2 明确存在。









