跳转至

6. 自定义条件 (Custom Conditions)

虽然 eqgtlike 等内置条件涵盖了大多数场景,但您可能需要特定于数据库的函数或复杂表达式。CustomCondition 允许您安全地注入原生 SQL 片段。

6.1 概念

当您需要利用标准 API 不原生支持的特定数据库功能(例如 MySQL MATCH AGAINST、PostGIS 函数)时,请使用 CustomCondition

6.2 用法

CustomCondition 类需要: - sqlTemplate: SQL 片段。使用 $COL 作为列名占位符,#{EXPR} 作为值占位符。 - field: Java 字段名称(解析为数据库列)。 - value: 绑定到 #{EXPR} 占位符的值。

6.3 示例:MySQL 全文搜索

// SQL: MATCH (content) AGAINST ('keyword' IN BOOLEAN MODE)
userService.query()
    .where(CustomCondition.of(
        "MATCH ($COL) AGAINST (#{EXPR} IN BOOLEAN MODE)", // 模板
        User.Fields.content,                              // 字段 ($COL)
        "mybatis"                                         // 值 (#{EXPR})
    ))
    .exec();