MyBatis resultMap

淩亂°似流年 2024-03-24 18:43 154阅读 0赞
元素表示结果映射集,是 MyBatis 中最重要也是最强大的元素,主要用来定义映射规则、级联的更新以及定义类型转化器等。

### 元素的结构 ###

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

>
>
>
>
>

>
>
>
>
>
>
>

>
  • 元素的 type 属性表示需要的 POJO,id 属性是 resultMap 的唯一标识。
  • 子元素 用于配置构造方法(当 POJO 未定义无参数的构造方法时使用)。
  • 子元素 用于表示哪个列是主键。
  • 子元素 用于表示POJO和数据表普通列的映射关系。
  • 子元素 用在级联的情况下。关于级联的问题比较复杂,后面教程会详细讲解。

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

使用 Map 存储结果集

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

  1. <!-- 查询所有用户信息存到Map中 -->
  2. <select id="selectAllUserMap" resultType="map">
  3. select * from user
  4. </select>

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

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

public List> selectAllUserMap();

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

  1. // 查询所有用户信息存到Map中
  2. List<Map<String, Object>> lmp = userDao.selectAllUserMap();
  3. for (Map<String, Object> map : lmp) {
  4. System.out.println(map);
  5. }

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

使用POJO存储结果集

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

在 SQL 映射文件 UserMapper.xml 中配置

发表评论

表情:
评论列表 (有 0 条评论,154人围观)

还没有评论,来说两句吧...

相关阅读

    相关 MyBatis resultMap

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

    相关 mybatis - resultMap

    resultMap有比较强大的自动映射,下面是摘自mybatis中文官网的的片段: 当自动映射查询结果时,MyBatis会获取sql返回的列名并在java类中查找相同名字的属