巧用<typeAliases>标签,简化你的mapper映射文件书写

很多人在使用mybatis的过程中,可能会遇到这种情景:在mapper映射文件中,resultType=" "或者parameterType= " " 引号中要引入某个Bean,这样就要写Bean的全路径名称,而全路径名称是很长的,代码量小了还好说,代码量多了,难免会觉得有些麻烦。

这种情况下,其实是可以给要引入的Bean设置别名的,这样在mapper映射文件中我们只需要在要引入Bean的地方比如文中开头提到resultType=" "或者parameterType= " "中写上设置的别名就可以了,直接减少了我们的代码量,简化了我们的开发过程。设置方式就是在mybatis的配置文件中使用<typeAliases>标签。具体方法如下:

首先,在mybatis-config.xml配置文件中,在<settings><settings/>标签的后面定义一组 <typeAliases><typeAliases/>标签。

PS:<typeAliases><typeAliases/>标签的顺序是一定要紧跟在<settings><settings/>的后面,否则启动项目时会报DTD解析的错~。

示例:

<configuration>

     <settings>
        <setting name="cacheEnabled" value="true" />
        <setting name="lazyLoadingEnabled" value="true" />
        <setting name="aggressiveLazyLoading" value="true" />
        <setting name="multipleResultSetsEnabled" value="true" />
        <setting name="useColumnLabel" value="true" />
        <setting name="autoMappingBehavior" value="PARTIAL" />
        <setting name="logImpl" value="LOG4J"/>
        <setting name="defaultStatementTimeout" value="6000"/>
        <!-- 使用驼峰命名法转换字段。 -->
        <setting name="mapUnderscoreToCamelCase" value="true" />
        <setting name="logImpl" value="SLF4J" />
    </settings>

    <!-- 配置 typeAliases 设置Bean别名-->
    <typeAliases>
        <package name=" "/>  <typeAlias type="" alias=""/>
    </typeAliases>

</configuration>

第二步就是根据自己的需求,选择给Bean指定别名的方式,这里有两种方式。

第一种是给某个指定的Bean设置别名。

设置方式是在<typeAliases></typeAliases>中使用<typeAlias type="" alias=""/>。type参数后面写要指定的Bean的全路径名称,alias参数后面写要设置的别名。

例如要把 cn.qwb.User 这个Bean设置别名为user,可配置为 <typeAlias type=" cn.qwb.User" alias="user" />

第二种就是给一个包下的所有Bean设置默认别名,即批量设置Bean别名。

设置方式是在<typeAliases></typeAliases>中使用<package name=" "/>。name参数后面写上一个包的全路径,该路径下所有的Bean都将被默认设置一个别名,这里mybatis默认设置的别名为Bean所在包的最后一级路径下的文件名,也就是这个Bean本身的名字。

例如要把 cn.qwb.User 和 cn.qwb.Info 统一设置别名,可配置为 <package name=" cn.qwb "/> ,这样 cn.qwb.User 和 cn.qwb.Info的别名分别默认设置为 User 与 Info。

如果想对批量设置的Bean别名中某一个Bean单独设置一个别的别名,可以使用mybaits的@Alias注解。

具体操作:在要单独设置别名的Bean中加上@Alias注解。

例如 要把cn.qwb.Info 设置一个别名叫做 china ,操作如下

@Alias(value="china")         //使用@Alias注解设置别名
public class Info {
    private String name;
    private String age;
    private String idCard;
    
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getAge() {
        return age;
    }
    public void setAge(String age) {
        this.age = age;
    }
    public String getIdCard() {
        return idCard;
    }
    public void setIdCard(String idCard) {
        this.idCard = idCard;
    }
    
}

以上便是如何在使用mybatis时给Bean设置别名的方法。

最后有两点需要注意:

1.不论使用哪种设置别名的方式,<typeAliases><typeAliases/>标签在mybatis的配置文件中一定要有,而且一定要紧跟<settings></settings>之后(如果<settings></settings>存在的话)。

2.如果要使用@Alias注解,注意一定要在<typeAliases><typeAliases/>中配置<package name=" "/> ,因为这个注解的原理是重命名mybatis默认设置的Bean别名,所以一定要有<package name=" "/>,否则启动项目时会报xxx.mapper中找不到类的异常。

以上便是今天对<typeAliases>标签的学习记录,因本人水平有限,文中如有不妥,请各位朋友批评指出,谢谢~

 

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值