5-Mybatis 的输出结果封装

一、resultType 配置结果类型

1.概述

resultType 属性可以指定结果集的类型,它支持基本类型和实体类类型。
 
需要注意的是,它和 parameterType 一样,如果注册过类型别名的,可以直接使用别名。没有注册过的必须
使用全限定类名。例如:我们的实体类此时必须是全限定类名,
同时,当是实体类名称时,还有一个要求, 实体类中的属性名称必须和查询语句中的列名保持一致 ,否则无法
实现封装。

2.基本类型示例、实体类类型示例前面有

3.特殊情况示例(实体类属性和表的列名不一致)

a.修改实体类

private String userName;//列名是username

b.测试查询结果

@Test
public void testFindAll() {
List<User> users = userDao.findAll();
for(User user : users) {
System.out.println(user);
} }

为什么名称会有值呢?
因为: mysql windows 系统中不区分大小写!
 

c.修改映射配置

<select id="findAll" resultType="cn.oesoft.mybatis01.domain.User">
        select id as userId,username as userName,birthday as userBirthday,
               sex as userSex,address as userAddress from user
    </select>

思考:
如果我们的查询很多,都使用别名的话写起来岂不是很麻烦,有没有别的解决办法呢?
请看下一小节。

二、resultMap 结果类型

resultMap 标签可以建立查询的列名和实体类的属性名称不一致时建立对应关系。从而实现封装。
select 标签中使用 resultMap 属性指定引用即可。同时 resultMap 可以实现将查询结果映射为复杂类
型的 pojo ,比如在查询结果映射对象中包括 pojo list 实现一对一查询和一对多查询。

1.定义 resultMap

    <!-- 建立 User 实体和数据库表的对应关系
         type 属性:指定实体类的全限定类名
         id 属性:给定一个唯一标识,是给查询 select 标签引用用的。
    -->
    <!--列名和属性名一致时,不需要建立对应关系,为了告知有id标签,才写上-->
    <resultMap type="cn.oesoft.mybatis01.domain.User" id="userMap">
        <id column="id" property="id"/>
        <result column="username" property="userName"/>
    </resultMap>
id 标签:用于指定主键字段
result 标签:用于指定非主键字段
column 属性:用于指定数据库列名
property 属性:用于指定实体类属性名称

2.映射配置

<!-- 配置查询所有操作 -->
    <select id="findAll" resultMap="userMap">
        select *
        from user
    </select>

3.测试结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值