在 MyBatis 中,你可以通過編寫 XML 映射文件或注解來實現使用 UNION ALL 的復雜查詢
public class User {
private int id;
private String name;
// 省略 getter 和 setter 方法
}
<mapper namespace="com.example.mapper.UserMapper">
<resultMap id="userResultMap" type="com.example.entity.User">
<result property="id" column="id"/>
<result property="name" column="name"/>
</resultMap>
<select id="selectUsersByAge" resultMap="userResultMap">
SELECT id, name FROM user WHERE age > 18
</select>
<select id="selectUsersByName" resultMap="userResultMap">
SELECT id, name FROM user WHERE name LIKE '%John%'
</select>
</mapper>
(
SELECT id, name FROM user WHERE age > 18
)
UNION ALL
(
SELECT id, name FROM user WHERE name LIKE '%John%'
)
</select>
public interface UserMapper {
List<User> selectUsersByAge();
List<User> selectUsersByName();
List<User> selectUsersByUnion();
}
現在你可以在你的服務類中調用 selectUsersByUnion()
方法來獲取合并后的查詢結果。請注意,這里的示例是基于 XML 映射文件的,如果你使用的是注解,你可以將查詢語句直接放在對應的方法上,而不是在映射文件中。