diff --git a/mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/toolkit/SimpleQuery.java b/mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/toolkit/SimpleQuery.java index b8c9f49d865d6d2584cc4df181981ddfc5da35a1..7be35a7d05e180cc19f0b0290f8a2d4b5b845fd8 100644 --- a/mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/toolkit/SimpleQuery.java +++ b/mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/toolkit/SimpleQuery.java @@ -1,13 +1,24 @@ +/* + * Copyright (c) 2011-2022, baomidou (jobob@qq.com). + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.baomidou.mybatisplus.extension.toolkit; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; -import com.baomidou.mybatisplus.core.toolkit.GlobalConfigUtils; import com.baomidou.mybatisplus.core.toolkit.LambdaUtils; import com.baomidou.mybatisplus.core.toolkit.support.SFunction; -import org.apache.ibatis.session.SqlSession; -import org.mybatis.spring.SqlSessionUtils; import java.util.*; import java.util.function.*; @@ -109,7 +120,7 @@ public class SimpleQuery { * ignore */ @SafeVarargs - public static > M group(LambdaQueryWrapper wrapper, SFunction sFunction, Collector downstream, Consumer... peeks) { + public static Map group(LambdaQueryWrapper wrapper, SFunction sFunction, Collector downstream, Consumer... peeks) { return listGroupBy(selectList(getType(sFunction), wrapper), sFunction, downstream, false, peeks); } @@ -125,11 +136,10 @@ public class SimpleQuery { * @param 实体中的分组依据对应类型,也是Map中key的类型 * @param 下游操作对应返回类型,也是Map中value的类型 * @param 下游操作在进行中间操作时对应类型 - * @param 最后返回结果Map类型 * @return Map<实体中的属性, List < 实体>> */ @SafeVarargs - public static > M group(LambdaQueryWrapper wrapper, SFunction sFunction, Collector downstream, boolean isParallel, Consumer... peeks) { + public static Map group(LambdaQueryWrapper wrapper, SFunction sFunction, Collector downstream, boolean isParallel, Consumer... peeks) { return listGroupBy(selectList(getType(sFunction), wrapper), sFunction, downstream, isParallel, peeks); } @@ -199,7 +209,7 @@ public class SimpleQuery { * ignore */ @SafeVarargs - public static > M listGroupBy(List list, SFunction sFunction, Collector downstream, Consumer... peeks) { + public static Map listGroupBy(List list, SFunction sFunction, Collector downstream, Consumer... peeks) { return listGroupBy(list, sFunction, downstream, false, peeks); } @@ -215,14 +225,13 @@ public class SimpleQuery { * @param 实体中的分组依据对应类型,也是Map中key的类型 * @param 下游操作对应返回类型,也是Map中value的类型 * @param 下游操作在进行中间操作时对应类型 - * @param 最后返回结果Map类型 * @return Map<实体中的属性, List < 实体>> */ @SafeVarargs @SuppressWarnings("unchecked") - public static > M listGroupBy(List list, SFunction sFunction, Collector downstream, boolean isParallel, Consumer... peeks) { + public static Map listGroupBy(List list, SFunction sFunction, Collector downstream, boolean isParallel, Consumer... peeks) { boolean hasFinished = downstream.characteristics().contains(Collector.Characteristics.IDENTITY_FINISH); - return peekStream(list, isParallel, peeks).collect(new Collector, M>() { + return peekStream(list, isParallel, peeks).collect(new Collector, Map>() { @Override public Supplier> supplier() { return HashMap::new; @@ -249,11 +258,11 @@ public class SimpleQuery { } @Override - public Function, M> finisher() { - return hasFinished ? i -> (M) i : intermediate -> { + public Function, Map> finisher() { + return hasFinished ? i -> (Map) i : intermediate -> { intermediate.replaceAll((k, v) -> (A) downstream.finisher().apply(v)); @SuppressWarnings("unchecked") - M castResult = (M) intermediate; + Map castResult = (Map) intermediate; return castResult; }; } @@ -317,15 +326,7 @@ public class SimpleQuery { * @return 查询列表结果 */ public static List selectList(Class entityClass, LambdaQueryWrapper wrapper) { - SqlSession sqlSession = SqlHelper.sqlSession(entityClass); - List result; - try { - BaseMapper userMapper = SqlHelper.getMapper(entityClass, sqlSession); - result = userMapper.selectList(wrapper); - } finally { - SqlSessionUtils.closeSqlSession(sqlSession, GlobalConfigUtils.currentSessionFactory(entityClass)); - } - return result; + return SqlHelper.execute(entityClass, m -> m.selectList(wrapper)); } }