配置别名

我们在开始编辑Mybatis代码的时候,会用到很多类的全限定名来进行限定,但是这在很多地方是十分不方便的,而且还容易出现错误,因为是字符串,在编译阶段一般是检查不出来其中的错误,只有到执行的时候才会暴露出来,一是为了提高效率,而是为了减少错误,我们对这些类的全限定名来起一个简单的别名,是十分必要的。



配置别名

观察前面的代码:

    <select id="findEmpById" parameterType="int" resultType="com.yht.bean.Emp">
        select id, name, age,birthday, salary FROM emp WHERE id = #{id}
    </select>
 
    <select id="findAllEmp"  resultType="com.yht.bean.Emp">
        select id, name, age,birthday, salary FROM emp
    </select>


 我们在进行查询语句的时候,一定要用到全限定名,如果使用mapper模式进行开发,那么就会更多的使用全限定名,所以我们就是为了这些来进行配置别名的。

别名的配置就是利用上篇介绍mybatis-config.xml配置文件中的 typeAliases配置:

下面是Mybatis文档中推荐的格式:

在进行配置添加:

    <typeAliases>
        <typeAlias alias="Emp" type="com.yht.bean.Emp" />
    </typeAliases>

然后再mapper配置文件中进行更改:

    <select id="findEmpById" parameterType="int" resultType="Emp">
        select id, name, age,birthday, salary FROM emp WHERE id = #{id}
    </select>

执行:

这里是不区分带小写的:

比如这样:

    <select id="findEmpById" parameterType="int" resultType="eMp">
        select id, name, age,birthday, salary FROM emp WHERE id = #{id}
    </select>

运行:

依旧也是可以的。


还有一种配置方式为:

    <typeAliases>
        <package name="com.yht.bean"/>
    </typeAliases>

就是把存储实体类的包名给设置一下,然后这里默认的下面的所有的类都可以直接使用类名来当做别名,同样忽略大小写。

 

依旧可以成功。

当然,我们也可以进行自定义,自定义方式为,在bean类的类上面利用注解来进行声明别名。(配合上面package的别名设置方式)

@Alias("MyEmp")
public class Emp {
    private int id ;
    private String name ;
    private int age ;
    private Date birthday ;
    private BigDecimal salary ;
}
    <select id="findEmpById" parameterType="int" resultType="MyEmp">
        select id, name, age,birthday, salary FROM emp WHERE id = #{id}
    </select>

也依旧可以成功!

 


另外,Mybatis中还设置了很多的别名使用:

比如我们在进行这样的查询语句:

    <select id="findEmpCount" resultType="java.lang.Integer">
        select count(*) from emp
    </select>

我们的查询结果为int型,但是这种类型众多,我们每次使用的时候都自己去设置别名太过于麻烦和降低效率,所以Mybatis给我们内置了别名:

其中上面八种基本数据类中都是前面加上下划线,后面的都是开头大小字母变为小写,只有 BigDecimal是更改了格式。

还有Integer有两个别名。

我们再次去程序里尝试:

    <select id="findEmpCount" resultType="_int">
        select count(*) from emp
    </select>

测试类:

    @Test
    public void testFindEmpCount(){
        SqlSession sqlSession = MybatisUtil.getSession();
        EmpMapper empMapper = sqlSession.getMapper(EmpMapper.class);
        int count = empMapper.findEmpCount();
        System.out.println(count);
    }

其实对于Int型参数,因为比较常用,所以在使用的时候,对于使用的时候,参数和结果是int ,_int ,Integer,任何都可以,都可以自动转换


总结来说,就是Mybatis给了我们给类的自定义别名的方法,利用typeAliases配置来进行设置别名。

第一种方式是利用 typeAlias来对单个类来进行别名。

第二种方式是利用 package来对整个包的类来进行别名设置,下面的所有类都可以默认使用类名作为别名直接使用,还可以在类中利用@Alias注解方式进行自定义别名设置。

还有对常用数据类型的内建别名使用。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值