From 72514fab70f067c15a167a96923b678eea3c8bfd Mon Sep 17 00:00:00 2001
From: liulin <lin.liu@aliyun.com>
Date: 星期三, 31 七月 2024 23:03:41 +0800
Subject: [PATCH] 去掉不需要的依赖

---
 src/main/java/com/lunhan/xxx/repository/BasicMapperImpl.java |  221 ++++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 202 insertions(+), 19 deletions(-)

diff --git a/src/main/java/com/lunhan/xxx/repository/BasicMapperImpl.java b/src/main/java/com/lunhan/xxx/repository/BasicMapperImpl.java
index 8c28141..e779814 100644
--- a/src/main/java/com/lunhan/xxx/repository/BasicMapperImpl.java
+++ b/src/main/java/com/lunhan/xxx/repository/BasicMapperImpl.java
@@ -1,22 +1,25 @@
 package com.lunhan.xxx.repository;
 
+import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.lunhan.xxx.common.PagerResult;
 import com.lunhan.xxx.common.enums.ELogger;
 import com.lunhan.xxx.common.enums.EResultCode;
 import com.lunhan.xxx.common.enums.EYesOrNo;
 import com.lunhan.xxx.common.exceptions.BusinessException;
 import com.lunhan.xxx.common.util.LoggerUtil;
+import com.lunhan.xxx.entity.dto.SearchBasicDTO;
+import org.apache.ibatis.executor.BatchResult;
 import org.apache.ibatis.session.ResultHandler;
 import org.slf4j.Logger;
 import org.springframework.dao.EmptyResultDataAccessException;
-import org.springframework.transaction.annotation.Transactional;
 
-import javax.persistence.Table;
 import java.io.Serializable;
 import java.lang.reflect.ParameterizedType;
 import java.util.Collection;
@@ -28,7 +31,7 @@
  *
  * @param <T> 数据实体
  */
