BaseService.java 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. package com.fjhx.email.config.base;
  2. import cn.hutool.core.util.ObjectUtil;
  3. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  4. import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
  5. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  6. import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
  7. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  8. import com.baomidou.mybatisplus.extension.service.IService;
  9. import java.util.List;
  10. import java.util.Map;
  11. import java.util.Objects;
  12. import java.util.function.Consumer;
  13. import java.util.stream.Collectors;
  14. @SuppressWarnings("unused")
  15. public interface BaseService<T> extends IService<T> {
  16. default Page<T> page(BaseSelectVo baseSelectVo, Consumer<LambdaQueryWrapper<T>> consumer) {
  17. return page(baseSelectVo.getPage(), Wrappers.<T>lambdaQuery().func(consumer));
  18. }
  19. default long count(Consumer<LambdaQueryWrapper<T>> consumer) {
  20. return count(Wrappers.<T>lambdaQuery().func(ObjectUtil.isNotEmpty(consumer), consumer));
  21. }
  22. default T getOne(Consumer<LambdaQueryWrapper<T>> consumer) {
  23. return getOne(Wrappers.<T>lambdaQuery().func(ObjectUtil.isNotEmpty(consumer), consumer).last("limit 1"));
  24. }
  25. default List<T> list(Consumer<LambdaQueryWrapper<T>> consumer) {
  26. return list(Wrappers.<T>lambdaQuery().func(ObjectUtil.isNotEmpty(consumer), consumer));
  27. }
  28. default List<Map<String, Object>> listMaps(Consumer<LambdaQueryWrapper<T>> consumer) {
  29. return listMaps(Wrappers.<T>lambdaQuery().func(ObjectUtil.isNotEmpty(consumer), consumer));
  30. }
  31. default <K> List<K> listK(SFunction<T, K> mapper, Consumer<LambdaQueryWrapper<T>> consumer) {
  32. List<T> list = list(Wrappers.<T>lambdaQuery().select(mapper).func(ObjectUtil.isNotEmpty(consumer), consumer));
  33. return list.stream().map(mapper).filter(Objects::nonNull).distinct().collect(Collectors.toList());
  34. }
  35. default <K, V> Map<K, V> mapKV(SFunction<T, K> kFun, SFunction<T, V> vFun, Consumer<LambdaQueryWrapper<T>> consumer) {
  36. List<T> list = list(Wrappers.<T>lambdaQuery().select(kFun, vFun).func(ObjectUtil.isNotEmpty(consumer), consumer));
  37. return list.stream().collect(Collectors.toMap(kFun, vFun, (v1, v2) -> v2));
  38. }
  39. default <K> Map<K, T> mapKEntity(SFunction<T, K> kFun, Consumer<LambdaQueryWrapper<T>> consumer) {
  40. List<T> list = list(Wrappers.<T>lambdaQuery().func(ObjectUtil.isNotEmpty(consumer), consumer));
  41. return list.stream().collect(Collectors.toMap(kFun, item -> item, (v1, v2) -> v2));
  42. }
  43. default <K> Map<K, List<T>> mapKGroup(SFunction<T, K> kFun, Consumer<LambdaQueryWrapper<T>> consumer) {
  44. List<T> list = list(Wrappers.<T>lambdaQuery().func(ObjectUtil.isNotEmpty(consumer), consumer));
  45. return list.stream().collect(Collectors.groupingBy(kFun));
  46. }
  47. default boolean update(Consumer<LambdaUpdateWrapper<T>> consumer) {
  48. return update(Wrappers.<T>lambdaUpdate().func(ObjectUtil.isNotEmpty(consumer), consumer));
  49. }
  50. default boolean remove(Consumer<LambdaQueryWrapper<T>> consumer) {
  51. return remove(Wrappers.<T>lambdaQuery().func(ObjectUtil.isNotEmpty(consumer), consumer));
  52. }
  53. }