Mybatis中typeAlias&resultMap别名配置

需要别名配置的情况有两种(我才疏学浅暂时只知道两种)

1、为属性字段配置别名resultMap

在进行数据操作时,有时数据库的属性字段与我们建立的实体类的属性字段不对应,或者在进行sql语句选择的时候为选择结果取了别名导致与实体类属性名称不对应,这时候我们就需要为属性进行别名配置。
这种情况下配置别名主要用到的标签就是resultMap。在映射文件中配置。
数据库如下:
在这里插入图片描述
建立的实体类如下图(只截取了该实体类的全部属性):
在这里插入图片描述
在Mapper接口中添加如下方法:
通过用户id查询用户信息

public User findeByidBymap(int id);

在映射文件中,添加如下代码段。
在select标签中,最后一个参数有resultType和resultMap。当sql语句属性字段与实体类属性字段一致时,选用resultType。
通过观察,我的数据库属性字段和实体类属性字段其实是一样的。但是在进行sql语句选择时,我为他们起了别名(SELECT id id_,username username_,sex sex_,address address_ FROM user WHERE id=#{id}),注意:一定是sql语句选出来之后的属性字段(如果没有取别名,那就是数据库的属性字段。取了别名就是你取的别名字段)与实体类进行别名的映射匹配。我的例子中,因为取了别名,所以他们是不匹配的,所以此处在select标签中的最后一个参数选用resultMap。在select标签上面添加一个resultMap标签,标签的第一个参数 id="findeByidBymapcheck"中,这个id是自己取的,这个id与select标签中的resultMap="findeByidBymapcheck"必须一致。resultMap标签中type就写接口方法中的返回类型。在标签内部一一对应。

   <resultMap id="findeByidBymapcheck" type="com.zwj.model.User"><!--  type就写返回的模型的名称-->
       <!--下面第一行是主键-->
        <id column="id_" property="id"></id>
        <result column="username_" property="username"></result>
        <!--properties是实体类中真实的属性,column是别名-->
        <result column="sex_" property="sex"></result>
        <result column="address_" property="address"></result>

    </resultMap>

    <select id="findeByidBymap" parameterType="int" resultMap="findeByidBymapcheck">
        SELECT id id_,username username_,sex sex_,address address_  FROM `user` WHERE id=#{id}
    </select>

测试:
在这里插入图片描述

2、为实体类配置别名typeAlias

我们在写映射文件的时候,需要写返回类型。比如在上面代码段中通过写模型的全限定名称来指明返回类型。有些很长,或者在进行大量的映射编写时候,就很繁杂。下面是两种为实体类写别名的办法。
(1)为单个实体类配置别名:在全局配置文件中,注意是全局配置文件!在全局配置文件中添加typeAliases标签

<typeAliases>
      <!--为单个实体类配置别名,前面是实体类的全限定名称,alias是别名-->
        <typeAlias type="com.zwj.model.User" alias="user"></typeAlias>
    </typeAliases>

(2)批量配置别名:

<typeAliases>
       <!--为整个包下的所有实体类配置别名,其别名为类名(首字母大小写都可以)-->
        <package name="com.zwj.model"></package>
    </typeAliases>

自己的笔记,欢迎指正哈!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值