映射文件里面使用别名

使用 typeAliases 配置别名

我们看一下映射文件,是不是有很多重复的地方。这些都是配置一个对应的实体类,但这样整个配置文件里会出现很多冗长的包路径。如果能用一个别名来代替那就好了。

我们可以使用 typeAliases 标签来标记别名。注意这个标签是在 conf.xml 文件里面配置的,不是在映射文件里面,并且这个标签要放在 properties 标签的下面、environments 的上面。

方式一:为单个类指定别名

<typeAliases>
    <typeAlias type="cn.foxdevelop.models.Account" alias="Account"/>
</typeAliases>Code language: HTML, XML (xml)

然后我们在映射文件里面就可以直接使用 Account 代替完整的包路径:

<select id="getAccount" parameterType="int" resultType="Account">
    select * from account where id = #{id}
</select>Code language: HTML, XML (xml)

方式二:为包下所有类自动配置别名

我们还可以为所有的类都增加别名,只需要增加一个 package 配置,这样默认所有的类都不需要使用包路径了。

<typeAliases>
    <!-- <typeAlias type="cn.foxdevelop.models.Account" alias="Account"/> -->
    <package name="cn.foxdevelop.models"/>
</typeAliases>Code language: HTML, XML (xml)

这样配置之后,映射文件里面的所有类都默认直接使用类名即可,例如:

<select id="getAccount" parameterType="int" resultType="Account">
    select * from account where id = #{id}
</select>Code language: HTML, XML (xml)
<insert id="addAccount" parameterType="Account">
    insert into account(name,age,sex,AddTime) values(#{name},#{age},#{sex},#{AddTime})
</insert>Code language: HTML, XML (xml)

conf.xml 中完整配置示例

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <properties resource="db.properties"/>

    <typeAliases>
        <package name="cn.foxdevelop.models"/>
    </typeAliases>

    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC" />
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}" />
                <property name="url" value="${jdbc.url}" />
                <property name="username" value="${jdbc.username}" />
                <property name="password" value="${jdbc.password}" />
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <mapper resource="cn/foxdevelop/mapper/AccountMapper.xml"/>
    </mappers>
</configuration>Code language: HTML, XML (xml)

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注