阅读量:0
在 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
函数了。