在 MyBatis 中,你可以在 XML 映射文件的 SQL 查询中直接使用 COALESCE 函数
users 的表:CREATE TABLE users ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(255), email VARCHAR(255));INSERT INTO users (name, email) VALUES ('张三', 'zhangsan@example.com');INSERT INTO users (name, email) VALUES ('李四', NULL);在你的 MyBatis 项目中,创建一个 User 类,用于映射查询结果:public class User { private int id; private String name; private String email; // Getter 和 Setter 方法}在你的 MyBatis 映射文件(例如 UserMapper.xml)中,编写一个使用 COALESCE 函数的查询:<?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.UserMapper"> <resultMap id="userResultMap" type="com.example.model.User"> <id property="id" column="id"/> <result property="name" column="name"/> <result property="email" column="email"/> </resultMap> <select id="getUsersWithDefaultEmail" resultMap="userResultMap"> SELECT id, name, COALESCE(email, 'default@example.com') AS email FROM users </select></mapper>在这个例子中,我们使用 COALESCE 函数将 email 列的空值替换为默认值 'default@example.com'。
package com.example.mapper;import com.example.model.User;import java.util.List;public interface UserMapper { List<User> getUsersWithDefaultEmail();}最后,在你的业务逻辑中调用 getUsersWithDefaultEmail 方法:List<User> users = userMapper.getUsersWithDefaultEmail();for (User user : users) { System.out.println("ID: " + user.getId() + ", Name: " + user.getName() + ", Email: " + user.getEmail());}运行此代码,你将看到以下输出:
ID: 1, Name: 张三, Email: zhangsan@example.comID: 2, Name: 李四, Email: default@example.com这说明在 MyBatis 中成功使用了 COALESCE 函数。




