在 MyBatis 中,你可以在 XML 映射文件的 SQL 查詢中使用 UNION ALL 來合并兩個(gè)或多個(gè) SELECT 語句的結(jié)果集,同時(shí)避免重復(fù)數(shù)據(jù)
首先,在你的 MyBatis 項(xiàng)目的 resources 目錄下創(chuàng)建一個(gè)名為 mapper
的文件夾(如果還沒有的話)。
在 mapper
文件夾中,創(chuàng)建一個(gè)名為 UnionAllMapper.xml
的 XML 映射文件。
在 UnionAllMapper.xml
文件中,定義一個(gè)名為 selectUnionAll
的 SQL 查詢,使用 UNION ALL 來合并兩個(gè)或多個(gè) SELECT 語句的結(jié)果集。例如:
<?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.YourModel">
<!-- 定義你的結(jié)果映射 -->
</resultMap>
<select id="selectUnionAll" resultMap="unionAllResultMap">
SELECT column1, column2, ... FROM table1
WHERE some_condition
UNION ALL
SELECT column1, column2, ... FROM table2
WHERE some_condition
</select>
</mapper>
UnionAllMapper
的接口,并定義一個(gè)名為 selectUnionAll
的方法。例如:package com.example.mapper;
import java.util.List;
import com.example.model.YourModel;
public interface UnionAllMapper {
List<YourModel> selectUnionAll();
}
mybatis-config.xml
)中,添加對(duì) UnionAllMapper
的引用。例如: <!-- 其他配置 -->
<mappers>
<mapper resource="mapper/UnionAllMapper.xml"/>
</mappers>
</configuration>
UnionAllMapper
,并調(diào)用 selectUnionAll
方法來獲取合并后的結(jié)果集。例如:package com.example.service;
import java.util.List;
import com.example.mapper.UnionAllMapper;
import com.example.model.YourModel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class YourService {
@Autowired
private UnionAllMapper unionAllMapper;
public List<YourModel> getUnionAllData() {
return unionAllMapper.selectUnionAll();
}
}
這樣,你就可以在 MyBatis 中使用 UNION ALL 來合并兩個(gè)或多個(gè) SELECT 語句的結(jié)果集,并避免重復(fù)數(shù)據(jù)了。