6.3 typeAliases
这个是 MyBatis 中定义的别名,分两种,一种是 MyBatis 自带的别名,另一种是我们自定义的别名。
6.3.1 MyBatis 自带的别名
| 别名 | 映射的类型 | 
|---|---|
| _byte | byte | 
| _long | long | 
| _short | short | 
| _int | int | 
| _integer | int | 
| _double | double | 
| _float | float | 
| _boolean | boolean | 
| string | String | 
| byte | Byte | 
| long | Long | 
| short | Short | 
| int | Integer | 
| integer | Integer | 
| double | Double | 
| float | Float | 
| boolean | Boolean | 
| date | Date | 
| decimal | BigDecimal | 
| bigdecimal | BigDecimal | 
本来,我们在 Mapper 中定义数据类型时,需要写全路径,如下:
<select id="getUserCount" resultType="java.lang.Integer">
    select count(*) from user ;
</select>
但是,每次写全路径比较麻烦。这种时候,我们可以用类型的别名来代替,例如用 int 做 Integer 的别名:
<select id="getUserCount" resultType="int">
    select count(*) from user ;
</select>
6.3.2 自定义别名
我们自己的对象,在 Mapper 中定义的时候,也是需要写全路径:
<select id="getAllUser" resultType="org.javaboy.mybatis.model.User">
    select * from user;
</select>
这种情况下,写全路径也比较麻烦,我们可以给我们自己的 User 对象取一个别名,在 mybatis-config.xml 中添加 typeAliases 节点:
<configuration>
    <properties resource="db.properties"></properties>
    <typeAliases>
        <typeAlias type="org.javaboy.mybatis.model.User" alias="javaboy"/>
    </typeAliases>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${db.driver}"/>
                <property name="url" value="${db.url}"/>
                <property name="username" value="${db.username}"/>
                <property name="password" value="${db.password}"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <package name="org.javaboy.mybatis.mapper"/>
    </mappers>
</configuration>
这里,我们给 User 对象取了一个别名叫 javaboy,然后,我们就可以在 Mapper 中直接使用 javaboy 来代替 User 对象了:
<select id="getAllUser" resultType="javaboy">
    select * from user;
</select>
但是,这种一个一个去枚举对象的过程非常麻烦,我们还可以批量给对象定义别名,批量定义主要是利用包扫描来做,批量定义默认的类的别名,是类名首字母小写,例如如下配置:
<typeAliases>
    <package name="org.javaboy.mybatis.model"/>
</typeAliases>
这个配置就表示给 org.javaboy.mybatis.model 包下的所有类取别名,默认的别名就是类名首字母小写。这个时候,我们在 Mapper 中,就可以利用 user 代替 User 全路径了:
<select id="getAllUser" resultType="user">
    select * from user;
</select>
在最新版中,批量定义的别名,类名首字母也可以不用小写,在实际开发中,我们一般使用第二种方式(批量定义的方式)
上篇事务