MyBatis-Plus模糊查询实战:精准控制likeLeft/likeRight提升业务搜索效率
在用户管理系统和日志分析这类典型业务场景中,模糊查询往往是高频操作。传统LIKE语句虽然简单直接,但缺乏对匹配模式的精确控制,容易导致查询性能低下和结果集过大的问题。MyBatis-Plus提供的likeLeft和likeRight方法,正是为解决这类痛点而生。
1. 理解模糊查询的本质差异
模糊查询的核心在于通配符的放置位置,这直接决定了查询的匹配行为和性能特征。假设我们有一个用户表t_user,其中包含username字段存储用户昵称:
sql复制CREATE TABLE t_user (
id BIGINT PRIMARY KEY,
username VARCHAR(64) NOT NULL,
create_time DATETIME
);
1.1 三种匹配模式的对比实验
我们插入一组测试数据来观察不同方法的实际效果:
java复制// 测试数据准备
List<User> testUsers = Arrays.asList(
new User().setUsername("dev_张三"),
new User().setUsername("test_李四"),
new User().setUsername("admin_王五"),
new User().setUsername("guest_张三丰"),
new User().setUsername("temp_赵六")
);
userMapper.insertBatchSomeColumn(testUsers);
执行以下三种查询方式:
java复制// 1. 全模糊查询(like)
List<User> likeUsers = userMapper.selectList(
Wrappers.<User>lambdaQuery()
.like(User::getUsername, "张三")
);
// 2. 左模糊查询(likeLeft)
List<User> likeLeftUsers = userMapper.selectList(
Wrappers.<User>lambd
