使用MySQL的内置函数处理数据很方便,但是通过Mybatis-Plus去使用内置函数,而不想通过在xml里面写SQL,那我们应该怎么做呢?
假设我想使用MySQL的FIND_IN_SET函数:
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
public class YourService {
public void yourQueryMethod() {
// 假设你要查询字段 field,值为 value,使用 FIND_IN_SET 函数
String value = "someValue";
LambdaQueryWrapper<YourEntity> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(YourEntity::getField, value)
.apply("FIND_IN_SET({0}, field)", value);
List<YourEntity> result = yourMapper.selectList(wrapper);
// 处理查询结果
}
}
在上面的例子中,.apply(“FIND_IN_SET({0}, field) > 0”, value) 部分是使用 FIND_IN_SET 函数的地方,其中 {0} 会被 value 替换。通过.apply() 你可以根据实际需要调用其他 MySQL 的内置函数,以此类推。