在 MyBatis 中,你可以使用、
和<otherwise>
標簽來實現動態 SQL,并結合 COALESCE
函數來處理可能的空值。以下是一個示例:
首先,創建一個名為 User
的實體類:
public class User {
private Integer id;
private String name;
private String email;
// 省略 getter 和 setter 方法
}
然后,在你的 MyBatis 映射文件中,定義一個查詢用戶的 SQL 語句:
SELECT
id,
name,
COALESCE(email, 'N/A') as email
FROM
users
WHERE
1 = 1
<choose>
<when test="name != null and name != ''">
AND name LIKE CONCAT('%', #{name}, '%')
</when>
<when test="email != null and email != ''">
AND email LIKE CONCAT('%', #{email}, '%')
</when>
<otherwise>
AND 1 = 0
</otherwise>
</choose>
</select>
在這個示例中,我們使用 標簽來根據傳入的參數動態生成 SQL 語句。
COALESCE函數用于在
email` 字段為空時返回 ‘N/A’。
接下來,在你的 DAO 接口中,添加一個方法來調用這個查詢:
public interface UserDao {
List<User> findUsers(@Param("name") String name, @Param("email") String email);
}
現在,你可以在你的服務類中調用這個方法來根據動態條件查詢用戶:
@Service
public class UserService {
@Autowired
private UserDao userDao;
public List<User> findUsers(String name, String email) {
return userDao.findUsers(name, email);
}
}
這樣,你就可以在 MyBatis 中結合動態 SQL 使用 COALESCE
函數了。