-public class BasicMapper<T> {
+public abstract class BasicMapperImpl<T> implements BasicMapper<T> {
     protected BaseMapper<T> DB;
     protected Class<T> clazz;
     protected String tableName;
@@ -38,16 +41,17 @@
     /**
      * 构造方法
      */
-    public BasicMapper(BaseMapper<T> db) {
+    public BasicMapperImpl(BaseMapper<T> db) {
         this.clazz = (Class<T>) (
                 (ParameterizedType) getClass().getGenericSuperclass()
         ).getActualTypeArguments()[0];
         this.DB = db;
-        Table annotation = clazz.getAnnotation(Table.class);
+        TableName annotation = clazz.getAnnotation(TableName.class);
         if (null == annotation) {
+            this.tableName = StringUtils.camelToUnderline(clazz.getSimpleName().replace("PO", ""));
             return;
         }
-        this.tableName = annotation.name();
+        this.tableName = annotation.value();
     }
 
     public LambdaQueryWrapper<T> query() {
@@ -58,90 +62,248 @@
         return Wrappers.update();
     }
 
+    /**
+     * 插入一条记录
+     *
+     * @param entity 实体对象
+     */
     public int insert(T entity) {
         return DB.insert(entity);
     }
 
+    /**
+     * 根据实体(ID)删除
+     *
+     * @param entity 实体对象
+     * @since 3.4.4
+     */
     public int deleteById(T entity) {
         return DB.deleteById(entity);
     }
 
+    /**
+     * 根据 entity 条件,删除记录
+     *
+     * @param queryWrapper 实体对象封装操作类(可以为 null,里面的 entity 用于生成 where 语句)
+     */
     public int delete(Wrapper<T> queryWrapper) {
         return DB.delete(queryWrapper);
     }
 
+    /**
+     * 根据 ID 修改
+     *
+     * @param entity 实体对象
+     */
     public int updateById(T entity) {
         return DB.updateById(entity);
     }
 
+    /**
+     * 根据 whereEntity 条件,更新记录
+     *
+     * @param entity        实体对象 (set 条件值,可以为 null,当entity为null时,无法进行自动填充)
+     * @param updateWrapper 实体对象封装操作类(可以为 null,里面的 entity 用于生成 where 语句)
+     */
     public int update(T entity, Wrapper<T> updateWrapper) {
         return DB.update(entity, updateWrapper);
     }
 
+    /**
+     * 根据 ID 查询
+     *
+     * @param id 主键ID
+     */
     public T selectById(Serializable id) {
         return DB.selectById(id);
     }
 
+    /**
+     * 查询(根据ID 批量查询)
+     *
+     * @param idList 主键ID列表(不能为 null 以及 empty)
+     */
     public List<T> selectBatchIds(Collection<? extends Serializable> idList) {
         return DB.selectBatchIds(idList);
     }
 
+    /**
+     * 查询(根据ID 批量查询)
+     *
+     * @param idList        idList 主键ID列表(不能为 null 以及 empty)
+     * @param resultHandler resultHandler 结果处理器 {@link ResultHandler}
+     * @since 3.5.4
+     */
     public void selectBatchIds(Collection<? extends Serializable> idList, ResultHandler<T> resultHandler) {
         DB.selectBatchIds(idList, resultHandler);
     }
 
+    /**
+     * 根据 Wrapper 条件,查询总记录数
+     *
+     * @param queryWrapper 实体对象封装操作类(可以为 null)
+     */
     public Long selectCount(Wrapper<T> queryWrapper) {
         return DB.selectCount(queryWrapper);
     }
 
+    /**
+     * 根据 entity 条件,查询全部记录
+     *
+     * @param queryWrapper 实体对象封装操作类(可以为 null)
+     */
     public List<T> selectList(Wrapper<T> queryWrapper) {
         return DB.selectList(queryWrapper);
     }
 
+    /**
+     * 根据 entity 条件,查询全部记录
+     *
+     * @param queryWrapper  实体对象封装操作类(可以为 null)
+     * @param resultHandler 结果处理器 {@link ResultHandler}
+     * @since 3.5.4
+     */
     public void selectList(Wrapper<T> queryWrapper, ResultHandler<T> resultHandler) {
         DB.selectList(queryWrapper, resultHandler);
     }
 
+    /**
+     * 根据 entity 条件,查询全部记录(并翻页)
+     *
+     * @param page         分页查询条件
+     * @param queryWrapper 实体对象封装操作类(可以为 null)
+     * @since 3.5.3.2
+     */
     public List<T> selectList(IPage<T> page, Wrapper<T> queryWrapper) {
-        return DB.selectList(page, queryWrapper);
+        return DB.selectList(queryWrapper);
     }
 
+    /**
+     * 根据 entity 条件,查询全部记录(并翻页)
+     *
+     * @param page          分页查询条件
+     * @param queryWrapper  实体对象封装操作类(可以为 null)
+     * @param resultHandler 结果处理器 {@link ResultHandler}
+     * @since 3.5.4
+     */
     public void selectList(IPage<T> page, Wrapper<T> queryWrapper, ResultHandler<T> resultHandler) {
         DB.selectList(page, queryWrapper, resultHandler);
     }
 
+    /**
+     * 根据 Wrapper 条件,查询全部记录
+     *
+     * @param queryWrapper 实体对象封装操作类
+     */
     public List<Map<String, Object>> selectMaps(Wrapper<T> queryWrapper) {
         return DB.selectMaps(queryWrapper);
     }
 
+    /**
+     * 根据 Wrapper 条件,查询全部记录
+     *
+     * @param queryWrapper  实体对象封装操作类
+     * @param resultHandler 结果处理器 {@link ResultHandler}
+     * @since 3.5.4
+     */
     public void selectMaps(Wrapper<T> queryWrapper, ResultHandler<Map<String, Object>> resultHandler) {
         DB.selectMaps(queryWrapper, resultHandler);
     }
 
+    /**
+     * 根据 Wrapper 条件,查询全部记录(并翻页)
+     *
+     * @param page         分页查询条件
+     * @param queryWrapper 实体对象封装操作类
+     * @since 3.5.3.2
+     */
     public List<Map<String, Object>> selectMaps(IPage<? extends Map<String, Object>> page, Wrapper<T> queryWrapper) {
         return DB.selectMaps(page, queryWrapper);
     }
 
+    /**
+     * 根据 Wrapper 条件,查询全部记录(并翻页)
+     *
+     * @param page          分页查询条件
+     * @param queryWrapper  实体对象封装操作类
+     * @param resultHandler 结果处理器 {@link ResultHandler}
+     * @since 3.5.4
+     */
     public void selectMaps(IPage<? extends Map<String, Object>> page, Wrapper<T> queryWrapper, ResultHandler<Map<String, Object>> resultHandler) {
         DB.selectMaps(page, queryWrapper, resultHandler);
     }
 
+    /**
+     * 根据 Wrapper 条件,查询全部记录
+     * <p>注意: 只返回第一个字段的值</p>
+     *
+     * @param queryWrapper 实体对象封装操作类(可以为 null)
+     */
+    public <E> List<E> selectObjs(Wrapper<T> queryWrapper) {
+        return DB.selectObjs(queryWrapper);
+    }
+
+    /**
+     * 根据 Wrapper 条件,查询全部记录
+     * <p>注意: 只返回第一个字段的值</p>
+     *
+     * @param queryWrapper  实体对象封装操作类(可以为 null)
+     * @param resultHandler 结果处理器 {@link ResultHandler}
+     * @since 3.5.4
+     */
+    public <E> void selectObjs(Wrapper<T> queryWrapper, ResultHandler<E> resultHandler) {
+        DB.selectObjs(queryWrapper, resultHandler);
+    }
+
+
+    /**
+     * 批量新增
+     *
+     * @param list 数据实体列表
+     */
+    public Boolean addList(List<T> list) {
+        List<BatchResult> batchResult = DB.insert(list);
+        // TODO 判断成功
+        return Boolean.TRUE;
+    }
+
+    /**
+     * 批量更新
+     *
+     * @param list 数据实体列表
+     */
+    public Boolean modifyList(List<T> list) {
+        List<BatchResult> batchResult = DB.updateById(list);
+        // TODO 判断成功
+        return Boolean.TRUE;
+    }
+
+    /**
+     * 批量查询其他实体列表
+     *
+     * @param queryWrapper 查询条件
+     */
     public <E> List<E> selectListObject(Wrapper<T> queryWrapper) {
         return DB.selectObjs(queryWrapper);
     }
 
+    /**
+     * 批量查询其他实体列表
+     *
+     * @param queryWrapper  查询条件
+     * @param resultHandler 查询结果处理器
+     */
     public <E> void selectListObject(Wrapper<T> queryWrapper, ResultHandler<E> resultHandler) {
         DB.selectObjs(queryWrapper, resultHandler);
     }
 
     /**
-     * 根据条件获取数据实体列表
+     * 根据主键查询单个数据实体
      *
-     * @param queryWrapper 查询条件
+     * @param id 主键值
      */
-    @Transactional(readOnly = true)
-    protected List<T> getList(Wrapper<T>... queryWrapper) {
-        return DB.selectList(queryWrapper.length > 0 ? queryWrapper[0] : null);
+    public T get(Serializable id) {
+        return DB.selectById(id);
     }
 
     /**
@@ -149,8 +311,7 @@
      *
      * @param queryWrapper 查询条件
      */
-    @Transactional(readOnly = true)
-    protected T get(Wrapper<T> queryWrapper) {
+    public T get(Wrapper<T> queryWrapper) {
         String method = "BasicDao.Wrapper<T> queryWrapper";
         try {
             return DB.selectOne(queryWrapper);
@@ -163,6 +324,20 @@
         }
     }
 
+    /**
+     * 根据主键批量获取
+     * @param listId 主键列表
+     */
+    public <E extends Serializable> List<T> getList(List<E> listId) {
+        return DB.selectBatchIds(listId);
+    }
+
+    /**
+     * 获取全量数据(慎重)
+     */
+    public List<T> getList() {
+        return DB.selectList(null);
+    }
 
     /**
      * 根据传入sql查询数据
@@ -188,7 +363,7 @@
      * @param id 主键id
      * @return 是否成功
      */
-    public Boolean remove(Long id) {
+    public Boolean remove(Serializable id) {
         int rowCount = DB.deleteById(id);
         if (rowCount > 0) {
             return Boolean.TRUE;
@@ -202,7 +377,7 @@
      * @param listId id列表
      * @return 是否成功
      */
-    public Boolean remove(List<Long> listId) {
+    public <E extends Serializable> Boolean remove(List<E> listId) {
         int rowCount = DB.deleteByIds(listId);
         if (rowCount > 0) {
             return Boolean.TRUE;
@@ -216,7 +391,7 @@
      *
      * @param queryWrapper 查询条件
      */
-    protected Boolean remove(Wrapper<T> queryWrapper) {
+    public Boolean remove(Wrapper<T> queryWrapper) {
         int rowCount = DB.delete(queryWrapper);
         if (rowCount > 0) {
             return Boolean.TRUE;
@@ -230,7 +405,7 @@
      * @param id 主键id
      * @return 是否成功
      */
-    public Boolean deleteLogic(Long id) {
+    public Boolean deleteLogic(Serializable id) {
         UpdateWrapper<T> where = Wrappers.update();
         where.set("is_delete", EYesOrNo.YES.getValue());
         where.eq("id", id);
@@ -247,7 +422,7 @@
      * @param listId id列表
      * @return 是否成功
      */
-    public Boolean deleteLogic(List<Long> listId) {
+    public <E extends Serializable> Boolean deleteLogic(List<E> listId) {
         UpdateWrapper<T> where = Wrappers.update();
         where.set("is_delete", EYesOrNo.YES.getValue());
         where.in("id", listId);
@@ -257,4 +432,12 @@
         }
         return Boolean.FALSE;
     }
+
+    /**
+     * 分页查询
+     *
+     * @param search 查询参数
+     */
+    @Override
+    public abstract PagerResult<T> search(SearchBasicDTO search);
 }

--
Gitblit v1.9.3