MyBatis中如何使用UNION ALL進(jìn)行多表查詢

小樊
96
2024-08-28 12:58:41
欄目: 編程語言

在 MyBatis 中,你可以在 XML 映射文件中編寫 SQL 語句,然后使用 UNION ALL 關(guān)鍵字來進(jìn)行多表查詢。下面是一個(gè)簡(jiǎn)單的示例:

  1. 首先,創(chuàng)建兩個(gè)數(shù)據(jù)庫表,例如 table_a 和 table_b,它們具有相同的列結(jié)構(gòu)。
CREATE TABLE table_a (
    id INT PRIMARY KEY,
    name VARCHAR(255)
);

CREATE TABLE table_b (
    id INT PRIMARY KEY,
    name VARCHAR(255)
);
  1. 在 MyBatis 的 XML 映射文件中,編寫一個(gè) SQL 查詢,使用 UNION ALL 關(guān)鍵字將兩個(gè)表的數(shù)據(jù)合并在一起。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.example.mapper.UnionAllMapper">
   <resultMap id="unionAllResultMap" type="com.example.model.UnionAllResult">
       <result property="id" column="id"/>
       <result property="name" column="name"/>
    </resultMap>

   <select id="getUnionAllData" resultMap="unionAllResultMap">
        SELECT id, name FROM table_a
        UNION ALL
        SELECT id, name FROM table_b
    </select>
</mapper>
  1. 創(chuàng)建一個(gè) Java 類,用于存儲(chǔ)查詢結(jié)果。
package com.example.model;

public class UnionAllResult {
    private int id;
    private String name;

    // Getters and setters
}
  1. 在你的 DAO 接口中,添加一個(gè)方法來調(diào)用這個(gè)查詢。
package com.example.mapper;

import com.example.model.UnionAllResult;
import java.util.List;

public interface UnionAllMapper {
    List<UnionAllResult> getUnionAllData();
}

現(xiàn)在,你可以在你的服務(wù)類中調(diào)用 getUnionAllData() 方法來獲取兩個(gè)表的合并數(shù)據(jù)。

0