mysql resultmap_MyBatis resultMap元素的结构及使用

元素表示结果映射集,是 MyBatis 中最重要也是最强大的元素,主要用来定义映射规则、级联的更新以及定义类型转化器等。

元素的结构

元素包含了一些子元素,结构如下:

元素的 type 属性表示需要的 POJO,id 属性是 resultMap 的唯一标识。

子元素 用于配置构造方法(当 POJO 未定义无参数的构造方法时使用)。

子元素 用于表示哪个列是主键。

子元素 用于表示POJO和数据表普通列的映射关系。

子元素 、 和 用在级联的情况下。关于级联的问题比较复杂,后面教程会详细讲解。

一条查询 SQL 语句执行后将返回结果,而结果可以使用 Map 存储,也可以使用 POJO 存储。

使用 Map 存储结果集

任何 select 语句都可以使用 Map 存储结果,示例代码如下:

select * from user

测试上述 SQL 配置文件的过程如下:

首先在 com.dao.UserDao 接口中添加以下接口方法。

public List> selectAllUserMap();

然后在 com.controller 包的 UserController 类中调用接口方法,具体代码如下。

// 查询所有用户信息存到Map中

List> lmp = userDao.selectAllUserMap();

for (Map map : lmp) {

System.out.println(map);

}

上述 Map 的 key 是 select 语句查询的字段名(必须完全一样),而 Map 的 value 是查询返回结果中字段对应的值,一条记录映射到一个 Map 对象中。Map 用起来很方便,但可读性稍差,有的开发者不太喜欢使用 Map,更多时候喜欢使用 POJO 的方式。

使用POJO存储结果集

有的开发者喜欢使用 POJO 的方式存储结果集,一方面可以使用自动映射,例如使用 resultType 属性,但有时候需要更为复杂的映射或级联,这时候就需要使用 元素的 resultMap 属性配置映射集合。具体步骤如下:

1)创建 POJO 类

在 myBatisDemo02 应用的 com.pojo 包中创建 POJO 类 MapUser。MapUser 类的代码如下:

package com.pojo;

public class MapUser {

private Integer m_uid;

private String m_uname;

private String m_usex;

// 此处省略setter和getter方法

@Override

public String toString() {

return "User[uid=" + m_uid + ",uname=" + m_uname + ",usex=" + m_usex

+ "]";

}

}

2)配置 元素

在 SQL 映射文件 UserMapper.xml 中配置 元素,其属性 type 引用 POJO 类。具体配置如下:

3)配置元素

在 SQL 映射文件 UserMapper.xml 中配置 元素,其属性 resultMap 引用了 元素的 id。具体配置如下:

select * from user

4)添加接口方法

在 com.dao.UserDao 接口中添加以下接口方法:

public List selectResultMap();

5)调用接口方法

在 com.controller 包的 UserController 类中调用接口方法,具体代码如下:

// 使用resultMap映射结果集

List listResultMap = userDao.selectResultMap();

for (MapUser myUser : listResultMap) {

System.out.println(myUser);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值