mybatis中的typeAlias

mybatis 的 xml 文件中需要写类的全限定名,较繁琐,可以配置自动扫描包路径给类配置别名,有两种配置方式。

方式一:

mybatis-config.xml 中配置

<typeAliases>
  <package name="top.jimc.ssm.model"/>
</typeAliases>

此配置不支持多路径配置,不支持通配符配置,不灵活。

方式二:

SqlSessionFactory 中配置 typeAliasesPackage 属性,Mybatis主配置文件 configLocation.xml

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!--dataource-->
        <property name="dataSource" ref="dataSource"/>
        <!--Mapper files-->
        <property name="mapperLocations" value="classpath*:config/mybatis/local/*.xml" />
        <!--Entity package-->
        <!--<property name="typeAliasesPackage" value="com.dianping.zebra.dao.entity" />-->
        <property name="typeAliasesPackage" value="com.dianping.emidas.lottery.dao.entity"/>
        <property name="configLocation" value="classpath:config/mybatis/mybatis-configuration.xml" />
    </bean>

0x01:标签介绍
在 MyBatis 的 sql 映射配置文件中,需要使用 paramterType、resultType 来设置 sql 语句的输入输出参数,一般参数都是基本的数据类型或封装类型,但都需要声明该类型的全路径,java.lang.String,或者 cn.com.mybatis.pojo.User, 这时就可以通过 typeAliases 别名来设置,简化复杂度

0x02:代码示例
例如之前介绍的模糊查询示例,当不使用别名,而使用全路径时,配置示例代码如下:

<select id="findUserByUsername" parameterType="java.lang.String" resultType="cn.com.mybatis.pojo.User">
    SELECT * FROM USER WHERE username LIKE '%${value}%'
</select>

当通过设置 MyBatis 的全局配置文件 SqlMapConfig 中的 typeAliases 属性后,就可以为 sql 映射文件中的输入 / 输出参数设置类型别名,然后在 sql 映射配置文件中指定输入输出参数类型时使用的别名。首先,SqlMapConfig 配置文件示例如下:

<typeAliases>
    <typeAlias alias="user" type="cn.com.mybatis.pojo.User"/>
    <typeAlias alias="str" type="java.lang.String"/>
</typeAliases>
这样就可以在 sql 映射配置文件中使用别名来指定输入 / 输出参数的类型了,其示例代码如下:

<select id="findUserByUsername" parameterType="str" resultType="user">
    SELECT * FROM USER WHERE username LIKE '%${value}%'
</select>


0x03:别名拓展
像刚才的 JavaBean,User 是放在 cn.com.mybatis.pojo 包里的,包里可能也会存在其他多个 JavaBean,这时候一个一个配置别名就会很麻烦,这时候就需要批量定义别名,批量指定很简单,只要指定包名即可,之后程序会为包下的所有类都自动加上别名,其定义别名的规范就是对应包装类的类名首字母变为小写,其示例代码如下:

<typeAliases>
    <package name="cn.com.mybatis.pojo"/>
</typeAliases>
这时设置的包名下的类就都有了别名,别名就是类名(首字母小写),像刚才的 User 类,其别名就为 user。
除了在配置文件中单独的配置别名和批量的配置别名两种方式外,还有一种方式,就是通过注解的方式来配置别名,方法也很简单,在需要配置别名的类前通过 @Alias 注解即可,参数就是别名名称,例如以下示例代码:

@Alias("user")
public class User{
    //其他代码
}


0x04:常见类型别名汇总
MyBatis 已经为 Java 常见类型默认指定了别名,可以直接使用。因为有一些基本数据类型和包装类型的名称一样(例如基本数据类型 byte 和包装类型 java.lang.Byte),所以在基本的数据类型前面加了下划线 “_” 来以此区分(byte 别名就是_byte,java.lang.Byte 别名就是 byte)。常见的类型对应别名如下:

 

0x05:总结
在开发中,经常使用别名,可以提高开发效率,简化配置。

对常用的java 类型,已经内置了一些别名支持。这些别名都是不区分大小写的。注意java
的基本数据类型,它们进行了特别处理,加了“_”前缀。
 

参考:http://www.yiibai.com/mybatis/mybatis_typealiases.html


 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值