在 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);
public class User {
private int id;
private String name;
private String email;
// Getter 和 Setter 方法
}
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.com
ID: 2, Name: 李四, Email: default@example.com
这说明在 MyBatis 中成功使用了 COALESCE
函数。