河南省示范校建设专题网站,金华网站建设大型网页建设,深圳网络科技有限公司有哪些,做音乐网站要什么源码文章目录 前言一、使用步骤1.引入 SimpleQuery 工具类2.使用 SimpleQuery 进行查询 二、使用提示三、功能详解1. keyMap1.1 方法签名1.2 参数说明1.3 使用示例1.4 使用提示 2. map2.1 方法签名2.2 参数说明2.3 使用示例2.4 使用提示 3. group3.1 方法签名3.2 参数说明3.3 使用示… 文章目录 前言一、使用步骤1.引入 SimpleQuery 工具类2.使用 SimpleQuery 进行查询 二、使用提示三、功能详解1. keyMap1.1 方法签名1.2 参数说明1.3 使用示例1.4 使用提示 2. map2.1 方法签名2.2 参数说明2.3 使用示例2.4 使用提示 3. group3.1 方法签名3.2 参数说明3.3 使用示例3.4 使用提示 4. list4.1 方法签名4.2 参数说明4.3 使用示例4.4 使用提示 总结 前言
SimpleQuery 是 Mybatis-Plus 提供的一个工具类它对 selectList 查询后的结果进行了封装使其可以通过 Stream 流的方式进行处理从而简化了API的调用。
SimpleQuery 的一个特点是它的 peeks 参数这是一个可变参数类型为 Consumer…意味着你可以连续添加多个操作这些操作会在查询结果被处理时依次执行。
SimpleQuery 的使用方式可以参考官方测试用例。 使用 SimpleQuery 前需要确保项目中已注入对应实体的 BaseMapper。 一、使用步骤
1.引入 SimpleQuery 工具类
import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
import com.baomidou.mybatisplus.core.toolkit.support.SerializedLambda;
import com.baomidou.mybatisplus.extension.toolkit.SimpleQuery;新版SimpleQuery迁移至toolkit包路径下
2.使用 SimpleQuery 进行查询
// 假设有一个 User 实体类和对应的 BaseMapper
ListLong ids SimpleQuery.list(Wrappers.lambdaQuery(User.class), // 使用 lambda 查询构建器User::getId, // 提取的字段这里是 User 的 idSystem.out::println, // 第一个 peek 操作打印每个用户user - userNames.add(user.getName()) // 第二个 peek 操作将每个用户的名字添加到 userNames 列表中
);二、使用提示
SimpleQuery 工具类提供了一种简洁的方式来处理查询结果它允许你在查询结果上应用多个操作这些操作会按照添加的顺序依次执行。在使用 SimpleQuery 时你需要提供一个查询构建器如 Wrappers.lambdaQuery()一个用于提取结果的字段如 User::getId以及一个或多个 Consumer 类型的 peek 操作。peek 操作可以用于执行任何副作用操作如打印日志、更新缓存、发送通知等而不会影响查询结果本身。SimpleQuery 返回的结果是一个列表包含了所有查询到的实体对象这些对象已经应用了所有的 peek 操作。通过使用 SimpleQuery你可以将查询和结果处理逻辑分离使代码更加清晰和易于维护。 通过使用 SimpleQuery 工具类开发者可以更加高效地处理查询结果同时保持代码的简洁性和可读性。这种工具类尤其适合于需要对查询结果进行复杂处理的场景。 三、功能详解
1. keyMap
SimpleQuery 的 keyMap 方法提供了一种便捷的方式来查询数据库并将查询结果封装成一个Map其中实体的某个属性作为键key实体本身作为值value。这个方法还支持在处理查询结果时执行额外的副作用操作如打印日志或更新缓存。
1.1 方法签名
// 查询表内记录封装返回为 Map属性,实体
MapA, E keyMap(LambdaQueryWrapperE wrapper, SFunctionE, A sFunction, ConsumerE... peeks);// 查询表内记录封装返回为 Map属性,实体考虑了并行流的情况
MapA, E keyMap(LambdaQueryWrapperE wrapper, SFunctionE, A sFunction, boolean isParallel, ConsumerE... peeks);1.2 参数说明
类型参数名描述Eentity实体对象类型即查询结果的实体类型。Aattribute实体属性类型也是返回的 Map 中键key的类型。LambdaQueryWrapperwrapper支持 lambda 表达式的条件构造器用于构建查询条件。SFunctionE, AsFunction实体中属性的 getter 方法引用用于确定 Map 中键key的值。booleanisParallel如果设置为 true则底层使用并行流执行查询可以提高处理大量数据时的效率。Consumer…peeks可变参数用于指定在处理查询结果时执行的额外操作如打印日志、更新缓存等。
1.3 使用示例
// 假设有一个 User 实体类和对应的 BaseMapper
LambdaQueryWrapperUser queryWrapper new LambdaQueryWrapper();
queryWrapper.eq(User::getStatus, active); // 查询状态为 active 的用户// 使用 keyMap 方法查询并封装结果
MapString, User userMap SimpleQuery.keyMap(queryWrapper, // 查询条件构造器User::getUsername, // 使用用户名作为键user - System.out.println(Processing user: user.getUsername()) // 打印处理的用户名
);// 遍历结果
for (Map.EntryString, User entry : userMap.entrySet()) {System.out.println(Key: entry.getKey() , Value: entry.getValue());
}1.4 使用提示
keyMap 方法适用于需要根据实体的某个属性快速查找实体的场景。通过 sFunction 参数你可以指定任何实体属性作为 Map 的键这使得查询结果的访问更加直观和高效。peeks 参数允许你在处理查询结果时执行额外的副作用操作这些操作不会影响最终的 Map 结果。当处理大量数据时可以考虑将 isParallel 参数设置为 true 以启用并行流从而提高查询效率。 通过使用 SimpleQuery 的 keyMap 方法开发者可以更加高效地处理查询结果并将其封装成易于使用的数据结构同时还可以执行额外的副作用操作使代码更加简洁和灵活。 2. map
SimpleQuery 的 map 方法提供了一种便捷的方式来查询数据库并将查询结果封装成一个 Map其中实体的某个属性作为键key另一个属性作为值value。这个方法还支持在处理查询结果时执行额外的副作用操作如打印日志或更新缓存。
2.1 方法签名
// 查询表内记录封装返回为 Map属性,属性
MapA, P map(LambdaQueryWrapperE wrapper, SFunctionE, A keyFunc, SFunctionE, P valueFunc, ConsumerE... peeks);// 查询表内记录封装返回为 Map属性,属性考虑了并行流的情况
MapA, P map(LambdaQueryWrapperE wrapper, SFunctionE, A keyFunc, SFunctionE, P valueFunc, boolean isParallel, ConsumerE... peeks);2.2 参数说明
类型参数名描述Eentity实体对象类型即查询结果的实体类型。Aattribute实体属性类型作为返回的 Map 中键key的类型。Pattribute实体属性类型作为返回的 Map 中值value的类型。LambdaQueryWrapperwrapper支持 lambda 表达式的条件构造器用于构建查询条件。SFunctionE, AkeyFunc实体中属性的 getter 方法引用用于确定 Map 中键key的值。SFunctionE, PvalueFunc实体中属性的 getter 方法引用用于确定 Map 中值value的值。booleanisParallel如果设置为 true则底层使用并行流执行查询可以提高处理大量数据时的效率。Consumer…peeks可变参数用于指定在处理查询结果时执行的额外操作如打印日志、更新缓存等。
2.3 使用示例
// 假设有一个 User 实体类和对应的 BaseMapper
LambdaQueryWrapperUser queryWrapper new LambdaQueryWrapper();
queryWrapper.eq(User::getStatus, active); // 查询状态为 active 的用户// 使用 map 方法查询并封装结果
MapString, Integer userMap SimpleQuery.map(queryWrapper, // 查询条件构造器User::getUsername, // 使用用户名作为键User::getAge, // 使用年龄作为值user - System.out.println(Processing user: user.getUsername()) // 打印处理的用户名
);// 遍历结果
for (Map.EntryString, Integer entry : userMap.entrySet()) {System.out.println(Username: entry.getKey() , Age: entry.getValue());
}2.4 使用提示
map 方法适用于需要根据实体的某个属性快速查找另一个属性的场景。通过 keyFunc 和 valueFunc 参数你可以指定任何实体属性作为 Map 的键和值这使得查询结果的访问更加直观和高效。peeks 参数允许你在处理查询结果时执行额外的副作用操作这些操作不会影响最终的 Map 结果。当处理大量数据时可以考虑将 isParallel 参数设置为 true 以启用并行流从而提高查询效率。 通过使用 SimpleQuery 的 map 方法开发者可以更加高效地处理查询结果并将其封装成易于使用的数据结构同时还可以执行额外的副作用操作使代码更加简洁和灵活。 3. group
SimpleQuery 的 group 方法提供了一种便捷的方式来查询数据库并将查询结果按照实体的某个属性进行分组封装成一个 Map。这个方法还支持在处理查询结果时执行额外的副作用操作如打印日志或更新缓存。此外它还允许你使用 Collector 对分组后的集合进行进一步的处理。
3.1 方法签名
// 查询表内记录封装返回为 Map属性,List实体
MapK, ListT group(LambdaQueryWrapperT wrapper, SFunctionT, K sFunction, ConsumerT... peeks);// 查询表内记录封装返回为 Map属性,List实体考虑了并行流的情况
MapK, ListT group(LambdaQueryWrapperT wrapper, SFunctionT, K sFunction, boolean isParallel, ConsumerT... peeks);// 查询表内记录封装返回为 Map属性,分组后对集合进行的下游收集器
M group(LambdaQueryWrapperT wrapper, SFunctionT, K sFunction, Collector? super T, A, D downstream, ConsumerT... peeks);// 查询表内记录封装返回为 Map属性,分组后对集合进行的下游收集器考虑了并行流的情况
M group(LambdaQueryWrapperT wrapper, SFunctionT, K sFunction, Collector? super T, A, D downstream, boolean isParallel, ConsumerT... peeks);3.2 参数说明
类型参数名描述Tentity实体对象类型即查询结果的实体类型。Kattribute实体属性类型作为返回的 Map 中键key的类型。D-下游收集器返回类型作为 Map 中值value的类型。A-下游操作中间类型用于 Collector 的中间结果。M-最终结束返回的 MapK, D 类型。LambdaQueryWrapperwrapper支持 lambda 表达式的条件构造器用于构建查询条件。SFunctionT, KsFunction分组依据实体中属性的 getter 方法引用用于确定 Map 中键key的值。CollectorT, A, Ddownstream下游收集器用于对分组后的集合进行进一步的处理。booleanisParallel如果设置为 true则底层使用并行流执行查询可以提高处理大量数据时的效率。Consumer…peeks可变参数用于指定在处理查询结果时执行的额外操作如打印日志、更新缓存等。
3.3 使用示例
// 假设有一个 User 实体类和对应的 BaseMapper
LambdaQueryWrapperUser queryWrapper new LambdaQueryWrapper();
queryWrapper.eq(User::getStatus, active); // 查询状态为 active 的用户// 使用 group 方法查询并封装结果按照用户名分组
MapString, ListUser userGroup SimpleQuery.group(queryWrapper, // 查询条件构造器User::getUsername, // 使用用户名作为分组键user - System.out.println(Processing user: user.getUsername()) // 打印处理的用户名
);// 遍历结果
for (Map.EntryString, ListUser entry : userGroup.entrySet()) {System.out.println(Username: entry.getKey());for (User user : entry.getValue()) {System.out.println( - User: user);}
}3.4 使用提示
group 方法适用于需要根据实体的某个属性对查询结果进行分组的场景。通过 sFunction 参数你可以指定任何实体属性作为分组的依据这使得查询结果的组织更加灵活。downstream 参数允许你使用 Collector 对分组后的集合进行进一步的处理如计数、求和、平均值等。peeks 参数允许你在处理查询结果时执行额外的副作用操作这些操作不会影响最终的 Map 结果。当处理大量数据时可以考虑将 isParallel 参数设置为 true 以启用并行流从而提高查询效率。 通过使用 SimpleQuery 的 group 方法开发者可以更加高效地处理查询结果并将其按照特定属性进行分组同时还可以执行额外的副作用操作使代码更加简洁和灵活。 4. list
SimpleQuery 的 list 方法提供了一种便捷的方式来查询数据库并将查询结果封装成一个 List其中列表的元素是实体的某个属性。这个方法还支持在处理查询结果时执行额外的副作用操作如打印日志或更新缓存。
4.1 方法签名
// 查询表内记录封装返回为 List属性
ListA list(LambdaQueryWrapperE wrapper, SFunctionE, A sFunction, ConsumerE... peeks);// 查询表内记录封装返回为 List属性考虑了并行流的情况
ListA list(LambdaQueryWrapperE wrapper, SFunctionE, A sFunction, boolean isParallel, ConsumerE... peeks);4.2 参数说明
类型参数名描述Eentity实体对象类型即查询结果的实体类型。Aattribute实体属性类型作为返回的 List 中元素的类型。LambdaQueryWrapperwrapper支持 lambda 表达式的条件构造器用于构建查询条件。SFunctionE, AsFunction实体中属性的 getter 方法引用用于确定 List 中元素的值。booleanisParallel如果设置为 true则底层使用并行流执行查询可以提高处理大量数据时的效率。Consumer…peeks可变参数用于指定在处理查询结果时执行的额外操作如打印日志、更新缓存等。
4.3 使用示例
// 假设有一个 User 实体类和对应的 BaseMapper
LambdaQueryWrapperUser queryWrapper new LambdaQueryWrapper();
queryWrapper.eq(User::getStatus, active); // 查询状态为 active 的用户// 使用 list 方法查询并封装结果提取所有用户的用户名
ListString userNames SimpleQuery.list(queryWrapper, // 查询条件构造器User::getUsername, // 提取用户名作为列表元素user - System.out.println(Processing user: user.getUsername()) // 打印处理的用户名
);// 遍历结果
for (String username : userNames) {System.out.println(Username: username);
}4.4 使用提示
list 方法适用于需要根据实体的某个属性快速获取一个列表的场景。通过 sFunction 参数你可以指定任何实体属性作为 List的元素这使得查询结果的访问更加直观和高效。peeks 参数允许你在处理查询结果时执行额外的副作用操作这些操作不会影响最终的 List 结果。当处理大量数据时可以考虑将 isParallel 参数设置为 true 以启用并行流从而提高查询效率。 通过使用 SimpleQuery 的 list 方法开发者可以更加高效地处理查询结果并将其封装成易于使用的数据结构同时还可以执行额外的副作用操作使代码更加简洁和灵活。 总结
回到顶部