别名机制

[color=blue]
别名现象:发生在对象赋值的时候(a=b),(a,b)两个对象包含相同的引用,他们指向相同的对象,a原本包含的对对象的引用,现在这个引用已经被覆盖,这个不再被引用的对象会被“垃圾回收器”自动清理。由于对象赋值的操作是一个对象的引用,修改a的同时也修改了b。
别名机制:有效地保持两个对象独立,而不是将a和b绑定到相同的对象上。
class Tank{
int level;
}
public class TestOperator{
public static void main(String argv[]){
Tank t1=new Tank();
Tank t2=new Tank();
t1.level=47;
t2.level=49;
System.out.println("t1 level is :"+t1.level+" "+"t2 level is :"+t2.level);
t1=t2;//t1,t2包含相同的引用,他们指向相同的对象
//t1.level=t2.level;//别名机制,有效地保持两个对象独立,而不是将t1和t2绑定到相同的对象上
System.out.println("t1 level is :"+t1.level+" "+"t2 level is :"+t2.level);
t1.level=22;
System.out.println("t1 level is :"+t1.level+" "+"t2 level is :"+t2.level);
}
}[/color]
### MyBatis 别名的配置方法 MyBatis 提供了一种便捷的方式来简化 SQL 映射文件中的类名书写,这就是 **别名 (alias)** 的功能。通过配置别名,可以避免在映射文件中频繁输入完整的类路径名称。 #### 配置方式 ##### 1. 单个别名配置 可以通过 `<typeAlias>` 标签手动为某个 Java 类指定一个自定义的别名。这种方式适用于少量特定类的情况[^4]。 ```xml <typeAliases> <typeAlias type="com.xlj.CleanPolicy" alias="CleanPolicy"/> </typeAliases> ``` 在此示例中,`com.xlx.CleanPolicy` 被赋予了一个名为 `CleanPolicy` 的别名。之后,在 Mapper 文件中可以直接使用该别名代替完整的类路径。 --- ##### 2. 批量别名配置 如果项目中有大量的实体类需要设置别名,则可以采用批量扫描的方式自动注册这些类的别名。默认情况下,MyBatis 会将包下的类名(首字母小写)作为其对应的别名。 ```xml <typeAliases> <package name="com.xlj.model"/> </typeAliases> ``` 假设 `com.xlj.model` 包下有一个名为 `User` 的类,那么它的默认别名将是 `user`。当然也可以覆盖这个行为并显式地为其提供一个新的别名。 --- ##### 3. 默认规则与注意事项 - 如果未明确声明任何别名,默认会基于类名创建一个小写的版本作为别名。 - 当存在多个相同名字但不同包路径的类时,建议使用完全限定名或者单独定义唯一的别名来防止冲突。 - 可以混合使用单个和批量两种形式来进行更灵活管理。 以下是综合以上几种情况的一个完整例子: ```xml <configuration> <!-- 单独定义 --> <typeAliases> <typeAlias type="com.example.domain.UserProfile" alias="profile"/> <!-- 整体扫描 --> <package name="com.example.entity"/> </typeAliases> </configuration> ``` 在这个片段里,“UserProfile”的别名被设定成了“profile”,而“entity”目录里的所有类都按照它们的小写字母形式获得各自的别名[^4]。 --- ### 总结 无论是单一还是整体类型的别名机制都能有效减少冗余代码提高可读性和维护效率。合理运用这两种策略可以帮助开发者更好地组织大型应用程序的数据层结构。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值