1.背景

类型别名可为 Java 类型设置一个缩写名字。 它仅用于 XML 配置,意在降低冗余的全限定类名书写。

2.方法一

(1)配置中添加

 <typeAliases>
        <typeAlias alias="User" type="com.leo.pojo.User"/>
    </typeAliases>

完整配置

<?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"></properties>
    <typeAliases>
        <typeAlias alias="User" type="com.leo.pojo.User"/>
    </typeAliases>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="com/leo/dao/UserMapper.xml"/>
    </mappers>
</configuration>

(2)修改数据库操作

将所有的com.leo.pojo.User换成User

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.leo.dao.UserDao">
    <select id="getUserList" resultType="com.leo.pojo.User">
        select * from mybatis.user;
    </select>
    <select id="getUserById" resultType="com.leo.pojo.User" parameterType="int">
        select * from mybatis.user where id = #{id};
    </select>
    <insert id="addUser" parameterType="com.leo.pojo.User">
        insert into mybatis.user(id, name, pwd) values(#{id},#{name},#{pwd});
    </insert>
    <update id="updateUser" parameterType="com.leo.pojo.User">
        update mybatis.user set name=#{name},pwd=#{pwd} where id=#{id};
    </update>
    <delete id="deleteUser" parameterType="int">
        delete from mybatis.user where id = #{id}
    </delete>
    <insert id="addUser2" parameterType="map">
        insert into mybatis.user(id, name, pwd) values(#{userId},#{userName},#{userPwd});
    </insert>
    <select id="getUserLike" parameterType="string" resultType="com.leo.pojo.User">
        select * from mybatis.user where name like #{value};
    </select>
</mapper>

换成后的

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.leo.dao.UserDao">
    <select id="getUserList" resultType="User">
        select * from mybatis.user;
    </select>
    <select id="getUserById" resultType="User" parameterType="int">
        select * from mybatis.user where id = #{id};
    </select>
    <insert id="addUser" parameterType="User">
        insert into mybatis.user(id, name, pwd) values(#{id},#{name},#{pwd});
    </insert>
    <update id="updateUser" parameterType="User">
        update mybatis.user set name=#{name},pwd=#{pwd} where id=#{id};
    </update>
    <delete id="deleteUser" parameterType="int">
        delete from mybatis.user where id = #{id}
    </delete>
    <insert id="addUser2" parameterType="map">
        insert into mybatis.user(id, name, pwd) values(#{userId},#{userName},#{userPwd});
    </insert>
    <select id="getUserLike" parameterType="string" resultType="User">
        select * from mybatis.user where name like #{value};
    </select>
</mapper>

3.方法二

可以指定一个包名,MyBatis 会在包名下面搜索需要的 Java Bean

<typeAliases>
        <package name="com.leo.pojo"/>
    </typeAliases>
package com.leo.pojo;

// 实体类
public class User {
    private int id;
    private String name;
    private String pwd;

    public User() {
    }

    public User(int id, String name, String pwd) {
        this.id = id;
        this.name = name;
        this.pwd = pwd;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPwd() {
        return pwd;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", pwd='" + pwd + '\'' +
                '}';
    }
}

 将所有的com.leo.pojo.User换成首字母小写user

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.leo.dao.UserDao">
    <select id="getUserList" resultType="user">
        select * from mybatis.user;
    </select>
    <select id="getUserById" resultType="user" parameterType="int">
        select * from mybatis.user where id = #{id};
    </select>
    <insert id="addUser" parameterType="user">
        insert into mybatis.user(id, name, pwd) values(#{id},#{name},#{pwd});
    </insert>
    <update id="updateUser" parameterType="user">
        update mybatis.user set name=#{name},pwd=#{pwd} where id=#{id};
    </update>
    <delete id="deleteUser" parameterType="int">
        delete from mybatis.user where id = #{id}
    </delete>
    <insert id="addUser2" parameterType="map">
        insert into mybatis.user(id, name, pwd) values(#{userId},#{userName},#{userPwd});
    </insert>
    <select id="getUserLike" parameterType="string" resultType="user">
        select * from mybatis.user where name like #{value};
    </select>
</mapper>

4.方法三

每一个在包 domain.blog 中的 Java Bean,在没有注解的情况下,会使用 Bean 的首字母小写的非限定类名来作为它的别名。 比如 domain.blog.Author 的别名为 author;若有注解,则别名为其注解值。见下面的例子:

@Alias("author")
public class Author {
    ...
}