封装Mybatis输出结果的几种方式

我们执行查询语句时 会得到一个ResultSet结果集,我们一般会将结果集中的数据转换成Java对象 有两种方式可以实现此操作 注意如果返回的是集合,那应该设置为集合包含的类型,而不是集合本

1-resultType

resultType表示结果类型 mysql执行sql语句得到Java对象的类型 它的值有两种 
	1-1 Java对象的全限定名
接口方法

在这里插入图片描述
mapper文件的sql语句如下 这里我查的是一个List集合 红箭头表示将查询到的结果封装成Student类型的对象
在这里插入图片描述
内部的封装过程大概是这样
在这里插入图片描述
1-2 使用自定义别名
mybatis提供的对java类型定义简短,好记名称。
自定义别名的步骤:
在mybatis主配置文件,使用 typeAliases标签声明别名
在mapper文件中, resultType=“别名”
主配置文件如下

在这里插入图片描述
mapper文件的配置如下
在这里插入图片描述
测试成功
在这里插入图片描述

2- resultMap 列名和java对象属性名称不一样解决方式

当sql表中的列名和Java对象的属性名不一样时 有两种方法可以解决
1使用resultType: 使用列别名,让别名和java对象属性名称一样(不推荐)
2使用resultMap: 自定义列名和属性名称对应关系(结果映射)

使用方式:
1.先定义 resultMap,指定列名和属性的对应关系。
2.在mapper的select标签中把 resultType 替换为 resultMap。

例子:我先创建一个实体类 属性名全部改掉了 和数据库中的列名都不同
在这里插入图片描述
在mapper文件中定义resultMap映射关系
在这里插入图片描述
select的标签
在这里插入图片描述
测试成功
在这里插入图片描述

有时候我们需要关联表查询数据时,但是又没有合适的对象去接收,那么可以使用resultType="map"的方式去接收数据

mybatis会把结果封装到map集合中,我们接口方法的返回类型需要为Map<String,Object>类型。Map的内部结构为列名=值
如果结果为多条,那么有两种解决方式

  1. 将接口方法返回值设置为List<Map<K,V>>,这样就是一个集合类型的map了,每一条数据对应List中的一个map
  2. 使用@Mapkey注解,此注解有一个属性value,需要指定每一条数据中具有唯一性的列名,那么返回类型还是填Map<K,V>,现在map的内部结构为你设置的列名的值=该条数据的内容
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值