日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Mybatis中resultMap結果集的使用

作者:魚跡 更新時間: 2023-12-20 編程語言

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映射文件中,你可以使用<resultMap><select>元素來定義查詢和結果映射。

<resultMap id="seatResultMap" type="java.util.HashMap">
    <result property="key" column="seatId"/>
    <result property="value" column="status" javaType="boolean"/>
</resultMap>

<select id="findAll" resultType="java.util.HashMap">
    SELECT seatId as key, status as value FROM seat
</select>

注意,這里為了將TINYINT轉化為Boolean,我們使用了javaType屬性。并且,我們使用了別名keyvalue來匹配HashMap的key和value。

2、注解方式:

如果你更喜歡使用注解而不是XML,你可以在Mapper接口中使用@Select@ResultType注解。

@Mapper
public interface SeatMapper {
    
    @Select("SELECT seatId as key, status as value FROM seat")
    @ResultType(HashMap.class)
    Map<String, Boolean> findAll();
}

然而,請注意,上述的注解方式并不會將TINYINT轉化為Boolean。因此,你可能需要在你的Service層或者DAO層進行轉換。例如:

@Service
public class SeatService {
    @Autowired
    private SeatMapper seatMapper;
    
    public Map<String, Boolean> findAll() {
        Map<String, Integer> result = seatMapper.findAll();
        result.replaceAll((k, v) -> v == 1);
        return result;
    }
}

在這個例子中,我們假設status字段中,1代表true,0代表false。然后我們用replaceAll方法將所有值轉化為Boolean。這只是一個簡單的示例,具體的轉換邏輯可能需要根據你的實際業務邏輯進行調整。

原文鏈接:https://blog.csdn.net/weixin_45915647/article/details/134137496

  • 上一篇:沒有了
  • 下一篇:沒有了
欄目分類
最近更新