Mybatis中resultMap结果集的使用

Mybatis中resultMap结果集的使用

  • 一、resultMap的使用
  • 二、使用resultMap返回HashMap
    • 1、XML方式:
    • 2、注解方式:

一、resultMap的使用

在MyBatis的XML文件中,resultMap可以有多个。每个resultMap都有一个唯一的id,你可以根据这个id来引用不同的resultMap

选择使用哪个resultMap取决于你的查询和需要映射的结果。

示例:

假设你有以下的表结构:

CREATE TABLE user (
    id INT PRIMARY KEY,
    username VARCHAR(50),
    email VARCHAR(50)
);

CREATE TABLE order (
    order_id INT PRIMARY KEY,
    user_id INT,
    order_date DATE,
    FOREIGN KEY (user_id) REFERENCES user(id)
);

对于上面的表结构,你可能会有两个resultMap,一个用于用户,一个用于订单:

<resultMap id="userResultMap" type="com.example.User">
    <result property="id" column="id"/>
    <result property="username" column="username"/>
    <result property="email" column="email"/>
resultMap>

<resultMap id="orderResultMap" type="com.example.Order">
    <result property="orderId" column="order_id"/>
    <result property="userId" column="user_id"/>
    <result property="orderDate" column="order_date"/>
resultMap>

在你的查询中,你可以根据需要选择合适的resultMap。例如,如果你需要查询用户信息,你可以这样写:

<select id="getUser" resultMap="userResultMap">
    SELECT * FROM user WHERE id = #{id}
select>

如果你需要查询订单信息,你可以这样写:

<select id="getOrder" resultMap="orderResultMap">
    SELECT * FROM order WHERE order_id = #{orderId}
select>

总结,你可以定义多个resultMap,并在查询时通过resultMap属性引用它们。选择哪个resultMap取决于你的查询和你想如何映射查询结果。

二、使用resultMap返回HashMap

例如,对于示例表seat,具有如下结构

CREATE TABLE seat
(
	seatId VARCHAR(10),
	`status` TINYINT
);

在该表对应的mapper中有一个findAll()方法,以Map的方式返回所有表记录。其中key是seatId,value是status(转化为Boolean类型)。为了实现这个功能,可以通过MyBatis的XML或者注解来实现。这里,分别展示两种方法:

1、XML方式:

在MyBatis的XML映射文件中,你可以使用