From 8f6484e47085fde953e4e7c725da6fa56228322b Mon Sep 17 00:00:00 2001
From: 疯狂的狮子li <15040126243@163.com>
Date: 星期三, 12 一月 2022 21:22:26 +0800
Subject: [PATCH] [重磅更新] 重写项目整体结构 数据处理下沉至 Mapper 符合 MVC 规范 减少循环依赖

---
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java                    |    4 
 ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/TestTreeServiceImpl.java            |   17 
 ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableColumnServiceImpl.java |    9 
 ruoyi-common/src/main/java/com/ruoyi/common/core/mapper/BaseMapperPlus.java              |  229 +++++++++++++
 ruoyi-framework/src/main/java/com/ruoyi/framework/config/MybatisPlusConfig.java          |   22 -
 ruoyi-system/src/main/java/com/ruoyi/system/service/SysLoginService.java                 |   25 -
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserOnlineServiceImpl.java   |   10 
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictTypeMapper.java                |    4 
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysOssMapper.java                     |    5 
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java     |   19 
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java                    |    4 
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java     |   28 
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysLogininforMapper.java              |    4 
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMapper.java                    |    4 
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java       |   16 
 ruoyi-system/src/main/java/com/ruoyi/system/service/SysRegisterService.java              |   19 
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserPostMapper.java                |    4 
 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysLogininforService.java           |    3 
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOssServiceImpl.java          |   20 
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TokenServiceImpl.java           |    8 
 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysOssConfigService.java            |    4 
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysOssConfigMapper.java               |    5 
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysConfigMapper.java                  |    4 
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysPostMapper.java                    |    4 
 ruoyi-generator/src/main/java/com/ruoyi/generator/service/IGenTableService.java          |    2 
 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictDataService.java             |    3 
 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysNoticeService.java               |    3 
 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysOssService.java                  |    6 
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysNoticeServiceImpl.java       |   13 
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysMenuMapper.java                    |    4 
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java         |   40 +-
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysLogininforServiceImpl.java   |   15 
 ruoyi-generator/src/main/java/com/ruoyi/generator/mapper/GenTableMapper.java             |    4 
 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysOperLogService.java              |    2 
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOssConfigServiceImpl.java    |   26 
 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysPostService.java                 |    2 
 ruoyi-demo/src/main/java/com/ruoyi/demo/service/ITestTreeService.java                    |    4 
 ruoyi-demo/src/main/java/com/ruoyi/demo/mapper/TestDemoMapper.java                       |    4 
 ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableServiceImpl.java       |   21 
 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysConfigService.java               |    6 
 ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestDemoController.java               |    2 
 ruoyi-system/src/main/java/com/ruoyi/system/service/SysPermissionService.java            |   10 
 ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/TestDemoServiceImpl.java            |   24 
 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictTypeService.java             |    2 
 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java                 |    3 
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysPostServiceImpl.java         |   26 
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOperLogServiceImpl.java      |   17 
 ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestBatchController.java              |   17 
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java         |   28 
 ruoyi-demo/src/main/java/com/ruoyi/demo/service/ITestDemoService.java                    |    8 
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysNoticeMapper.java                  |    4 
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMenuMapper.java                |    4 
 ruoyi-generator/src/main/java/com/ruoyi/generator/mapper/GenTableColumnMapper.java       |    4 
 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDeptService.java                 |    3 
 ruoyi-generator/src/main/java/com/ruoyi/generator/service/IGenTableColumnService.java    |    3 
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictDataMapper.java                |    4 
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserRoleMapper.java                |    4 
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleDeptMapper.java                |    4 
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDataScopeServiceImpl.java    |    9 
 ruoyi-generator/src/main/resources/vm/java/mapper.java.vm                                |    2 
 /dev/null                                                                                |  101 -----
 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysRoleService.java                 |    3 
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java         |   38 -
 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysMenuService.java                 |    3 
 ruoyi-demo/src/main/java/com/ruoyi/demo/mapper/TestTreeMapper.java                       |    5 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysOssController.java          |    4 
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/UserDetailsServiceImpl.java     |   10 
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java         |   34 -
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysOperLogMapper.java                 |    4 
 69 files changed, 559 insertions(+), 447 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysOssController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysOssController.java
index 01e1bd0..b966879 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysOssController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysOssController.java
@@ -5,7 +5,6 @@
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.http.HttpException;
 import cn.hutool.http.HttpUtil;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.ruoyi.common.annotation.Log;
 import com.ruoyi.common.annotation.RepeatSubmit;
 import com.ruoyi.common.core.controller.BaseController;
@@ -134,8 +133,7 @@
     @PutMapping("/changePreviewListResource")
     public AjaxResult<Void> changePreviewListResource(@RequestBody String body) {
         Map<String, Boolean> map = JsonUtils.parseMap(body);
-        SysConfig config = iSysConfigService.getOne(new LambdaQueryWrapper<SysConfig>()
-            .eq(SysConfig::getConfigKey, OssConstant.PEREVIEW_LIST_RESOURCE_KEY));
+        SysConfig config = iSysConfigService.getOne(new SysConfig().setConfigKey(OssConstant.PEREVIEW_LIST_RESOURCE_KEY));
         config.setConfigValue(map.get("previewListResource").toString());
         return toAjax(iSysConfigService.updateConfig(config));
     }
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/mapper/BaseMapperPlus.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/mapper/BaseMapperPlus.java
new file mode 100644
index 0000000..de29793
--- /dev/null
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/mapper/BaseMapperPlus.java
@@ -0,0 +1,229 @@
+package com.ruoyi.common.core.mapper;
+
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.enums.SqlMethod;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.metadata.TableInfo;
+import com.baomidou.mybatisplus.core.metadata.TableInfoHelper;
+import com.baomidou.mybatisplus.core.toolkit.*;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
+import com.ruoyi.common.utils.BeanCopyUtils;
+import org.apache.ibatis.binding.MapperMethod;
+import org.apache.ibatis.logging.Log;
+import org.apache.ibatis.logging.LogFactory;
+
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+
+/**
+ * 鑷畾涔� Mapper 鎺ュ彛, 瀹炵幇 鑷畾涔夋墿灞�
+ *
+ * @param <M> mapper 娉涘瀷
+ * @param <T> table 娉涘瀷
+ * @param <V> vo 娉涘瀷
+ * @author Lion Li
+ * @since 2021-05-13
+ */
+@SuppressWarnings("unchecked")
+public interface BaseMapperPlus<M, T, V> extends BaseMapper<T> {
+
+    Log log = LogFactory.getLog(BaseMapperPlus.class);
+
+    int DEFAULT_BATCH_SIZE = 1000;
+
+    default Class<V> currentVoClass() {
+        return (Class<V>) ReflectionKit.getSuperClassGenericType(this.getClass(), BaseMapperPlus.class, 2);
+    }
+
+    default Class<T> currentModelClass() {
+        return (Class<T>) ReflectionKit.getSuperClassGenericType(this.getClass(), BaseMapperPlus.class, 1);
+    }
+
+    default Class<M> currentMapperClass() {
+        return (Class<M>) ReflectionKit.getSuperClassGenericType(this.getClass(), BaseMapperPlus.class, 0);
+    }
+
+    default List<T> selectList() {
+        return this.selectList(new QueryWrapper<>());
+    }
+
+    /**
+     * 鎵归噺鎻掑叆
+     */
+    default boolean insertBatch(Collection<T> entityList) {
+        return insertBatch(entityList, DEFAULT_BATCH_SIZE);
+    }
+
+    /**
+     * 鎵归噺鏇存柊
+     */
+    default boolean updateBatchById(Collection<T> entityList) {
+        return updateBatchById(entityList, DEFAULT_BATCH_SIZE);
+    }
+
+    /**
+     * 鎵归噺鎻掑叆鎴栨洿鏂�
+     */
+    default boolean insertOrUpdateBatch(Collection<T> entityList) {
+        return insertOrUpdateBatch(entityList, DEFAULT_BATCH_SIZE);
+    }
+
+    /**
+     * 鎵归噺鎻掑叆(鍖呭惈闄愬埗鏉℃暟)
+     */
+    default boolean insertBatch(Collection<T> entityList, int batchSize) {
+        String sqlStatement = SqlHelper.getSqlStatement(this.currentMapperClass(), SqlMethod.INSERT_ONE);
+        return SqlHelper.executeBatch(this.currentModelClass(), log, entityList, batchSize,
+            (sqlSession, entity) -> sqlSession.insert(sqlStatement, entity));
+    }
+
+    /**
+     * 鎵归噺鏇存柊(鍖呭惈闄愬埗鏉℃暟)
+     */
+    default boolean updateBatchById(Collection<T> entityList, int batchSize) {
+        String sqlStatement = SqlHelper.getSqlStatement(this.currentMapperClass(), SqlMethod.UPDATE_BY_ID);
+        return SqlHelper.executeBatch(this.currentModelClass(), log, entityList, batchSize,
+            (sqlSession, entity) -> {
+                MapperMethod.ParamMap<T> param = new MapperMethod.ParamMap<>();
+                param.put(Constants.ENTITY, entity);
+                sqlSession.update(sqlStatement, param);
+            });
+    }
+
+    /**
+     * 鎵归噺鎻掑叆鎴栨洿鏂�(鍖呭惈闄愬埗鏉℃暟)
+     */
+    default boolean insertOrUpdateBatch(Collection<T> entityList, int batchSize) {
+        TableInfo tableInfo = TableInfoHelper.getTableInfo(this.currentModelClass());
+        Assert.notNull(tableInfo, "error: can not execute. because can not find cache of TableInfo for entity!");
+        String keyProperty = tableInfo.getKeyProperty();
+        Assert.notEmpty(keyProperty, "error: can not execute. because can not find column for id from entity!");
+        return SqlHelper.saveOrUpdateBatch(this.currentModelClass(), getClass(), log, entityList, batchSize, (sqlSession, entity) -> {
+            Object idVal = tableInfo.getPropertyValue(entity, keyProperty);
+            String sqlStatement = SqlHelper.getSqlStatement(this.currentMapperClass(), SqlMethod.INSERT_ONE);
+            return StringUtils.checkValNull(idVal)
+                || CollectionUtils.isEmpty(sqlSession.selectList(sqlStatement, entity));
+        }, (sqlSession, entity) -> {
+            MapperMethod.ParamMap<T> param = new MapperMethod.ParamMap<>();
+            param.put(Constants.ENTITY, entity);
+            String sqlStatement = SqlHelper.getSqlStatement(this.currentMapperClass(), SqlMethod.UPDATE_BY_ID);
+            sqlSession.update(sqlStatement, param);
+        });
+    }
+
+    /**
+     * 鎻掑叆鎴栨洿鏂�(鍖呭惈闄愬埗鏉℃暟)
+     */
+    default boolean insertOrUpdate(T entity) {
+        if (null != entity) {
+            TableInfo tableInfo = TableInfoHelper.getTableInfo(this.currentModelClass());
+            Assert.notNull(tableInfo, "error: can not execute. because can not find cache of TableInfo for entity!");
+            String keyProperty = tableInfo.getKeyProperty();
+            Assert.notEmpty(keyProperty, "error: can not execute. because can not find column for id from entity!");
+            Object idVal = tableInfo.getPropertyValue(entity, tableInfo.getKeyProperty());
+            return StringUtils.checkValNull(idVal) || Objects.isNull(selectById((Serializable) idVal)) ? insert(entity) > 0 : updateById(entity) > 0;
+        }
+        return false;
+    }
+
+    default V selectVoById(Serializable id) {
+        return selectVoById(id, this.currentVoClass());
+    }
+
+    /**
+     * 鏍规嵁 ID 鏌ヨ
+     */
+    default <C> C selectVoById(Serializable id, Class<C> voClass) {
+        T obj = this.selectById(id);
+        if (ObjectUtil.isNull(obj)) {
+            return null;
+        }
+        return BeanCopyUtils.copy(obj, voClass);
+    }
+
+    default List<V> selectVoById(Collection<? extends Serializable> idList) {
+        return selectVoBatchIds(idList, this.currentVoClass());
+    }
+
+    /**
+     * 鏌ヨ锛堟牴鎹甀D 鎵归噺鏌ヨ锛�
+     */
+    default <C> List<C> selectVoBatchIds(Collection<? extends Serializable> idList, Class<C> voClass) {
+        List<T> list = this.selectBatchIds(idList);
+        if (CollUtil.isEmpty(list)) {
+            return CollUtil.newArrayList();
+        }
+        return BeanCopyUtils.copyList(list, voClass);
+    }
+
+    default List<V> selectVoByMap(Map<String, Object> map) {
+        return selectVoByMap(map, this.currentVoClass());
+    }
+
+    /**
+     * 鏌ヨ锛堟牴鎹� columnMap 鏉′欢锛�
+     */
+    default <C> List<C> selectVoByMap(Map<String, Object> map, Class<C> voClass) {
+        List<T> list = this.selectByMap(map);
+        if (CollUtil.isEmpty(list)) {
+            return CollUtil.newArrayList();
+        }
+        return BeanCopyUtils.copyList(list, voClass);
+    }
+
+    default V selectVoOne(Wrapper<T> wrapper) {
+        return selectVoOne(wrapper, this.currentVoClass());
+    }
+
+    /**
+     * 鏍规嵁 entity 鏉′欢锛屾煡璇竴鏉¤褰�
+     */
+    default <C> C selectVoOne(Wrapper<T> wrapper, Class<C> voClass) {
+        T obj = this.selectOne(wrapper);
+        if (ObjectUtil.isNull(obj)) {
+            return null;
+        }
+        return BeanCopyUtils.copy(obj, voClass);
+    }
+
+    default List<V> selectVoList(Wrapper<T> wrapper) {
+        return selectVoList(wrapper, this.currentVoClass());
+    }
+
+    /**
+     * 鏍规嵁 entity 鏉′欢锛屾煡璇㈠叏閮ㄨ褰�
+     */
+    default <C> List<C> selectVoList(Wrapper<T> wrapper, Class<C> voClass) {
+        List<T> list = this.selectList(wrapper);
+        if (CollUtil.isEmpty(list)) {
+            return CollUtil.newArrayList();
+        }
+        return BeanCopyUtils.copyList(list, voClass);
+    }
+
+    default <P extends IPage<V>> P selectVoPage(IPage<T> page, Wrapper<T> wrapper) {
+        return selectVoPage(page, wrapper, this.currentVoClass());
+    }
+
+    /**
+     * 鍒嗛〉鏌ヨVO
+     */
+    default <C, P extends IPage<C>> P selectVoPage(IPage<T> page, Wrapper<T> wrapper, Class<C> voClass) {
+        IPage<T> pageData = this.selectPage(page, wrapper);
+        IPage<C> voPage = new Page<>(pageData.getCurrent(), pageData.getSize(), pageData.getTotal());
+        if (CollUtil.isEmpty(pageData.getRecords())) {
+            return (P) voPage;
+        }
+        voPage.setRecords(BeanCopyUtils.copyList(pageData.getRecords(), voClass));
+        return (P) voPage;
+    }
+
+}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/mybatisplus/core/BaseMapperPlus.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/mybatisplus/core/BaseMapperPlus.java
deleted file mode 100644
index 9532db3..0000000
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/mybatisplus/core/BaseMapperPlus.java
+++ /dev/null
@@ -1,98 +0,0 @@
-package com.ruoyi.common.core.mybatisplus.core;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.util.ObjectUtil;
-import com.baomidou.mybatisplus.core.conditions.Wrapper;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.ruoyi.common.utils.BeanCopyUtils;
-import org.apache.ibatis.annotations.Param;
-
-import java.io.Serializable;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
-/**
- * 鑷畾涔� Mapper 鎺ュ彛, 瀹炵幇 鑷畾涔夋墿灞�
- *
- * @author Lion Li
- * @since 2021-05-13
- */
-public interface BaseMapperPlus<T> extends BaseMapper<T> {
-
-    /**
-     * 鍗晄ql鎵归噺鎻掑叆( 鍏ㄩ噺濉厖 )
-     */
-    int insertAll(@Param("list") Collection<T> batchList);
-
-    /**
-     * 鏍规嵁 ID 鏌ヨ
-     */
-    default <V> V selectVoById(Serializable id, Class<V> voClass) {
-        T obj = this.selectById(id);
-        if (ObjectUtil.isNull(obj)) {
-            return null;
-        }
-        return BeanCopyUtils.copy(obj, voClass);
-    }
-
-    /**
-     * 鏌ヨ锛堟牴鎹甀D 鎵归噺鏌ヨ锛�
-     */
-    default <V> List<V> selectVoBatchIds(Collection<? extends Serializable> idList, Class<V> voClass) {
-        List<T> list = this.selectBatchIds(idList);
-        if (CollUtil.isEmpty(list)) {
-            return CollUtil.newArrayList();
-        }
-        return BeanCopyUtils.copyList(list, voClass);
-    }
-
-    /**
-     * 鏌ヨ锛堟牴鎹� columnMap 鏉′欢锛�
-     */
-    default <V> List<V> selectVoByMap(Map<String, Object> map, Class<V> voClass) {
-        List<T> list = this.selectByMap(map);
-        if (CollUtil.isEmpty(list)) {
-            return CollUtil.newArrayList();
-        }
-        return BeanCopyUtils.copyList(list, voClass);
-    }
-
-    /**
-     * 鏍规嵁 entity 鏉′欢锛屾煡璇竴鏉¤褰�
-     */
-    default <V> V selectVoOne(Wrapper<T> wrapper, Class<V> voClass) {
-        T obj = this.selectOne(wrapper);
-        if (ObjectUtil.isNull(obj)) {
-            return null;
-        }
-        return BeanCopyUtils.copy(obj, voClass);
-    }
-
-    /**
-     * 鏍规嵁 entity 鏉′欢锛屾煡璇㈠叏閮ㄨ褰�
-     */
-    default <V> List<V> selectVoList(Wrapper<T> wrapper, Class<V> voClass) {
-        List<T> list = this.selectList(wrapper);
-        if (CollUtil.isEmpty(list)) {
-            return CollUtil.newArrayList();
-        }
-        return BeanCopyUtils.copyList(list, voClass);
-    }
-
-    /**
-     * 鍒嗛〉鏌ヨVO
-     */
-    default <V, P extends IPage<V>> P selectVoPage(IPage<T> page, Wrapper<T> wrapper, Class<V> voClass) {
-        IPage<T> pageData = this.selectPage(page, wrapper);
-        IPage<V> voPage = new Page<>(pageData.getCurrent(), pageData.getSize(), pageData.getTotal());
-        if (CollUtil.isEmpty(pageData.getRecords())) {
-            return (P) voPage;
-        }
-        voPage.setRecords(BeanCopyUtils.copyList(pageData.getRecords(), voClass));
-        return (P) voPage;
-    }
-
-}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/mybatisplus/core/IServicePlus.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/mybatisplus/core/IServicePlus.java
deleted file mode 100644
index 897b246..0000000
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/mybatisplus/core/IServicePlus.java
+++ /dev/null
@@ -1,116 +0,0 @@
-package com.ruoyi.common.core.mybatisplus.core;
-
-import com.baomidou.mybatisplus.core.conditions.Wrapper;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.baomidou.mybatisplus.extension.service.IService;
-
-import java.io.Serializable;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-import java.util.function.Function;
-
-/**
- * 鑷畾涔� Service 鎺ュ彛, 瀹炵幇 鏁版嵁搴撳疄浣撲笌 vo 瀵硅薄杞崲杩斿洖
- *
- * @param <T> 鏁版嵁瀹炰綋绫�
- * @param <V> vo绫�
- * @author Lion Li
- */
-public interface IServicePlus<T, V> extends IService<T> {
-
-    /**
-     * @param id 涓婚敭id
-     * @return V瀵硅薄
-     */
-    V getVoById(Serializable id);
-
-    /**
-     * @param convertor 鑷畾涔夎浆鎹㈠櫒
-     */
-    default V getVoById(Serializable id, Function<T, V> convertor) {
-        return convertor.apply(getById(id));
-    }
-
-    /**
-     * @param idList id鍒楄〃
-     * @return V瀵硅薄
-     */
-    List<V> listVoByIds(Collection<? extends Serializable> idList);
-
-    /**
-     * @param convertor 鑷畾涔夎浆鎹㈠櫒
-     */
-    default List<V> listVoByIds(Collection<? extends Serializable> idList,
-                                Function<Collection<T>, List<V>> convertor) {
-        List<T> list = getBaseMapper().selectBatchIds(idList);
-        if (list == null) {
-            return null;
-        }
-        return convertor.apply(list);
-    }
-
-    /**
-     * @param columnMap 琛ㄥ瓧娈� map 瀵硅薄
-     * @return V瀵硅薄
-     */
-    List<V> listVoByMap(Map<String, Object> columnMap);
-
-    /**
-     * @param convertor 鑷畾涔夎浆鎹㈠櫒
-     */
-    default List<V> listVoByMap(Map<String, Object> columnMap,
-                                Function<Collection<T>, List<V>> convertor) {
-        List<T> list = getBaseMapper().selectByMap(columnMap);
-        if (list == null) {
-            return null;
-        }
-        return convertor.apply(list);
-    }
-
-    /**
-     * @param queryWrapper 鏌ヨ鏉′欢
-     * @return V瀵硅薄
-     */
-    V getVoOne(Wrapper<T> queryWrapper);
-
-    /**
-     * @param convertor 鑷畾涔夎浆鎹㈠櫒
-     */
-    default V getVoOne(Wrapper<T> queryWrapper, Function<T, V> convertor) {
-        return convertor.apply(getOne(queryWrapper, true));
-    }
-
-    /**
-     * @param queryWrapper 鏌ヨ鏉′欢
-     * @return V瀵硅薄
-     */
-    List<V> listVo(Wrapper<T> queryWrapper);
-
-    /**
-     * @param convertor 鑷畾涔夎浆鎹㈠櫒
-     */
-    default List<V> listVo(Wrapper<T> queryWrapper, Function<Collection<T>, List<V>> convertor) {
-        List<T> list = getBaseMapper().selectList(queryWrapper);
-        if (list == null) {
-            return null;
-        }
-        return convertor.apply(list);
-    }
-
-    default List<V> listVo() {
-        return listVo(Wrappers.emptyWrapper());
-    }
-
-    /**
-     * @param convertor 鑷畾涔夎浆鎹㈠櫒
-     */
-    default List<V> listVo(Function<Collection<T>, List<V>> convertor) {
-        return listVo(Wrappers.emptyWrapper(), convertor);
-    }
-
-    boolean saveAll(Collection<T> entityList);
-
-    boolean saveOrUpdateAll(Collection<T> entityList);
-}
-
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/mybatisplus/core/ServicePlusImpl.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/mybatisplus/core/ServicePlusImpl.java
deleted file mode 100644
index 50f8480..0000000
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/mybatisplus/core/ServicePlusImpl.java
+++ /dev/null
@@ -1,211 +0,0 @@
-package com.ruoyi.common.core.mybatisplus.core;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.util.ObjectUtil;
-import com.baomidou.mybatisplus.core.conditions.Wrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.core.metadata.TableInfo;
-import com.baomidou.mybatisplus.core.metadata.TableInfoHelper;
-import com.baomidou.mybatisplus.core.toolkit.Assert;
-import com.baomidou.mybatisplus.core.toolkit.ReflectionKit;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ruoyi.common.utils.reflect.ReflectUtils;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
-/**
- * IServicePlus 瀹炵幇绫�
- *
- * @param <M> Mapper绫�
- * @param <T> 鏁版嵁瀹炰綋绫�
- * @param <V> vo绫�
- * @author Lion Li
- */
-@Slf4j
-@SuppressWarnings("unchecked")
-public class ServicePlusImpl<M extends BaseMapperPlus<T>, T, V> extends ServiceImpl<M, T> implements IServicePlus<T, V> {
-
-    @Autowired
-    protected M baseMapper;
-
-    @Override
-    public M getBaseMapper() {
-        return baseMapper;
-    }
-
-
-    protected Class<T> entityClass = currentModelClass();
-
-    @Override
-    public Class<T> getEntityClass() {
-        return entityClass;
-    }
-
-    protected Class<M> mapperClass = currentMapperClass();
-
-    protected Class<V> voClass = currentVoClass();
-
-    public Class<V> getVoClass() {
-        return voClass;
-    }
-
-    @Override
-    protected Class<M> currentMapperClass() {
-        return (Class<M>) ReflectionKit.getSuperClassGenericType(this.getClass(), ServicePlusImpl.class, 0);
-    }
-
-    @Override
-    protected Class<T> currentModelClass() {
-        return (Class<T>) ReflectionKit.getSuperClassGenericType(this.getClass(), ServicePlusImpl.class, 1);
-    }
-
-    protected Class<V> currentVoClass() {
-        return (Class<V>) ReflectionKit.getSuperClassGenericType(this.getClass(), ServicePlusImpl.class, 2);
-    }
-
-    /**
-     * 鍗曟潯鎵ц鎬ц兘宸� 閫傜敤浜庡垪琛ㄥ璞″唴瀹逛笉纭畾
-     */
-    @Override
-    public boolean saveBatch(Collection<T> entityList, int batchSize) {
-        return super.saveBatch(entityList, batchSize);
-    }
-
-    @Override
-    public boolean saveOrUpdate(T entity) {
-        return super.saveOrUpdate(entity);
-    }
-
-    /**
-     * 鍗曟潯鎵ц鎬ц兘宸� 閫傜敤浜庡垪琛ㄥ璞″唴瀹逛笉纭畾
-     */
-    @Override
-    public boolean saveOrUpdateBatch(Collection<T> entityList, int batchSize) {
-        return super.saveOrUpdateBatch(entityList, batchSize);
-    }
-
-    @Override
-    public boolean updateBatchById(Collection<T> entityList, int batchSize) {
-        return super.updateBatchById(entityList, batchSize);
-    }
-
-    /**
-     * 鍗晄ql鎵归噺鎻掑叆( 鍏ㄩ噺濉厖 鏃犺鏁版嵁搴撻粯璁ゅ�� )
-     * 閫傜敤浜庢棤鑴戞彃鍏�
-     */
-    @Override
-    public boolean saveBatch(Collection<T> entityList) {
-        return saveBatch(entityList, DEFAULT_BATCH_SIZE);
-    }
-
-    @Override
-    public boolean saveOrUpdateBatch(Collection<T> entityList) {
-        return saveOrUpdateBatch(entityList, DEFAULT_BATCH_SIZE);
-    }
-
-    @Override
-    public boolean updateBatchById(Collection<T> entityList) {
-        return updateBatchById(entityList, DEFAULT_BATCH_SIZE);
-    }
-
-    /**
-     * 鍗晄ql鎵归噺鎻掑叆( 鍏ㄩ噺濉厖 )
-     */
-    @Override
-    public boolean saveAll(Collection<T> entityList) {
-        if (CollUtil.isEmpty(entityList)) {
-            return false;
-        }
-        return baseMapper.insertAll(entityList) == entityList.size();
-    }
-
-    /**
-     * 鍏ㄩ噺淇濆瓨鎴栨洿鏂� ( 鎸変富閿尯鍒� )
-     */
-    @Override
-    public boolean saveOrUpdateAll(Collection<T> entityList) {
-        if (CollUtil.isEmpty(entityList)) {
-            return false;
-        }
-        TableInfo tableInfo = TableInfoHelper.getTableInfo(entityClass);
-        Assert.notNull(tableInfo, "error: can not execute. because can not find cache of TableInfo for entity!");
-        String keyProperty = tableInfo.getKeyProperty();
-        Assert.notEmpty(keyProperty, "error: can not execute. because can not find column for id from entity!");
-        List<T> addList = new ArrayList<>();
-        List<T> updateList = new ArrayList<>();
-        int row = 0;
-        for (T entity : entityList) {
-            Object id = ReflectUtils.invokeGetter(entity, keyProperty);
-            if (ObjectUtil.isNull(id)) {
-                addList.add(entity);
-            } else {
-                updateList.add(entity);
-            }
-        }
-        if (CollUtil.isNotEmpty(updateList) && updateBatchById(updateList)) {
-            row += updateList.size();
-        }
-        if (CollUtil.isNotEmpty(addList)) {
-            row += baseMapper.insertAll(addList);
-        }
-        return row == entityList.size();
-    }
-
-    /**
-     * 鏍规嵁 ID 鏌ヨ
-     */
-    @Override
-    public V getVoById(Serializable id) {
-        return getBaseMapper().selectVoById(id, voClass);
-    }
-
-    /**
-     * 鏌ヨ锛堟牴鎹甀D 鎵归噺鏌ヨ锛�
-     */
-    @Override
-    public List<V> listVoByIds(Collection<? extends Serializable> idList) {
-        return getBaseMapper().selectVoBatchIds(idList, voClass);
-    }
-
-    /**
-     * 鏌ヨ锛堟牴鎹� columnMap 鏉′欢锛�
-     */
-    @Override
-    public List<V> listVoByMap(Map<String, Object> columnMap) {
-        return getBaseMapper().selectVoByMap(columnMap, voClass);
-    }
-
-    /**
-     * 鏍规嵁 Wrapper锛屾煡璇竴鏉¤褰� <br/>
-     * <p>缁撴灉闆嗭紝濡傛灉鏄涓細鎶涘嚭寮傚父锛岄殢鏈哄彇涓�鏉″姞涓婇檺鍒舵潯浠� wrapper.last("LIMIT 1")</p>
-     */
-    @Override
-    public V getVoOne(Wrapper<T> queryWrapper) {
-        return getBaseMapper().selectVoOne(queryWrapper, voClass);
-    }
-
-    /**
-     * 鏌ヨ鍒楄〃
-     */
-    @Override
-    public List<V> listVo(Wrapper<T> queryWrapper) {
-        return getBaseMapper().selectVoList(queryWrapper, voClass);
-    }
-
-    /**
-     * 缈婚〉鏌ヨ
-     *
-     * @param page         缈婚〉瀵硅薄
-     * @param queryWrapper 瀹炰綋瀵硅薄灏佽鎿嶄綔绫�
-     */
-    public <P extends IPage<V>> P pageVo(IPage<T> page, Wrapper<T> queryWrapper) {
-        return getBaseMapper().selectVoPage(page, queryWrapper, voClass);
-    }
-
-}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/mybatisplus/methods/InsertAll.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/mybatisplus/methods/InsertAll.java
deleted file mode 100644
index 9920dc5..0000000
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/mybatisplus/methods/InsertAll.java
+++ /dev/null
@@ -1,101 +0,0 @@
-package com.ruoyi.common.core.mybatisplus.methods;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.core.injector.AbstractMethod;
-import com.baomidou.mybatisplus.core.metadata.TableFieldInfo;
-import com.baomidou.mybatisplus.core.metadata.TableInfo;
-import com.baomidou.mybatisplus.core.metadata.TableInfoHelper;
-import com.ruoyi.common.utils.StringUtils;
-import org.apache.ibatis.executor.keygen.Jdbc3KeyGenerator;
-import org.apache.ibatis.executor.keygen.KeyGenerator;
-import org.apache.ibatis.executor.keygen.NoKeyGenerator;
-import org.apache.ibatis.mapping.MappedStatement;
-import org.apache.ibatis.mapping.SqlSource;
-
-import java.util.List;
-
-/**
- * 鍗晄ql鎵归噺鎻掑叆( 鍏ㄩ噺濉厖 )
- *
- * @author Lion Li
- */
-public class InsertAll extends AbstractMethod {
-
-    private final static String[] FILL_PROPERTY = {"createTime", "createBy", "updateTime", "updateBy"};
-
-    @Override
-    public MappedStatement injectMappedStatement(Class<?> mapperClass, Class<?> modelClass, TableInfo tableInfo) {
-        final String sql = "<script>insert into %s %s values %s</script>";
-        final String fieldSql = prepareFieldSql(tableInfo);
-        final String valueSql = prepareValuesSqlForMysqlBatch(tableInfo);
-        KeyGenerator keyGenerator = new NoKeyGenerator();
-        String sqlMethod = "insertAll";
-        String keyProperty = null;
-        String keyColumn = null;
-        // 琛ㄥ寘鍚富閿鐞嗛�昏緫,濡傛灉涓嶅寘鍚富閿綋鏅�氬瓧娈靛鐞�
-        if (StringUtils.isNotBlank(tableInfo.getKeyProperty())) {
-            if (tableInfo.getIdType() == IdType.AUTO) {
-                /** 鑷涓婚敭 */
-                keyGenerator = new Jdbc3KeyGenerator();
-                keyProperty = tableInfo.getKeyProperty();
-                keyColumn = tableInfo.getKeyColumn();
-            } else {
-                if (null != tableInfo.getKeySequence()) {
-                    keyGenerator = TableInfoHelper.genKeyGenerator(sqlMethod, tableInfo, builderAssistant);
-                    keyProperty = tableInfo.getKeyProperty();
-                    keyColumn = tableInfo.getKeyColumn();
-                }
-            }
-        }
-        final String sqlResult = String.format(sql, tableInfo.getTableName(), fieldSql, valueSql);
-        SqlSource sqlSource = languageDriver.createSqlSource(configuration, sqlResult, modelClass);
-        return this.addInsertMappedStatement(mapperClass, modelClass, sqlMethod, sqlSource, keyGenerator, keyProperty, keyColumn);
-    }
-
-    private String prepareFieldSql(TableInfo tableInfo) {
-        StringBuilder fieldSql = new StringBuilder();
-        if (StringUtils.isNotBlank(tableInfo.getKeyColumn())) {
-            fieldSql.append(tableInfo.getKeyColumn()).append(",");
-        }
-        tableInfo.getFieldList().forEach(x -> fieldSql.append(x.getColumn()).append(","));
-        fieldSql.delete(fieldSql.length() - 1, fieldSql.length());
-        fieldSql.insert(0, "(");
-        fieldSql.append(")");
-        return fieldSql.toString();
-    }
-
-    private String prepareValuesSqlForMysqlBatch(TableInfo tableInfo) {
-        final StringBuilder valueSql = new StringBuilder();
-        valueSql.append("<foreach collection=\"list\" item=\"item\" index=\"index\" open=\"(\" separator=\"),(\" close=\")\">");
-        if (StringUtils.isNotBlank(tableInfo.getKeyColumn())) {
-            valueSql.append("\n#{item.").append(tableInfo.getKeyProperty()).append("},\n");
-        }
-        List<TableFieldInfo> fieldList = tableInfo.getFieldList();
-        int last = fieldList.size() - 1;
-        for (int i = 0; i < fieldList.size(); i++) {
-            String property = fieldList.get(i).getProperty();
-            if (!StringUtils.equalsAny(property, FILL_PROPERTY)) {
-                valueSql.append("<if test=\"item.").append(property).append(" != null\">");
-                valueSql.append("#{item.").append(property).append("}");
-                if (i != last) {
-                    valueSql.append(",");
-                }
-                valueSql.append("</if>");
-                valueSql.append("<if test=\"item.").append(property).append(" == null\">");
-                valueSql.append("DEFAULT");
-                if (i != last) {
-                    valueSql.append(",");
-                }
-                valueSql.append("</if>");
-            } else {
-                valueSql.append("#{item.").append(property).append("}");
-                if (i != last) {
-                    valueSql.append(",");
-                }
-            }
-        }
-        valueSql.append("</foreach>");
-        return valueSql.toString();
-    }
-}
-
diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestBatchController.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestBatchController.java
index 54cd448..53a872d 100644
--- a/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestBatchController.java
+++ b/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestBatchController.java
@@ -4,7 +4,7 @@
 import com.ruoyi.common.core.controller.BaseController;
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.demo.domain.TestDemo;
-import com.ruoyi.demo.service.ITestDemoService;
+import com.ruoyi.demo.mapper.TestDemoMapper;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
@@ -29,7 +29,10 @@
 @RequestMapping("/demo/batch")
 public class TestBatchController extends BaseController {
 
-    private final ITestDemoService iTestDemoService;
+    /**
+     * 涓轰簡渚夸簬娴嬭瘯 鐩存帴寮曞叆mapper
+     */
+    private final TestDemoMapper testDemoMapper;
 
     /**
      * 鏂板鎵归噺鏂规硶 鍙畬缇庢浛浠� saveBatch 绉掔骇鎻掑叆涓婁竾鏁版嵁 (瀵筸ysql璐熻嵎杈冨ぇ)
@@ -44,7 +47,7 @@
         for (int i = 0; i < 1000; i++) {
             list.add(new TestDemo().setOrderNum(-1L).setTestKey("鎵归噺鏂板").setValue("娴嬭瘯鏂板"));
         }
-        return toAjax(iTestDemoService.saveAll(list) ? 1 : 0);
+        return toAjax(testDemoMapper.insertBatch(list) ? 1 : 0);
     }
 
     /**
@@ -60,7 +63,7 @@
         for (int i = 0; i < 1000; i++) {
             list.add(new TestDemo().setOrderNum(-1L).setTestKey("鎵归噺鏂板").setValue("娴嬭瘯鏂板"));
         }
-        iTestDemoService.saveAll(list);
+        testDemoMapper.insertBatch(list);
         for (int i = 0; i < list.size(); i++) {
             TestDemo testDemo = list.get(i);
             testDemo.setTestKey("鎵归噺鏂板鎴栦慨鏀�").setValue("鎵归噺鏂板鎴栦慨鏀�");
@@ -68,7 +71,7 @@
                 testDemo.setId(null);
             }
         }
-        return toAjax(iTestDemoService.saveOrUpdateAll(list) ? 1 : 0);
+        return toAjax(testDemoMapper.insertOrUpdateBatch(list) ? 1 : 0);
     }
 
     /**
@@ -78,8 +81,8 @@
     @DeleteMapping()
 //	@DS("slave")
     public AjaxResult<Void> remove() {
-        return toAjax(iTestDemoService.remove(new LambdaQueryWrapper<TestDemo>()
-            .eq(TestDemo::getOrderNum, -1L)) ? 1 : 0);
+        return toAjax(testDemoMapper.delete(new LambdaQueryWrapper<TestDemo>()
+            .eq(TestDemo::getOrderNum, -1L)));
     }
 
 }
diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestDemoController.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestDemoController.java
index 2d0f43a..f28c61e 100644
--- a/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestDemoController.java
+++ b/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestDemoController.java
@@ -80,7 +80,7 @@
         ExcelResult<TestDemoImportVo> excelResult = ExcelUtil.importExcel(file.getInputStream(), TestDemoImportVo.class, true);
         List<TestDemoImportVo> volist = excelResult.getList();
         List<TestDemo> list = BeanUtil.copyToList(volist, TestDemo.class);
-        iTestDemoService.saveAll(list);
+        iTestDemoService.saveBatch(list);
         return AjaxResult.success(excelResult.getAnalysis());
     }
 
diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/mapper/TestDemoMapper.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/mapper/TestDemoMapper.java
index 243b6dc..b1b80d2 100644
--- a/ruoyi-demo/src/main/java/com/ruoyi/demo/mapper/TestDemoMapper.java
+++ b/ruoyi-demo/src/main/java/com/ruoyi/demo/mapper/TestDemoMapper.java
@@ -6,7 +6,7 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.common.annotation.DataColumn;
 import com.ruoyi.common.annotation.DataPermission;
-import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus;
+import com.ruoyi.common.core.mapper.BaseMapperPlus;
 import com.ruoyi.demo.domain.TestDemo;
 import com.ruoyi.demo.domain.vo.TestDemoVo;
 import org.apache.ibatis.annotations.Param;
@@ -20,7 +20,7 @@
  * @author Lion Li
  * @date 2021-07-26
  */
-public interface TestDemoMapper extends BaseMapperPlus<TestDemo> {
+public interface TestDemoMapper extends BaseMapperPlus<TestDemoMapper, TestDemo, TestDemoVo> {
 
     @DataPermission({
         @DataColumn(key = "deptName", value = "dept_id"),
diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/mapper/TestTreeMapper.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/mapper/TestTreeMapper.java
index 0a7936c..e37a9a7 100644
--- a/ruoyi-demo/src/main/java/com/ruoyi/demo/mapper/TestTreeMapper.java
+++ b/ruoyi-demo/src/main/java/com/ruoyi/demo/mapper/TestTreeMapper.java
@@ -2,8 +2,9 @@
 
 import com.ruoyi.common.annotation.DataColumn;
 import com.ruoyi.common.annotation.DataPermission;
-import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus;
+import com.ruoyi.common.core.mapper.BaseMapperPlus;
 import com.ruoyi.demo.domain.TestTree;
+import com.ruoyi.demo.domain.vo.TestTreeVo;
 
 /**
  * 娴嬭瘯鏍戣〃Mapper鎺ュ彛
@@ -15,6 +16,6 @@
     @DataColumn(key = "deptName", value = "dept_id"),
     @DataColumn(key = "userName", value = "user_id")
 })
-public interface TestTreeMapper extends BaseMapperPlus<TestTree> {
+public interface TestTreeMapper extends BaseMapperPlus<TestTreeMapper, TestTree, TestTreeVo> {
 
 }
diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/service/ITestDemoService.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/service/ITestDemoService.java
index 4ea7298..f6b82fd 100644
--- a/ruoyi-demo/src/main/java/com/ruoyi/demo/service/ITestDemoService.java
+++ b/ruoyi-demo/src/main/java/com/ruoyi/demo/service/ITestDemoService.java
@@ -1,7 +1,6 @@
 package com.ruoyi.demo.service;
 
 import com.ruoyi.common.core.domain.PageQuery;
-import com.ruoyi.common.core.mybatisplus.core.IServicePlus;
 import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.demo.domain.TestDemo;
 import com.ruoyi.demo.domain.bo.TestDemoBo;
@@ -16,7 +15,7 @@
  * @author Lion Li
  * @date 2021-07-26
  */
-public interface ITestDemoService extends IServicePlus<TestDemo, TestDemoVo> {
+public interface ITestDemoService {
 
     /**
      * 鏌ヨ鍗曚釜
@@ -64,4 +63,9 @@
      * @return
      */
     Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+
+    /**
+     * 鎵归噺淇濆瓨
+     */
+    Boolean saveBatch(List<TestDemo> list);
 }
diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/service/ITestTreeService.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/service/ITestTreeService.java
index 0fa5c99..366e515 100644
--- a/ruoyi-demo/src/main/java/com/ruoyi/demo/service/ITestTreeService.java
+++ b/ruoyi-demo/src/main/java/com/ruoyi/demo/service/ITestTreeService.java
@@ -1,7 +1,5 @@
 package com.ruoyi.demo.service;
 
-import com.ruoyi.common.core.mybatisplus.core.IServicePlus;
-import com.ruoyi.demo.domain.TestTree;
 import com.ruoyi.demo.domain.bo.TestTreeBo;
 import com.ruoyi.demo.domain.vo.TestTreeVo;
 
@@ -14,7 +12,7 @@
  * @author Lion Li
  * @date 2021-07-26
  */
-public interface ITestTreeService extends IServicePlus<TestTree, TestTreeVo> {
+public interface ITestTreeService {
     /**
      * 鏌ヨ鍗曚釜
      *
diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/TestDemoServiceImpl.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/TestDemoServiceImpl.java
index 604525e..7ed7cd5 100644
--- a/ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/TestDemoServiceImpl.java
+++ b/ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/TestDemoServiceImpl.java
@@ -5,7 +5,6 @@
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.common.core.domain.PageQuery;
-import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
 import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.demo.domain.TestDemo;
@@ -13,6 +12,7 @@
 import com.ruoyi.demo.domain.vo.TestDemoVo;
 import com.ruoyi.demo.mapper.TestDemoMapper;
 import com.ruoyi.demo.service.ITestDemoService;
+import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 
 import java.util.Collection;
@@ -25,18 +25,21 @@
  * @author Lion Li
  * @date 2021-07-26
  */
+@RequiredArgsConstructor
 @Service
-public class TestDemoServiceImpl extends ServicePlusImpl<TestDemoMapper, TestDemo, TestDemoVo> implements ITestDemoService {
+public class TestDemoServiceImpl implements ITestDemoService {
+
+    private final TestDemoMapper baseMapper;
 
     @Override
     public TestDemoVo queryById(Long id) {
-        return getVoById(id);
+        return baseMapper.selectVoById(id);
     }
 
     @Override
     public TableDataInfo<TestDemoVo> queryPageList(TestDemoBo bo, PageQuery pageQuery) {
         LambdaQueryWrapper<TestDemo> lqw = buildQueryWrapper(bo);
-        Page<TestDemoVo> result = pageVo(pageQuery.build(), lqw);
+        Page<TestDemoVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
         return TableDataInfo.build(result);
     }
 
@@ -52,7 +55,7 @@
 
     @Override
     public List<TestDemoVo> queryList(TestDemoBo bo) {
-        return listVo(buildQueryWrapper(bo));
+        return baseMapper.selectVoList(buildQueryWrapper(bo));
     }
 
     private LambdaQueryWrapper<TestDemo> buildQueryWrapper(TestDemoBo bo) {
@@ -69,7 +72,7 @@
     public Boolean insertByBo(TestDemoBo bo) {
         TestDemo add = BeanUtil.toBean(bo, TestDemo.class);
         validEntityBeforeSave(add);
-        boolean flag = save(add);
+        boolean flag = baseMapper.insert(add) > 0;
         if (flag) {
             bo.setId(add.getId());
         }
@@ -80,7 +83,7 @@
     public Boolean updateByBo(TestDemoBo bo) {
         TestDemo update = BeanUtil.toBean(bo, TestDemo.class);
         validEntityBeforeSave(update);
-        return updateById(update);
+        return baseMapper.updateById(update) > 0;
     }
 
     /**
@@ -97,6 +100,11 @@
         if (isValid) {
             //TODO 鍋氫竴浜涗笟鍔′笂鐨勬牎楠�,鍒ゆ柇鏄惁闇�瑕佹牎楠�
         }
-        return removeByIds(ids);
+        return baseMapper.deleteBatchIds(ids) > 0;
+    }
+
+    @Override
+    public Boolean saveBatch(List<TestDemo> list) {
+        return baseMapper.insertBatch(list);
     }
 }
diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/TestTreeServiceImpl.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/TestTreeServiceImpl.java
index 99a39f3..3e7fa20 100644
--- a/ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/TestTreeServiceImpl.java
+++ b/ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/TestTreeServiceImpl.java
@@ -3,13 +3,13 @@
 import cn.hutool.core.bean.BeanUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.demo.domain.TestTree;
 import com.ruoyi.demo.domain.bo.TestTreeBo;
 import com.ruoyi.demo.domain.vo.TestTreeVo;
 import com.ruoyi.demo.mapper.TestTreeMapper;
 import com.ruoyi.demo.service.ITestTreeService;
+import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 
 import java.util.Collection;
@@ -23,19 +23,22 @@
  * @date 2021-07-26
  */
 // @DS("slave") // 鍒囨崲浠庡簱鏌ヨ
+@RequiredArgsConstructor
 @Service
-public class TestTreeServiceImpl extends ServicePlusImpl<TestTreeMapper, TestTree, TestTreeVo> implements ITestTreeService {
+public class TestTreeServiceImpl implements ITestTreeService {
+
+    private final TestTreeMapper baseMapper;
 
     @Override
     public TestTreeVo queryById(Long id) {
-        return getVoById(id);
+        return baseMapper.selectVoById(id);
     }
 
     // @DS("slave") // 鍒囨崲浠庡簱鏌ヨ
     @Override
     public List<TestTreeVo> queryList(TestTreeBo bo) {
         LambdaQueryWrapper<TestTree> lqw = buildQueryWrapper(bo);
-        return listVo(lqw);
+        return baseMapper.selectVoList(lqw);
     }
 
     private LambdaQueryWrapper<TestTree> buildQueryWrapper(TestTreeBo bo) {
@@ -51,7 +54,7 @@
     public Boolean insertByBo(TestTreeBo bo) {
         TestTree add = BeanUtil.toBean(bo, TestTree.class);
         validEntityBeforeSave(add);
-        boolean flag = save(add);
+        boolean flag = baseMapper.insert(add) > 0;
         if (flag) {
             bo.setId(add.getId());
         }
@@ -62,7 +65,7 @@
     public Boolean updateByBo(TestTreeBo bo) {
         TestTree update = BeanUtil.toBean(bo, TestTree.class);
         validEntityBeforeSave(update);
-        return updateById(update);
+        return baseMapper.updateById(update) > 0;
     }
 
     /**
@@ -79,6 +82,6 @@
         if (isValid) {
             //TODO 鍋氫竴浜涗笟鍔′笂鐨勬牎楠�,鍒ゆ柇鏄惁闇�瑕佹牎楠�
         }
-        return removeByIds(ids);
+        return baseMapper.deleteBatchIds(ids) > 0;
     }
 }
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/MybatisPlusConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/MybatisPlusConfig.java
index d7f238b..ffd2c15 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/MybatisPlusConfig.java
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/MybatisPlusConfig.java
@@ -4,22 +4,15 @@
 import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
 import com.baomidou.mybatisplus.core.incrementer.DefaultIdentifierGenerator;
 import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator;
-import com.baomidou.mybatisplus.core.injector.AbstractMethod;
-import com.baomidou.mybatisplus.core.injector.DefaultSqlInjector;
-import com.baomidou.mybatisplus.core.injector.ISqlInjector;
-import com.baomidou.mybatisplus.core.metadata.TableInfo;
 import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
 import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
 import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
-import com.ruoyi.common.core.mybatisplus.methods.InsertAll;
 import com.ruoyi.framework.handler.CreateAndUpdateMetaObjectHandler;
 import com.ruoyi.framework.interceptor.PlusDataPermissionInterceptor;
 import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.transaction.annotation.EnableTransactionManagement;
-
-import java.util.List;
 
 /**
  * mybatis-plus閰嶇疆绫�(涓嬫柟娉ㄩ噴鏈夋彃浠朵粙缁�)
@@ -75,21 +68,6 @@
     @Bean
     public MetaObjectHandler metaObjectHandler() {
         return new CreateAndUpdateMetaObjectHandler();
-    }
-
-    /**
-     * sql娉ㄥ叆鍣ㄩ厤缃�
-     */
-    @Bean
-    public ISqlInjector sqlInjector() {
-        return new DefaultSqlInjector() {
-            @Override
-            public List<AbstractMethod> getMethodList(Class<?> mapperClass, TableInfo tableInfo) {
-                List<AbstractMethod> methodList = super.getMethodList(mapperClass, tableInfo);
-                methodList.add(new InsertAll());
-                return methodList;
-            }
-        };
     }
 
     /**
diff --git a/ruoyi-generator/src/main/java/com/ruoyi/generator/mapper/GenTableColumnMapper.java b/ruoyi-generator/src/main/java/com/ruoyi/generator/mapper/GenTableColumnMapper.java
index d81a45a..93578f2 100644
--- a/ruoyi-generator/src/main/java/com/ruoyi/generator/mapper/GenTableColumnMapper.java
+++ b/ruoyi-generator/src/main/java/com/ruoyi/generator/mapper/GenTableColumnMapper.java
@@ -1,7 +1,7 @@
 package com.ruoyi.generator.mapper;
 
 import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
-import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus;
+import com.ruoyi.common.core.mapper.BaseMapperPlus;
 import com.ruoyi.generator.domain.GenTableColumn;
 
 import java.util.List;
@@ -12,7 +12,7 @@
  * @author Lion Li
  */
 @InterceptorIgnore(dataPermission = "true")
-public interface GenTableColumnMapper extends BaseMapperPlus<GenTableColumn> {
+public interface GenTableColumnMapper extends BaseMapperPlus<GenTableColumnMapper, GenTableColumn, GenTableColumn> {
     /**
      * 鏍规嵁琛ㄥ悕绉版煡璇㈠垪淇℃伅
      *
diff --git a/ruoyi-generator/src/main/java/com/ruoyi/generator/mapper/GenTableMapper.java b/ruoyi-generator/src/main/java/com/ruoyi/generator/mapper/GenTableMapper.java
index 8ea66a2..cbb92fd 100644
--- a/ruoyi-generator/src/main/java/com/ruoyi/generator/mapper/GenTableMapper.java
+++ b/ruoyi-generator/src/main/java/com/ruoyi/generator/mapper/GenTableMapper.java
@@ -2,7 +2,7 @@
 
 import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus;
+import com.ruoyi.common.core.mapper.BaseMapperPlus;
 import com.ruoyi.generator.domain.GenTable;
 import org.apache.ibatis.annotations.Param;
 
@@ -14,7 +14,7 @@
  * @author Lion Li
  */
 @InterceptorIgnore(dataPermission = "true")
-public interface GenTableMapper extends BaseMapperPlus<GenTable> {
+public interface GenTableMapper extends BaseMapperPlus<GenTableMapper, GenTable, GenTable> {
 
 
     Page<GenTable> selectPageGenTableList(@Param("page") Page<GenTable> page, @Param("genTable") GenTable genTable);
diff --git a/ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableColumnServiceImpl.java b/ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableColumnServiceImpl.java
index cd4d875..214e7f3 100644
--- a/ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableColumnServiceImpl.java
+++ b/ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableColumnServiceImpl.java
@@ -1,9 +1,9 @@
 package com.ruoyi.generator.service;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
 import com.ruoyi.generator.domain.GenTableColumn;
 import com.ruoyi.generator.mapper.GenTableColumnMapper;
+import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 
 import java.util.Arrays;
@@ -14,8 +14,11 @@
  *
  * @author Lion Li
  */
+@RequiredArgsConstructor
 @Service
-public class GenTableColumnServiceImpl extends ServicePlusImpl<GenTableColumnMapper, GenTableColumn, GenTableColumn> implements IGenTableColumnService {
+public class GenTableColumnServiceImpl implements IGenTableColumnService {
+
+    private final GenTableColumnMapper baseMapper;
 
     /**
      * 鏌ヨ涓氬姟瀛楁鍒楄〃
@@ -25,7 +28,7 @@
      */
     @Override
     public List<GenTableColumn> selectGenTableColumnListByTableId(Long tableId) {
-        return list(new LambdaQueryWrapper<GenTableColumn>()
+        return baseMapper.selectList(new LambdaQueryWrapper<GenTableColumn>()
                 .eq(GenTableColumn::getTableId, tableId)
                 .orderByAsc(GenTableColumn::getSort));
     }
diff --git a/ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableServiceImpl.java b/ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableServiceImpl.java
index d571468..3ac512b 100644
--- a/ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableServiceImpl.java
+++ b/ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableServiceImpl.java
@@ -8,7 +8,6 @@
 import com.ruoyi.common.constant.Constants;
 import com.ruoyi.common.constant.GenConstants;
 import com.ruoyi.common.core.domain.PageQuery;
-import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
 import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.JsonUtils;
@@ -22,12 +21,11 @@
 import com.ruoyi.generator.util.GenUtils;
 import com.ruoyi.generator.util.VelocityInitializer;
 import com.ruoyi.generator.util.VelocityUtils;
+import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.poi.util.IOUtils;
 import org.apache.velocity.Template;
 import org.apache.velocity.VelocityContext;
 import org.apache.velocity.app.Velocity;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -47,11 +45,12 @@
  * @author Lion Li
  */
 @Slf4j
+@RequiredArgsConstructor
 @Service
-public class GenTableServiceImpl extends ServicePlusImpl<GenTableMapper, GenTable, GenTable> implements IGenTableService {
+public class GenTableServiceImpl implements IGenTableService {
 
-    @Autowired
-    private GenTableColumnMapper genTableColumnMapper;
+    private final GenTableMapper baseMapper;
+    private final GenTableColumnMapper genTableColumnMapper;
 
     /**
      * 鏌ヨ涓氬姟淇℃伅
@@ -150,7 +149,7 @@
     @Transactional(rollbackFor = Exception.class)
     public void deleteGenTableByIds(Long[] tableIds) {
         List<Long> ids = Arrays.asList(tableIds);
-        removeByIds(ids);
+        baseMapper.deleteBatchIds(ids);
         genTableColumnMapper.delete(new LambdaQueryWrapper<GenTableColumn>().in(GenTableColumn::getTableId, ids));
     }
 
@@ -177,7 +176,7 @@
                         saveColumns.add(column);
                     }
                     if (CollUtil.isNotEmpty(saveColumns)) {
-                        genTableColumnMapper.insertAll(saveColumns);
+                        genTableColumnMapper.insertBatch(saveColumns);
                     }
                 }
             }
@@ -228,7 +227,7 @@
         ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
         ZipOutputStream zip = new ZipOutputStream(outputStream);
         generatorCode(tableName, zip);
-        IOUtils.closeQuietly(zip);
+        IoUtil.close(zip);
         return outputStream.toByteArray();
     }
 
@@ -294,7 +293,7 @@
             }
         });
         if (CollUtil.isNotEmpty(saveColumns)) {
-            genTableColumnMapper.insertAll(saveColumns);
+            genTableColumnMapper.insertBatch(saveColumns);
         }
 
         List<GenTableColumn> delColumns = tableColumns.stream().filter(column -> !dbTableColumnNames.contains(column.getColumnName())).collect(Collectors.toList());
@@ -317,7 +316,7 @@
         for (String tableName : tableNames) {
             generatorCode(tableName, zip);
         }
-        IOUtils.closeQuietly(zip);
+        IoUtil.close(zip);
         return outputStream.toByteArray();
     }
 
diff --git a/ruoyi-generator/src/main/java/com/ruoyi/generator/service/IGenTableColumnService.java b/ruoyi-generator/src/main/java/com/ruoyi/generator/service/IGenTableColumnService.java
index d1b5bae..f14f36a 100644
--- a/ruoyi-generator/src/main/java/com/ruoyi/generator/service/IGenTableColumnService.java
+++ b/ruoyi-generator/src/main/java/com/ruoyi/generator/service/IGenTableColumnService.java
@@ -1,6 +1,5 @@
 package com.ruoyi.generator.service;
 
-import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.generator.domain.GenTableColumn;
 
 import java.util.List;
@@ -10,7 +9,7 @@
  *
  * @author Lion Li
  */
-public interface IGenTableColumnService extends IService<GenTableColumn> {
+public interface IGenTableColumnService {
     /**
      * 鏌ヨ涓氬姟瀛楁鍒楄〃
      *
diff --git a/ruoyi-generator/src/main/java/com/ruoyi/generator/service/IGenTableService.java b/ruoyi-generator/src/main/java/com/ruoyi/generator/service/IGenTableService.java
index 2f7832e..9c2a5f2 100644
--- a/ruoyi-generator/src/main/java/com/ruoyi/generator/service/IGenTableService.java
+++ b/ruoyi-generator/src/main/java/com/ruoyi/generator/service/IGenTableService.java
@@ -13,7 +13,7 @@
  *
  * @author Lion Li
  */
-public interface IGenTableService extends IService<GenTable> {
+public interface IGenTableService {
 
 
     TableDataInfo<GenTable> selectPageGenTableList(GenTable genTable, PageQuery pageQuery);
diff --git a/ruoyi-generator/src/main/resources/vm/java/mapper.java.vm b/ruoyi-generator/src/main/resources/vm/java/mapper.java.vm
index af2edb6..08a1ce4 100644
--- a/ruoyi-generator/src/main/resources/vm/java/mapper.java.vm
+++ b/ruoyi-generator/src/main/resources/vm/java/mapper.java.vm
@@ -1,7 +1,7 @@
 package ${packageName}.mapper;
 
 import ${packageName}.domain.${ClassName};
-import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus;
+import com.ruoyi.common.core.mapper.BaseMapperPlus;
 
 /**
  * ${functionName}Mapper鎺ュ彛
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysConfigMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysConfigMapper.java
index 9431389..13cce2d 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysConfigMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysConfigMapper.java
@@ -1,6 +1,6 @@
 package com.ruoyi.system.mapper;
 
-import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus;
+import com.ruoyi.common.core.mapper.BaseMapperPlus;
 import com.ruoyi.system.domain.SysConfig;
 
 /**
@@ -8,6 +8,6 @@
  *
  * @author Lion Li
  */
-public interface SysConfigMapper extends BaseMapperPlus<SysConfig> {
+public interface SysConfigMapper extends BaseMapperPlus<SysConfigMapper, SysConfig, SysConfig> {
 
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java
index 317be7e..5c7e68b 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java
@@ -3,7 +3,7 @@
 import com.ruoyi.common.annotation.DataColumn;
 import com.ruoyi.common.annotation.DataPermission;
 import com.ruoyi.common.core.domain.entity.SysDept;
-import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus;
+import com.ruoyi.common.core.mapper.BaseMapperPlus;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -13,7 +13,7 @@
  *
  * @author Lion Li
  */
-public interface SysDeptMapper extends BaseMapperPlus<SysDept> {
+public interface SysDeptMapper extends BaseMapperPlus<SysDeptMapper, SysDept, SysDept> {
 
     /**
      * 鏌ヨ閮ㄩ棬绠$悊鏁版嵁
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictDataMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictDataMapper.java
index e45c198..14424e1 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictDataMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictDataMapper.java
@@ -2,7 +2,7 @@
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.ruoyi.common.core.domain.entity.SysDictData;
-import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus;
+import com.ruoyi.common.core.mapper.BaseMapperPlus;
 
 import java.util.List;
 
@@ -11,7 +11,7 @@
  *
  * @author Lion Li
  */
-public interface SysDictDataMapper extends BaseMapperPlus<SysDictData> {
+public interface SysDictDataMapper extends BaseMapperPlus<SysDictDataMapper, SysDictData, SysDictData> {
 
     default List<SysDictData> selectDictDataByType(String dictType) {
         return selectList(
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictTypeMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictTypeMapper.java
index 7e03a25..7107aed 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictTypeMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictTypeMapper.java
@@ -1,13 +1,13 @@
 package com.ruoyi.system.mapper;
 
 import com.ruoyi.common.core.domain.entity.SysDictType;
-import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus;
+import com.ruoyi.common.core.mapper.BaseMapperPlus;
 
 /**
  * 瀛楀吀琛� 鏁版嵁灞�
  *
  * @author Lion Li
  */
-public interface SysDictTypeMapper extends BaseMapperPlus<SysDictType> {
+public interface SysDictTypeMapper extends BaseMapperPlus<SysDictTypeMapper, SysDictType, SysDictType> {
 
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysLogininforMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysLogininforMapper.java
index fe47417..b74f3ff 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysLogininforMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysLogininforMapper.java
@@ -1,6 +1,6 @@
 package com.ruoyi.system.mapper;
 
-import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus;
+import com.ruoyi.common.core.mapper.BaseMapperPlus;
 import com.ruoyi.system.domain.SysLogininfor;
 
 /**
@@ -8,6 +8,6 @@
  *
  * @author Lion Li
  */
-public interface SysLogininforMapper extends BaseMapperPlus<SysLogininfor> {
+public interface SysLogininforMapper extends BaseMapperPlus<SysLogininforMapper, SysLogininfor, SysLogininfor> {
 
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysMenuMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysMenuMapper.java
index f1a018f..3b37ae9 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysMenuMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysMenuMapper.java
@@ -1,7 +1,7 @@
 package com.ruoyi.system.mapper;
 
 import com.ruoyi.common.core.domain.entity.SysMenu;
-import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus;
+import com.ruoyi.common.core.mapper.BaseMapperPlus;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -11,7 +11,7 @@
  *
  * @author Lion Li
  */
-public interface SysMenuMapper extends BaseMapperPlus<SysMenu> {
+public interface SysMenuMapper extends BaseMapperPlus<SysMenuMapper, SysMenu, SysMenu> {
 
     /**
      * 鏍规嵁鐢ㄦ埛鎵�鏈夋潈闄�
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysNoticeMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysNoticeMapper.java
index de972ff..69fa3ba 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysNoticeMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysNoticeMapper.java
@@ -1,6 +1,6 @@
 package com.ruoyi.system.mapper;
 
-import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus;
+import com.ruoyi.common.core.mapper.BaseMapperPlus;
 import com.ruoyi.system.domain.SysNotice;
 
 /**
@@ -8,6 +8,6 @@
  *
  * @author Lion Li
  */
-public interface SysNoticeMapper extends BaseMapperPlus<SysNotice> {
+public interface SysNoticeMapper extends BaseMapperPlus<SysNoticeMapper, SysNotice, SysNotice> {
 
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysOperLogMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysOperLogMapper.java
index c1c3b54..bbb265d 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysOperLogMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysOperLogMapper.java
@@ -1,6 +1,6 @@
 package com.ruoyi.system.mapper;
 
-import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus;
+import com.ruoyi.common.core.mapper.BaseMapperPlus;
 import com.ruoyi.system.domain.SysOperLog;
 
 /**
@@ -8,6 +8,6 @@
  *
  * @author Lion Li
  */
-public interface SysOperLogMapper extends BaseMapperPlus<SysOperLog> {
+public interface SysOperLogMapper extends BaseMapperPlus<SysOperLogMapper, SysOperLog, SysOperLog> {
 
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysOssConfigMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysOssConfigMapper.java
index db63709..72f29a7 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysOssConfigMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysOssConfigMapper.java
@@ -1,7 +1,8 @@
 package com.ruoyi.system.mapper;
 
-import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus;
+import com.ruoyi.common.core.mapper.BaseMapperPlus;
 import com.ruoyi.system.domain.SysOssConfig;
+import com.ruoyi.system.domain.vo.SysOssConfigVo;
 
 /**
  * 瀵硅薄瀛樺偍閰嶇疆Mapper鎺ュ彛
@@ -10,6 +11,6 @@
  * @author 瀛よ垷鐑熼洦
  * @date 2021-08-13
  */
-public interface SysOssConfigMapper extends BaseMapperPlus<SysOssConfig> {
+public interface SysOssConfigMapper extends BaseMapperPlus<SysOssConfigMapper, SysOssConfig, SysOssConfigVo> {
 
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysOssMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysOssMapper.java
index 8eee53b..edbaed6 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysOssMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysOssMapper.java
@@ -1,12 +1,13 @@
 package com.ruoyi.system.mapper;
 
-import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus;
+import com.ruoyi.common.core.mapper.BaseMapperPlus;
 import com.ruoyi.system.domain.SysOss;
+import com.ruoyi.system.domain.vo.SysOssVo;
 
 /**
  * 鏂囦欢涓婁紶 鏁版嵁灞�
  *
  * @author Lion Li
  */
-public interface SysOssMapper extends BaseMapperPlus<SysOss> {
+public interface SysOssMapper extends BaseMapperPlus<SysOssMapper, SysOss, SysOssVo> {
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysPostMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysPostMapper.java
index 2e305cf..7330494 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysPostMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysPostMapper.java
@@ -1,6 +1,6 @@
 package com.ruoyi.system.mapper;
 
-import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus;
+import com.ruoyi.common.core.mapper.BaseMapperPlus;
 import com.ruoyi.system.domain.SysPost;
 
 import java.util.List;
@@ -10,7 +10,7 @@
  *
  * @author Lion Li
  */
-public interface SysPostMapper extends BaseMapperPlus<SysPost> {
+public interface SysPostMapper extends BaseMapperPlus<SysPostMapper, SysPost, SysPost> {
 
     /**
      * 鏍规嵁鐢ㄦ埛ID鑾峰彇宀椾綅閫夋嫨妗嗗垪琛�
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleDeptMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleDeptMapper.java
index bf91a92..0428d98 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleDeptMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleDeptMapper.java
@@ -1,6 +1,6 @@
 package com.ruoyi.system.mapper;
 
-import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus;
+import com.ruoyi.common.core.mapper.BaseMapperPlus;
 import com.ruoyi.system.domain.SysRoleDept;
 
 /**
@@ -8,6 +8,6 @@
  *
  * @author Lion Li
  */
-public interface SysRoleDeptMapper extends BaseMapperPlus<SysRoleDept> {
+public interface SysRoleDeptMapper extends BaseMapperPlus<SysRoleDeptMapper, SysRoleDept, SysRoleDept> {
 
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMapper.java
index d2721ee..e37116d 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMapper.java
@@ -4,7 +4,7 @@
 import com.ruoyi.common.annotation.DataColumn;
 import com.ruoyi.common.annotation.DataPermission;
 import com.ruoyi.common.core.domain.entity.SysRole;
-import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus;
+import com.ruoyi.common.core.mapper.BaseMapperPlus;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -14,7 +14,7 @@
  *
  * @author Lion Li
  */
-public interface SysRoleMapper extends BaseMapperPlus<SysRole> {
+public interface SysRoleMapper extends BaseMapperPlus<SysRoleMapper, SysRole, SysRole> {
 
     @DataPermission({
         @DataColumn(key = "deptName", value = "d.dept_id")
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMenuMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMenuMapper.java
index f92ebbb..e9987cc 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMenuMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMenuMapper.java
@@ -1,6 +1,6 @@
 package com.ruoyi.system.mapper;
 
-import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus;
+import com.ruoyi.common.core.mapper.BaseMapperPlus;
 import com.ruoyi.system.domain.SysRoleMenu;
 
 /**
@@ -8,6 +8,6 @@
  *
  * @author Lion Li
  */
-public interface SysRoleMenuMapper extends BaseMapperPlus<SysRoleMenu> {
+public interface SysRoleMenuMapper extends BaseMapperPlus<SysRoleMenuMapper, SysRoleMenu, SysRoleMenu> {
 
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java
index 1a07f7f..5b7b7df 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java
@@ -4,7 +4,7 @@
 import com.ruoyi.common.annotation.DataColumn;
 import com.ruoyi.common.annotation.DataPermission;
 import com.ruoyi.common.core.domain.entity.SysUser;
-import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus;
+import com.ruoyi.common.core.mapper.BaseMapperPlus;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -14,7 +14,7 @@
  *
  * @author Lion Li
  */
-public interface SysUserMapper extends BaseMapperPlus<SysUser> {
+public interface SysUserMapper extends BaseMapperPlus<SysUserMapper, SysUser, SysUser> {
 
     @DataPermission({
         @DataColumn(key = "deptName", value = "d.dept_id"),
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserPostMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserPostMapper.java
index e0f1bb0..1af9b24 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserPostMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserPostMapper.java
@@ -1,6 +1,6 @@
 package com.ruoyi.system.mapper;
 
-import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus;
+import com.ruoyi.common.core.mapper.BaseMapperPlus;
 import com.ruoyi.system.domain.SysUserPost;
 
 /**
@@ -8,6 +8,6 @@
  *
  * @author Lion Li
  */
-public interface SysUserPostMapper extends BaseMapperPlus<SysUserPost> {
+public interface SysUserPostMapper extends BaseMapperPlus<SysUserPostMapper, SysUserPost, SysUserPost> {
 
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserRoleMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserRoleMapper.java
index 052599c..f9dd167 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserRoleMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserRoleMapper.java
@@ -1,6 +1,6 @@
 package com.ruoyi.system.mapper;
 
-import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus;
+import com.ruoyi.common.core.mapper.BaseMapperPlus;
 import com.ruoyi.system.domain.SysUserRole;
 
 /**
@@ -8,6 +8,6 @@
  *
  * @author Lion Li
  */
-public interface SysUserRoleMapper extends BaseMapperPlus<SysUserRole> {
+public interface SysUserRoleMapper extends BaseMapperPlus<SysUserRoleMapper, SysUserRole, SysUserRole> {
 
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysConfigService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysConfigService.java
index b723389..9097707 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysConfigService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysConfigService.java
@@ -1,6 +1,5 @@
 package com.ruoyi.system.service;
 
-import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.common.core.domain.PageQuery;
 import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.system.domain.SysConfig;
@@ -12,7 +11,7 @@
  *
  * @author Lion Li
  */
-public interface ISysConfigService extends IService<SysConfig> {
+public interface ISysConfigService {
 
 
     TableDataInfo<SysConfig> selectPageConfigList(SysConfig config, PageQuery pageQuery);
@@ -94,4 +93,7 @@
      * @return 缁撴灉
      */
     String checkConfigKeyUnique(SysConfig config);
+
+    SysConfig getOne(SysConfig config);
+
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDeptService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDeptService.java
index 292d43c..70fda9a 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDeptService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDeptService.java
@@ -1,7 +1,6 @@
 package com.ruoyi.system.service;
 
 import cn.hutool.core.lang.tree.Tree;
-import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.common.core.domain.entity.SysDept;
 
 import java.util.List;
@@ -11,7 +10,7 @@
  *
  * @author Lion Li
  */
-public interface ISysDeptService extends IService<SysDept> {
+public interface ISysDeptService {
     /**
      * 鏌ヨ閮ㄩ棬绠$悊鏁版嵁
      *
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictDataService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictDataService.java
index 22259c3..35b0064 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictDataService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictDataService.java
@@ -1,6 +1,5 @@
 package com.ruoyi.system.service;
 
-import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.common.core.domain.PageQuery;
 import com.ruoyi.common.core.domain.entity.SysDictData;
 import com.ruoyi.common.core.page.TableDataInfo;
@@ -12,7 +11,7 @@
  *
  * @author Lion Li
  */
-public interface ISysDictDataService extends IService<SysDictData> {
+public interface ISysDictDataService {
 
 
     TableDataInfo<SysDictData> selectPageDictDataList(SysDictData dictData, PageQuery pageQuery);
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictTypeService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictTypeService.java
index ba27398..4634579 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictTypeService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictTypeService.java
@@ -13,7 +13,7 @@
  *
  * @author Lion Li
  */
-public interface ISysDictTypeService extends IService<SysDictType> {
+public interface ISysDictTypeService {
 
 
     TableDataInfo<SysDictType> selectPageDictTypeList(SysDictType dictType, PageQuery pageQuery);
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysLogininforService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysLogininforService.java
index 892a5af..88ddecc 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysLogininforService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysLogininforService.java
@@ -1,6 +1,5 @@
 package com.ruoyi.system.service;
 
-import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.common.core.domain.PageQuery;
 import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.system.domain.SysLogininfor;
@@ -12,7 +11,7 @@
  *
  * @author Lion Li
  */
-public interface ISysLogininforService extends IService<SysLogininfor> {
+public interface ISysLogininforService {
 
 
     TableDataInfo<SysLogininfor> selectPageLogininforList(SysLogininfor logininfor, PageQuery pageQuery);
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysMenuService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysMenuService.java
index 9424052..e7b5c9b 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysMenuService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysMenuService.java
@@ -1,7 +1,6 @@
 package com.ruoyi.system.service;
 
 import cn.hutool.core.lang.tree.Tree;
-import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.common.core.domain.entity.SysMenu;
 import com.ruoyi.system.domain.vo.RouterVo;
 
@@ -13,7 +12,7 @@
  *
  * @author Lion Li
  */
-public interface ISysMenuService extends IService<SysMenu> {
+public interface ISysMenuService {
 
     /**
      * 鏍规嵁鐢ㄦ埛鏌ヨ绯荤粺鑿滃崟鍒楄〃
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysNoticeService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysNoticeService.java
index 6cd9468..a6dbcbf 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysNoticeService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysNoticeService.java
@@ -1,6 +1,5 @@
 package com.ruoyi.system.service;
 
-import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.common.core.domain.PageQuery;
 import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.system.domain.SysNotice;
@@ -12,7 +11,7 @@
  *
  * @author Lion Li
  */
-public interface ISysNoticeService extends IService<SysNotice> {
+public interface ISysNoticeService {
 
 
     TableDataInfo<SysNotice> selectPageNoticeList(SysNotice notice, PageQuery pageQuery);
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysOperLogService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysOperLogService.java
index b23f129..b1fa6c7 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysOperLogService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysOperLogService.java
@@ -12,7 +12,7 @@
  *
  * @author Lion Li
  */
-public interface ISysOperLogService extends IService<SysOperLog> {
+public interface ISysOperLogService {
 
     TableDataInfo<SysOperLog> selectPageOperLogList(SysOperLog operLog, PageQuery pageQuery);
 
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysOssConfigService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysOssConfigService.java
index f29b65d..e62e2d3 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysOssConfigService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysOssConfigService.java
@@ -1,9 +1,7 @@
 package com.ruoyi.system.service;
 
 import com.ruoyi.common.core.domain.PageQuery;
-import com.ruoyi.common.core.mybatisplus.core.IServicePlus;
 import com.ruoyi.common.core.page.TableDataInfo;
-import com.ruoyi.system.domain.SysOssConfig;
 import com.ruoyi.system.domain.bo.SysOssConfigBo;
 import com.ruoyi.system.domain.vo.SysOssConfigVo;
 
@@ -16,7 +14,7 @@
  * @author 瀛よ垷鐑熼洦
  * @date 2021-08-13
  */
-public interface ISysOssConfigService extends IServicePlus<SysOssConfig, SysOssConfigVo> {
+public interface ISysOssConfigService {
 
     /**
      * 鍒濆鍖朞SS閰嶇疆
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysOssService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysOssService.java
index 866f2c4..b444e6d 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysOssService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysOssService.java
@@ -1,7 +1,6 @@
 package com.ruoyi.system.service;
 
 import com.ruoyi.common.core.domain.PageQuery;
-import com.ruoyi.common.core.mybatisplus.core.IServicePlus;
 import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.system.domain.SysOss;
 import com.ruoyi.system.domain.bo.SysOssBo;
@@ -15,11 +14,14 @@
  *
  * @author Lion Li
  */
-public interface ISysOssService extends IServicePlus<SysOss, SysOssVo> {
+public interface ISysOssService {
 
     TableDataInfo<SysOssVo> queryPageList(SysOssBo sysOss, PageQuery pageQuery);
+
+    SysOss getById(Long ossId);
 
     SysOss upload(MultipartFile file);
 
     Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysPostService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysPostService.java
index 97a0e06..e4bcaca 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysPostService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysPostService.java
@@ -12,7 +12,7 @@
  *
  * @author Lion Li
  */
-public interface ISysPostService extends IService<SysPost> {
+public interface ISysPostService {
 
 
     TableDataInfo<SysPost> selectPagePostList(SysPost post, PageQuery pageQuery);
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysRoleService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysRoleService.java
index 37f0071..5b726b2 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysRoleService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysRoleService.java
@@ -1,6 +1,5 @@
 package com.ruoyi.system.service;
 
-import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.common.core.domain.PageQuery;
 import com.ruoyi.common.core.domain.entity.SysRole;
 import com.ruoyi.common.core.page.TableDataInfo;
@@ -14,7 +13,7 @@
  *
  * @author Lion Li
  */
-public interface ISysRoleService extends IService<SysRole> {
+public interface ISysRoleService {
 
 
     TableDataInfo<SysRole> selectPageRoleList(SysRole role, PageQuery pageQuery);
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java
index 508f3c4..118c36f 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java
@@ -1,6 +1,5 @@
 package com.ruoyi.system.service;
 
-import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.common.core.domain.PageQuery;
 import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.core.page.TableDataInfo;
@@ -13,7 +12,7 @@
  *
  * @author Lion Li
  */
-public interface ISysUserService extends IService<SysUser>, UserService {
+public interface ISysUserService extends UserService {
 
 
     TableDataInfo<SysUser> selectPageUserList(SysUser user, PageQuery pageQuery);
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/SysLoginService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/SysLoginService.java
index 817e3f5..cd9a957 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/SysLoginService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/SysLoginService.java
@@ -12,16 +12,15 @@
 import com.ruoyi.common.exception.user.UserException;
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.MessageUtils;
-import com.ruoyi.common.utils.redis.RedisUtils;
 import com.ruoyi.common.utils.ServletUtils;
-import org.springframework.beans.factory.annotation.Autowired;
+import com.ruoyi.common.utils.redis.RedisUtils;
+import lombok.RequiredArgsConstructor;
 import org.springframework.security.authentication.AuthenticationManager;
 import org.springframework.security.authentication.BadCredentialsException;
 import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
 import org.springframework.security.core.Authentication;
 import org.springframework.stereotype.Service;
 
-import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import java.util.concurrent.TimeUnit;
 
@@ -30,23 +29,15 @@
  *
  * @author Lion Li
  */
+@RequiredArgsConstructor
 @Service
 public class SysLoginService {
 
-    @Autowired
-    private TokenService tokenService;
-
-    @Resource
-    private AuthenticationManager authenticationManager;
-
-    @Autowired
-    private ISysUserService userService;
-
-    @Autowired
-    private ISysConfigService configService;
-
-    @Autowired
-    private LogininforService asyncService;
+    private final TokenService tokenService;
+    private final AuthenticationManager authenticationManager;
+    private final ISysUserService userService;
+    private final ISysConfigService configService;
+    private final LogininforService asyncService;
 
     /**
      * 鐧诲綍楠岃瘉
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/SysPermissionService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/SysPermissionService.java
index 095b3b5..a255fe8 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/SysPermissionService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/SysPermissionService.java
@@ -1,7 +1,7 @@
 package com.ruoyi.system.service;
 
 import com.ruoyi.common.core.domain.entity.SysUser;
-import org.springframework.beans.factory.annotation.Autowired;
+import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 
 import java.util.HashSet;
@@ -12,14 +12,12 @@
  *
  * @author ruoyi
  */
+@RequiredArgsConstructor
 @Service
 public class SysPermissionService {
 
-    @Autowired
-    private ISysRoleService roleService;
-
-    @Autowired
-    private ISysMenuService menuService;
+    private final ISysRoleService roleService;
+    private final ISysMenuService menuService;
 
     /**
      * 鑾峰彇瑙掕壊鏁版嵁鏉冮檺
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/SysRegisterService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/SysRegisterService.java
index 69152d3..370d5c9 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/SysRegisterService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/SysRegisterService.java
@@ -7,9 +7,12 @@
 import com.ruoyi.common.core.service.LogininforService;
 import com.ruoyi.common.exception.user.CaptchaException;
 import com.ruoyi.common.exception.user.CaptchaExpireException;
-import com.ruoyi.common.utils.*;
+import com.ruoyi.common.utils.MessageUtils;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.ServletUtils;
+import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.redis.RedisUtils;
-import org.springframework.beans.factory.annotation.Autowired;
+import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 
 /**
@@ -17,17 +20,13 @@
  *
  * @author Lion Li
  */
+@RequiredArgsConstructor
 @Service
 public class SysRegisterService {
 
-    @Autowired
-    private ISysUserService userService;
-
-    @Autowired
-    private ISysConfigService configService;
-
-    @Autowired
-    private LogininforService asyncService;
+    private final ISysUserService userService;
+    private final ISysConfigService configService;
+    private final LogininforService asyncService;
 
     /**
      * 娉ㄥ唽
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java
index 3863fa6..62d5738 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java
@@ -7,15 +7,15 @@
 import com.ruoyi.common.constant.Constants;
 import com.ruoyi.common.constant.UserConstants;
 import com.ruoyi.common.core.domain.PageQuery;
-import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
 import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.core.service.ConfigService;
 import com.ruoyi.common.exception.ServiceException;
-import com.ruoyi.common.utils.redis.RedisUtils;
 import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.redis.RedisUtils;
 import com.ruoyi.system.domain.SysConfig;
 import com.ruoyi.system.mapper.SysConfigMapper;
 import com.ruoyi.system.service.ISysConfigService;
+import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 
 import java.util.Arrays;
@@ -28,8 +28,11 @@
  *
  * @author Lion Li
  */
+@RequiredArgsConstructor
 @Service
-public class SysConfigServiceImpl extends ServicePlusImpl<SysConfigMapper, SysConfig, SysConfig> implements ISysConfigService, ConfigService {
+public class SysConfigServiceImpl implements ISysConfigService, ConfigService {
+
+    private final SysConfigMapper baseMapper;
 
     @Override
     public TableDataInfo<SysConfig> selectPageConfigList(SysConfig config, PageQuery pageQuery) {
@@ -40,7 +43,7 @@
             .like(StringUtils.isNotBlank(config.getConfigKey()), SysConfig::getConfigKey, config.getConfigKey())
             .between(params.get("beginTime") != null && params.get("endTime") != null,
                 SysConfig::getCreateTime, params.get("beginTime"), params.get("endTime"));
-        Page<SysConfig> page = page(pageQuery.build(), lqw);
+        Page<SysConfig> page = baseMapper.selectPage(pageQuery.build(), lqw);
         return TableDataInfo.build(page);
     }
 
@@ -202,6 +205,11 @@
         return UserConstants.UNIQUE;
     }
 
+    @Override
+    public SysConfig getOne(SysConfig config) {
+        return baseMapper.selectOne(new LambdaQueryWrapper<>(config));
+    }
+
     /**
      * 鏍规嵁鍙傛暟 key 鑾峰彇鍙傛暟鍊�
      *
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDataScopeServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDataScopeServiceImpl.java
index 8439958..68db9d3 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDataScopeServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDataScopeServiceImpl.java
@@ -8,19 +8,18 @@
 import com.ruoyi.system.mapper.SysDeptMapper;
 import com.ruoyi.system.mapper.SysRoleDeptMapper;
 import com.ruoyi.system.service.SysDataScopeService;
-import org.springframework.beans.factory.annotation.Autowired;
+import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
 import java.util.stream.Collectors;
 
+@RequiredArgsConstructor
 @Service("sdss")
 public class SysDataScopeServiceImpl implements SysDataScopeService {
 
-    @Autowired
-    private SysRoleDeptMapper roleDeptMapper;
-    @Autowired
-    private SysDeptMapper deptMapper;
+    private final SysRoleDeptMapper roleDeptMapper;
+    private final SysDeptMapper deptMapper;
 
     @Override
     public String getRoleCustom(Long roleId) {
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java
index 0f8897f..42b1892 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java
@@ -9,7 +9,6 @@
 import com.ruoyi.common.core.domain.entity.SysDept;
 import com.ruoyi.common.core.domain.entity.SysRole;
 import com.ruoyi.common.core.domain.entity.SysUser;
-import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
 import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.StringUtils;
@@ -19,7 +18,7 @@
 import com.ruoyi.system.mapper.SysRoleMapper;
 import com.ruoyi.system.mapper.SysUserMapper;
 import com.ruoyi.system.service.ISysDeptService;
-import org.springframework.beans.factory.annotation.Autowired;
+import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 
 import java.util.Arrays;
@@ -30,14 +29,13 @@
  *
  * @author Lion Li
  */
+@RequiredArgsConstructor
 @Service
-public class SysDeptServiceImpl extends ServicePlusImpl<SysDeptMapper, SysDept, SysDept> implements ISysDeptService {
+public class SysDeptServiceImpl implements ISysDeptService {
 
-    @Autowired
-    private SysRoleMapper roleMapper;
-
-    @Autowired
-    private SysUserMapper userMapper;
+    private final SysDeptMapper baseMapper;
+    private final SysRoleMapper roleMapper;
+    private final SysUserMapper userMapper;
 
     /**
      * 鏌ヨ閮ㄩ棬绠$悊鏁版嵁
@@ -47,8 +45,6 @@
      */
     @Override
     public List<SysDept> selectDeptList(SysDept dept) {
-//        return baseMapper.selectList();
-//        return baseMapper.selectList(new LambdaQueryWrapper<>());
         return baseMapper.selectDeptList(dept);
     }
 
@@ -91,7 +87,7 @@
      */
     @Override
     public SysDept selectDeptById(Long deptId) {
-        return getById(deptId);
+        return baseMapper.selectById(deptId);
     }
 
     /**
@@ -102,7 +98,7 @@
      */
     @Override
     public long selectNormalChildrenDeptById(Long deptId) {
-        return count(new LambdaQueryWrapper<SysDept>()
+        return baseMapper.selectCount(new LambdaQueryWrapper<SysDept>()
             .eq(SysDept::getStatus, 0)
             .apply("find_in_set({0}, ancestors)", deptId));
     }
@@ -115,9 +111,8 @@
      */
     @Override
     public boolean hasChildByDeptId(Long deptId) {
-        long result = count(new LambdaQueryWrapper<SysDept>()
+        return baseMapper.exists(new LambdaQueryWrapper<SysDept>()
             .eq(SysDept::getParentId, deptId));
-        return result > 0;
     }
 
     /**
@@ -128,9 +123,8 @@
      */
     @Override
     public boolean checkDeptExistUser(Long deptId) {
-        long result = userMapper.selectCount(new LambdaQueryWrapper<SysUser>()
+        return userMapper.exists(new LambdaQueryWrapper<SysUser>()
             .eq(SysUser::getDeptId, deptId));
-        return result > 0;
     }
 
     /**
@@ -142,11 +136,11 @@
     @Override
     public String checkDeptNameUnique(SysDept dept) {
         Long deptId = StringUtils.isNull(dept.getDeptId()) ? -1L : dept.getDeptId();
-        long count = count(new LambdaQueryWrapper<SysDept>()
+        boolean count = baseMapper.exists(new LambdaQueryWrapper<SysDept>()
             .eq(SysDept::getDeptName, dept.getDeptName())
             .eq(SysDept::getParentId, dept.getParentId())
             .ne(SysDept::getDeptId, deptId));
-        if (count > 0) {
+        if (count) {
             return UserConstants.NOT_UNIQUE;
         }
         return UserConstants.UNIQUE;
@@ -177,7 +171,7 @@
      */
     @Override
     public int insertDept(SysDept dept) {
-        SysDept info = getById(dept.getParentId());
+        SysDept info = baseMapper.selectById(dept.getParentId());
         // 濡傛灉鐖惰妭鐐逛笉涓烘甯哥姸鎬�,鍒欎笉鍏佽鏂板瀛愯妭鐐�
         if (!UserConstants.DEPT_NORMAL.equals(info.getStatus())) {
             throw new ServiceException("閮ㄩ棬鍋滅敤锛屼笉鍏佽鏂板");
@@ -194,8 +188,8 @@
      */
     @Override
     public int updateDept(SysDept dept) {
-        SysDept newParentDept = getById(dept.getParentId());
-        SysDept oldDept = getById(dept.getDeptId());
+        SysDept newParentDept = baseMapper.selectById(dept.getParentId());
+        SysDept oldDept = baseMapper.selectById(dept.getDeptId());
         if (StringUtils.isNotNull(newParentDept) && StringUtils.isNotNull(oldDept)) {
             String newAncestors = newParentDept.getAncestors() + "," + newParentDept.getDeptId();
             String oldAncestors = oldDept.getAncestors();
@@ -219,7 +213,7 @@
     private void updateParentDeptStatusNormal(SysDept dept) {
         String ancestors = dept.getAncestors();
         Long[] deptIds = Convert.toLongArray(ancestors);
-        update(null, new LambdaUpdateWrapper<SysDept>()
+        baseMapper.update(null, new LambdaUpdateWrapper<SysDept>()
             .set(SysDept::getStatus, "0")
             .in(SysDept::getDeptId, Arrays.asList(deptIds)));
     }
@@ -232,7 +226,7 @@
      * @param oldAncestors 鏃х殑鐖禝D闆嗗悎
      */
     public void updateDeptChildren(Long deptId, String newAncestors, String oldAncestors) {
-        List<SysDept> children = list(new LambdaQueryWrapper<SysDept>()
+        List<SysDept> children = baseMapper.selectList(new LambdaQueryWrapper<SysDept>()
             .apply("find_in_set({0},ancestors)", deptId));
         for (SysDept child : children) {
             child.setAncestors(child.getAncestors().replaceFirst(oldAncestors, newAncestors));
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java
index fb1f16f..205a40f 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java
@@ -5,12 +5,12 @@
 import com.ruoyi.common.constant.Constants;
 import com.ruoyi.common.core.domain.PageQuery;
 import com.ruoyi.common.core.domain.entity.SysDictData;
-import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
 import com.ruoyi.common.core.page.TableDataInfo;
-import com.ruoyi.common.utils.redis.RedisUtils;
 import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.redis.RedisUtils;
 import com.ruoyi.system.mapper.SysDictDataMapper;
 import com.ruoyi.system.service.ISysDictDataService;
+import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
@@ -20,8 +20,11 @@
  *
  * @author Lion Li
  */
+@RequiredArgsConstructor
 @Service
-public class SysDictDataServiceImpl extends ServicePlusImpl<SysDictDataMapper, SysDictData, SysDictData> implements ISysDictDataService {
+public class SysDictDataServiceImpl implements ISysDictDataService {
+
+    private final SysDictDataMapper baseMapper;
 
     @Override
     public TableDataInfo<SysDictData> selectPageDictDataList(SysDictData dictData, PageQuery pageQuery) {
@@ -30,7 +33,7 @@
                 .like(StringUtils.isNotBlank(dictData.getDictLabel()), SysDictData::getDictLabel, dictData.getDictLabel())
                 .eq(StringUtils.isNotBlank(dictData.getStatus()), SysDictData::getStatus, dictData.getStatus())
                 .orderByAsc(SysDictData::getDictSort);
-        Page<SysDictData> page = page(pageQuery.build(), lqw);
+        Page<SysDictData> page = baseMapper.selectPage(pageQuery.build(), lqw);
         return TableDataInfo.build(page);
     }
 
@@ -42,7 +45,7 @@
      */
     @Override
     public List<SysDictData> selectDictDataList(SysDictData dictData) {
-        return list(new LambdaQueryWrapper<SysDictData>()
+        return baseMapper.selectList(new LambdaQueryWrapper<SysDictData>()
                 .eq(StringUtils.isNotBlank(dictData.getDictType()), SysDictData::getDictType, dictData.getDictType())
                 .like(StringUtils.isNotBlank(dictData.getDictLabel()), SysDictData::getDictLabel, dictData.getDictLabel())
                 .eq(StringUtils.isNotBlank(dictData.getStatus()), SysDictData::getStatus, dictData.getStatus())
@@ -58,7 +61,7 @@
      */
     @Override
     public String selectDictLabel(String dictType, String dictValue) {
-        return getOne(new LambdaQueryWrapper<SysDictData>()
+        return baseMapper.selectOne(new LambdaQueryWrapper<SysDictData>()
                 .select(SysDictData::getDictLabel)
                 .eq(SysDictData::getDictType, dictType)
                 .eq(SysDictData::getDictValue, dictValue))
@@ -73,7 +76,7 @@
      */
     @Override
     public SysDictData selectDictDataById(Long dictCode) {
-        return getById(dictCode);
+        return baseMapper.selectById(dictCode);
     }
 
     /**
@@ -86,7 +89,7 @@
     public void deleteDictDataByIds(Long[] dictCodes) {
         for (Long dictCode : dictCodes) {
             SysDictData data = selectDictDataById(dictCode);
-            removeById(dictCode);
+            baseMapper.deleteById(dictCode);
             List<SysDictData> dictDatas = baseMapper.selectDictDataByType(data.getDictType());
             RedisUtils.setCacheObject(getCacheKey(data.getDictType()), dictDatas);
         }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java
index 0edb041..5c941aa 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java
@@ -9,16 +9,15 @@
 import com.ruoyi.common.core.domain.PageQuery;
 import com.ruoyi.common.core.domain.entity.SysDictData;
 import com.ruoyi.common.core.domain.entity.SysDictType;
-import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
 import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.core.service.DictService;
 import com.ruoyi.common.exception.ServiceException;
-import com.ruoyi.common.utils.redis.RedisUtils;
 import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.redis.RedisUtils;
 import com.ruoyi.system.mapper.SysDictDataMapper;
 import com.ruoyi.system.mapper.SysDictTypeMapper;
 import com.ruoyi.system.service.ISysDictTypeService;
-import org.springframework.beans.factory.annotation.Autowired;
+import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -32,11 +31,12 @@
  *
  * @author Lion Li
  */
+@RequiredArgsConstructor
 @Service
-public class SysDictTypeServiceImpl extends ServicePlusImpl<SysDictTypeMapper, SysDictType, SysDictType> implements ISysDictTypeService, DictService {
+public class SysDictTypeServiceImpl implements ISysDictTypeService, DictService {
 
-    @Autowired
-    private SysDictDataMapper dictDataMapper;
+    private final SysDictTypeMapper baseMapper;
+    private final SysDictDataMapper dictDataMapper;
 
     @Override
     public TableDataInfo<SysDictType> selectPageDictTypeList(SysDictType dictType, PageQuery pageQuery) {
@@ -47,7 +47,7 @@
             .like(StringUtils.isNotBlank(dictType.getDictType()), SysDictType::getDictType, dictType.getDictType())
             .between(params.get("beginTime") != null && params.get("endTime") != null,
                 SysDictType::getCreateTime, params.get("beginTime"), params.get("endTime"));
-        Page<SysDictType> page = page(pageQuery.build(), lqw);
+        Page<SysDictType> page = baseMapper.selectPage(pageQuery.build(), lqw);
         return TableDataInfo.build(page);
     }
 
@@ -60,7 +60,7 @@
     @Override
     public List<SysDictType> selectDictTypeList(SysDictType dictType) {
         Map<String, Object> params = dictType.getParams();
-        return list(new LambdaQueryWrapper<SysDictType>()
+        return baseMapper.selectList(new LambdaQueryWrapper<SysDictType>()
             .like(StringUtils.isNotBlank(dictType.getDictName()), SysDictType::getDictName, dictType.getDictName())
             .eq(StringUtils.isNotBlank(dictType.getStatus()), SysDictType::getStatus, dictType.getStatus())
             .like(StringUtils.isNotBlank(dictType.getDictType()), SysDictType::getDictType, dictType.getDictType())
@@ -75,7 +75,7 @@
      */
     @Override
     public List<SysDictType> selectDictTypeAll() {
-        return list();
+        return baseMapper.selectList();
     }
 
     /**
@@ -106,7 +106,7 @@
      */
     @Override
     public SysDictType selectDictTypeById(Long dictId) {
-        return getById(dictId);
+        return baseMapper.selectById(dictId);
     }
 
     /**
@@ -117,7 +117,7 @@
      */
     @Override
     public SysDictType selectDictTypeByType(String dictType) {
-        return getOne(new LambdaQueryWrapper<SysDictType>().eq(SysDictType::getDictType, dictType));
+        return baseMapper.selectById(new LambdaQueryWrapper<SysDictType>().eq(SysDictType::getDictType, dictType));
     }
 
     /**
@@ -144,7 +144,7 @@
      */
     @Override
     public void loadingDictCache() {
-        List<SysDictType> dictTypeList = list();
+        List<SysDictType> dictTypeList = baseMapper.selectList();
         for (SysDictType dictType : dictTypeList) {
             List<SysDictData> dictDatas = dictDataMapper.selectDictDataByType(dictType.getDictType());
             RedisUtils.setCacheObject(getCacheKey(dictType.getDictType()), dictDatas);
@@ -193,7 +193,7 @@
     @Override
     @Transactional(rollbackFor = Exception.class)
     public int updateDictType(SysDictType dict) {
-        SysDictType oldDict = getById(dict.getDictId());
+        SysDictType oldDict = baseMapper.selectById(dict.getDictId());
         dictDataMapper.update(null, new LambdaUpdateWrapper<SysDictData>()
             .set(SysDictData::getDictType, dict.getDictType())
             .eq(SysDictData::getDictType, oldDict.getDictType()));
@@ -214,7 +214,7 @@
     @Override
     public String checkDictTypeUnique(SysDictType dict) {
         Long dictId = StringUtils.isNull(dict.getDictId()) ? -1L : dict.getDictId();
-        long count = count(new LambdaQueryWrapper<SysDictType>()
+        long count = baseMapper.selectCount(new LambdaQueryWrapper<SysDictType>()
             .eq(SysDictType::getDictType, dict.getDictType())
             .ne(SysDictType::getDictId, dictId));
         if (count > 0) {
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysLogininforServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysLogininforServiceImpl.java
index 487e811..d7d8998 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysLogininforServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysLogininforServiceImpl.java
@@ -6,7 +6,6 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.common.constant.Constants;
 import com.ruoyi.common.core.domain.PageQuery;
-import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
 import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.core.service.LogininforService;
 import com.ruoyi.common.utils.ServletUtils;
@@ -15,6 +14,7 @@
 import com.ruoyi.system.domain.SysLogininfor;
 import com.ruoyi.system.mapper.SysLogininforMapper;
 import com.ruoyi.system.service.ISysLogininforService;
+import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
@@ -30,9 +30,12 @@
  *
  * @author Lion Li
  */
+@RequiredArgsConstructor
 @Slf4j
 @Service
-public class SysLogininforServiceImpl extends ServicePlusImpl<SysLogininforMapper, SysLogininfor, SysLogininfor> implements ISysLogininforService, LogininforService {
+public class SysLogininforServiceImpl implements ISysLogininforService, LogininforService {
+
+    private final SysLogininforMapper baseMapper;
 
     /**
      * 璁板綍鐧诲綍淇℃伅
@@ -99,7 +102,7 @@
         if(StringUtils.isBlank(pageQuery.getOrderByColumn())) {
             pageQuery.setOrderByColumn("info_id").setIsAsc("desc");
         }
-        Page<SysLogininfor> page = page(pageQuery.build(), lqw);
+        Page<SysLogininfor> page = baseMapper.selectPage(pageQuery.build(), lqw);
         return TableDataInfo.build(page);
     }
 
@@ -111,7 +114,7 @@
     @Override
     public void insertLogininfor(SysLogininfor logininfor) {
         logininfor.setLoginTime(new Date());
-        save(logininfor);
+        baseMapper.insert(logininfor);
     }
 
     /**
@@ -123,7 +126,7 @@
     @Override
     public List<SysLogininfor> selectLogininforList(SysLogininfor logininfor) {
         Map<String, Object> params = logininfor.getParams();
-        return list(new LambdaQueryWrapper<SysLogininfor>()
+        return baseMapper.selectList(new LambdaQueryWrapper<SysLogininfor>()
             .like(StringUtils.isNotBlank(logininfor.getIpaddr()), SysLogininfor::getIpaddr, logininfor.getIpaddr())
             .eq(StringUtils.isNotBlank(logininfor.getStatus()), SysLogininfor::getStatus, logininfor.getStatus())
             .like(StringUtils.isNotBlank(logininfor.getUserName()), SysLogininfor::getUserName, logininfor.getUserName())
@@ -148,6 +151,6 @@
      */
     @Override
     public void cleanLogininfor() {
-        remove(new LambdaQueryWrapper<>());
+        baseMapper.delete(new LambdaQueryWrapper<>());
     }
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java
index 9672fe0..7c8ade2 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java
@@ -8,7 +8,6 @@
 import com.ruoyi.common.core.domain.entity.SysMenu;
 import com.ruoyi.common.core.domain.entity.SysRole;
 import com.ruoyi.common.core.domain.entity.SysUser;
-import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.TreeBuildUtils;
@@ -19,7 +18,7 @@
 import com.ruoyi.system.mapper.SysRoleMapper;
 import com.ruoyi.system.mapper.SysRoleMenuMapper;
 import com.ruoyi.system.service.ISysMenuService;
-import org.springframework.beans.factory.annotation.Autowired;
+import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 
 import java.util.*;
@@ -29,14 +28,13 @@
  *
  * @author Lion Li
  */
+@RequiredArgsConstructor
 @Service
-public class SysMenuServiceImpl extends ServicePlusImpl<SysMenuMapper, SysMenu, SysMenu> implements ISysMenuService {
+public class SysMenuServiceImpl implements ISysMenuService {
 
-    @Autowired
-    private SysRoleMapper roleMapper;
-
-    @Autowired
-    private SysRoleMenuMapper roleMenuMapper;
+    private final SysMenuMapper baseMapper;
+    private final SysRoleMapper roleMapper;
+    private final SysRoleMenuMapper roleMenuMapper;
 
     /**
      * 鏍规嵁鐢ㄦ埛鏌ヨ绯荤粺鑿滃崟鍒楄〃
@@ -60,7 +58,7 @@
         List<SysMenu> menuList = null;
         // 绠$悊鍛樻樉绀烘墍鏈夎彍鍗曚俊鎭�
         if (SysUser.isAdmin(userId)) {
-            menuList = list(new LambdaQueryWrapper<SysMenu>()
+            menuList = baseMapper.selectList(new LambdaQueryWrapper<SysMenu>()
                 .like(StringUtils.isNotBlank(menu.getMenuName()), SysMenu::getMenuName, menu.getMenuName())
                 .eq(StringUtils.isNotBlank(menu.getVisible()), SysMenu::getVisible, menu.getVisible())
                 .eq(StringUtils.isNotBlank(menu.getStatus()), SysMenu::getStatus, menu.getStatus())
@@ -198,7 +196,7 @@
      */
     @Override
     public SysMenu selectMenuById(Long menuId) {
-        return getById(menuId);
+        return baseMapper.selectById(menuId);
     }
 
     /**
@@ -209,8 +207,7 @@
      */
     @Override
     public boolean hasChildByMenuId(Long menuId) {
-        long result = count(new LambdaQueryWrapper<SysMenu>().eq(SysMenu::getParentId, menuId));
-        return result > 0;
+        return baseMapper.exists(new LambdaQueryWrapper<SysMenu>().eq(SysMenu::getParentId, menuId));
     }
 
     /**
@@ -221,8 +218,7 @@
      */
     @Override
     public boolean checkMenuExistRole(Long menuId) {
-        long result = roleMenuMapper.selectCount(new LambdaQueryWrapper<SysRoleMenu>().eq(SysRoleMenu::getMenuId, menuId));
-        return result > 0;
+        return roleMenuMapper.exists(new LambdaQueryWrapper<SysRoleMenu>().eq(SysRoleMenu::getMenuId, menuId));
     }
 
     /**
@@ -267,11 +263,11 @@
     @Override
     public String checkMenuNameUnique(SysMenu menu) {
         Long menuId = StringUtils.isNull(menu.getMenuId()) ? -1L : menu.getMenuId();
-        long count = count(new LambdaQueryWrapper<SysMenu>()
+        boolean count = baseMapper.exists(new LambdaQueryWrapper<SysMenu>()
             .eq(SysMenu::getMenuName, menu.getMenuName())
             .eq(SysMenu::getParentId, menu.getParentId())
             .ne(SysMenu::getMenuId, menuId));
-        if (count > 0) {
+        if (count) {
             return UserConstants.NOT_UNIQUE;
         }
         return UserConstants.UNIQUE;
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysNoticeServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysNoticeServiceImpl.java
index 16bc852..f07b1b5 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysNoticeServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysNoticeServiceImpl.java
@@ -3,12 +3,12 @@
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.common.core.domain.PageQuery;
-import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
 import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.system.domain.SysNotice;
 import com.ruoyi.system.mapper.SysNoticeMapper;
 import com.ruoyi.system.service.ISysNoticeService;
+import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 
 import java.util.Arrays;
@@ -19,8 +19,11 @@
  *
  * @author Lion Li
  */
+@RequiredArgsConstructor
 @Service
-public class SysNoticeServiceImpl extends ServicePlusImpl<SysNoticeMapper, SysNotice, SysNotice> implements ISysNoticeService {
+public class SysNoticeServiceImpl implements ISysNoticeService {
+
+    private final SysNoticeMapper baseMapper;
 
     @Override
     public TableDataInfo<SysNotice> selectPageNoticeList(SysNotice notice, PageQuery pageQuery) {
@@ -28,7 +31,7 @@
                 .like(StringUtils.isNotBlank(notice.getNoticeTitle()), SysNotice::getNoticeTitle, notice.getNoticeTitle())
                 .eq(StringUtils.isNotBlank(notice.getNoticeType()), SysNotice::getNoticeType, notice.getNoticeType())
                 .like(StringUtils.isNotBlank(notice.getCreateBy()), SysNotice::getCreateBy, notice.getCreateBy());
-        Page<SysNotice> page = page(pageQuery.build(), lqw);
+        Page<SysNotice> page = baseMapper.selectPage(pageQuery.build(), lqw);
         return TableDataInfo.build(page);
     }
 
@@ -40,7 +43,7 @@
      */
     @Override
     public SysNotice selectNoticeById(Long noticeId) {
-        return getById(noticeId);
+        return baseMapper.selectById(noticeId);
     }
 
     /**
@@ -51,7 +54,7 @@
      */
     @Override
     public List<SysNotice> selectNoticeList(SysNotice notice) {
-        return list(new LambdaQueryWrapper<SysNotice>()
+        return baseMapper.selectList(new LambdaQueryWrapper<SysNotice>()
                 .like(StringUtils.isNotBlank(notice.getNoticeTitle()), SysNotice::getNoticeTitle, notice.getNoticeTitle())
                 .eq(StringUtils.isNotBlank(notice.getNoticeType()), SysNotice::getNoticeType, notice.getNoticeType())
                 .like(StringUtils.isNotBlank(notice.getCreateBy()), SysNotice::getCreateBy, notice.getCreateBy()));
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOperLogServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOperLogServiceImpl.java
index 9371d5a..63378d3 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOperLogServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOperLogServiceImpl.java
@@ -6,7 +6,6 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.common.core.domain.PageQuery;
 import com.ruoyi.common.core.domain.dto.OperLogDTO;
-import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
 import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.core.service.OperLogService;
 import com.ruoyi.common.utils.StringUtils;
@@ -14,6 +13,7 @@
 import com.ruoyi.system.domain.SysOperLog;
 import com.ruoyi.system.mapper.SysOperLogMapper;
 import com.ruoyi.system.service.ISysOperLogService;
+import lombok.RequiredArgsConstructor;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 
@@ -27,8 +27,11 @@
  *
  * @author Lion Li
  */
+@RequiredArgsConstructor
 @Service
-public class SysOperLogServiceImpl extends ServicePlusImpl<SysOperLogMapper, SysOperLog, SysOperLog> implements ISysOperLogService, OperLogService {
+public class SysOperLogServiceImpl implements ISysOperLogService, OperLogService {
+
+    private final SysOperLogMapper baseMapper;
 
     /**
      * 鎿嶄綔鏃ュ織璁板綍
@@ -64,7 +67,7 @@
         if(StringUtils.isBlank(pageQuery.getOrderByColumn())) {
             pageQuery.setOrderByColumn("oper_id").setIsAsc("desc");
         }
-        Page<SysOperLog> page = page(pageQuery.build(), lqw);
+        Page<SysOperLog> page = baseMapper.selectPage(pageQuery.build(), lqw);
         return TableDataInfo.build(page);
     }
 
@@ -76,7 +79,7 @@
     @Override
     public void insertOperlog(SysOperLog operLog) {
         operLog.setOperTime(new Date());
-        save(operLog);
+        baseMapper.insert(operLog);
     }
 
     /**
@@ -88,7 +91,7 @@
     @Override
     public List<SysOperLog> selectOperLogList(SysOperLog operLog) {
         Map<String, Object> params = operLog.getParams();
-        return list(new LambdaQueryWrapper<SysOperLog>()
+        return baseMapper.selectList(new LambdaQueryWrapper<SysOperLog>()
             .like(StringUtils.isNotBlank(operLog.getTitle()), SysOperLog::getTitle, operLog.getTitle())
             .eq(operLog.getBusinessType() != null && operLog.getBusinessType() > 0,
                 SysOperLog::getBusinessType, operLog.getBusinessType())
@@ -124,7 +127,7 @@
      */
     @Override
     public SysOperLog selectOperLogById(Long operId) {
-        return getById(operId);
+        return baseMapper.selectById(operId);
     }
 
     /**
@@ -132,6 +135,6 @@
      */
     @Override
     public void cleanOperLog() {
-        remove(new LambdaQueryWrapper<>());
+        baseMapper.delete(new LambdaQueryWrapper<>());
     }
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOssConfigServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOssConfigServiceImpl.java
index 3ab123a..12779cd 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOssConfigServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOssConfigServiceImpl.java
@@ -9,12 +9,11 @@
 import com.google.common.collect.Lists;
 import com.ruoyi.common.constant.UserConstants;
 import com.ruoyi.common.core.domain.PageQuery;
-import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
 import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.JsonUtils;
-import com.ruoyi.common.utils.redis.RedisUtils;
 import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.redis.RedisUtils;
 import com.ruoyi.oss.constant.OssConstant;
 import com.ruoyi.oss.factory.OssFactory;
 import com.ruoyi.system.domain.SysOssConfig;
@@ -24,7 +23,6 @@
 import com.ruoyi.system.service.ISysOssConfigService;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -39,16 +37,18 @@
  * @date 2021-08-13
  */
 @Slf4j
-@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RequiredArgsConstructor
 @Service
-public class SysOssConfigServiceImpl extends ServicePlusImpl<SysOssConfigMapper, SysOssConfig, SysOssConfigVo> implements ISysOssConfigService {
+public class SysOssConfigServiceImpl implements ISysOssConfigService {
+
+    private final SysOssConfigMapper baseMapper;
 
     /**
      * 椤圭洰鍚姩鏃讹紝鍒濆鍖栧弬鏁板埌缂撳瓨锛屽姞杞介厤缃被
      */
     @Override
     public void init() {
-        List<SysOssConfig> list = list();
+        List<SysOssConfig> list = baseMapper.selectList();
         // 鍔犺浇OSS鍒濆鍖栭厤缃�
         for (SysOssConfig config : list) {
             String configKey = config.getConfigKey();
@@ -63,13 +63,13 @@
 
     @Override
     public SysOssConfigVo queryById(Integer ossConfigId) {
-        return getVoById(ossConfigId);
+        return baseMapper.selectVoById(ossConfigId);
     }
 
     @Override
     public TableDataInfo<SysOssConfigVo> queryPageList(SysOssConfigBo bo, PageQuery pageQuery) {
         LambdaQueryWrapper<SysOssConfig> lqw = buildQueryWrapper(bo);
-        Page<SysOssConfigVo> result = pageVo(pageQuery.build(), lqw);
+        Page<SysOssConfigVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
         return TableDataInfo.build(result);
     }
 
@@ -86,7 +86,7 @@
     public Boolean insertByBo(SysOssConfigBo bo) {
         SysOssConfig config = BeanUtil.toBean(bo, SysOssConfig.class);
         validEntityBeforeSave(config);
-        return setConfigCache(save(config), config);
+        return setConfigCache(baseMapper.insert(config) > 0, config);
     }
 
     @Override
@@ -98,7 +98,7 @@
         luw.set(StringUtils.isBlank(config.getRegion()), SysOssConfig::getRegion, "");
         luw.set(StringUtils.isBlank(config.getExt1()), SysOssConfig::getExt1, "");
         luw.eq(SysOssConfig::getOssConfigId, config.getOssConfigId());
-        return setConfigCache(update(config, luw), config);
+        return setConfigCache(baseMapper.update(config, luw) > 0, config);
     }
 
     /**
@@ -120,10 +120,10 @@
         }
         List<SysOssConfig> list = Lists.newArrayList();
         for (Long configId : ids) {
-            SysOssConfig config = getById(configId);
+            SysOssConfig config = baseMapper.selectById(configId);
             list.add(config);
         }
-        boolean flag = removeByIds(ids);
+        boolean flag = baseMapper.deleteBatchIds(ids) > 0;
         if (flag) {
             list.stream().forEach(sysOssConfig -> {
                 RedisUtils.deleteObject(getCacheKey(sysOssConfig.getConfigKey()));
@@ -137,7 +137,7 @@
      */
     private String checkConfigKeyUnique(SysOssConfig sysOssConfig) {
         long ossConfigId = StringUtils.isNull(sysOssConfig.getOssConfigId()) ? -1L : sysOssConfig.getOssConfigId();
-        SysOssConfig info = getOne(new LambdaQueryWrapper<SysOssConfig>()
+        SysOssConfig info = baseMapper.selectOne(new LambdaQueryWrapper<SysOssConfig>()
                 .select(SysOssConfig::getOssConfigId, SysOssConfig::getConfigKey)
                 .eq(SysOssConfig::getConfigKey, sysOssConfig.getConfigKey()));
         if (StringUtils.isNotNull(info) && info.getOssConfigId() != ossConfigId) {
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOssServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOssServiceImpl.java
index e062fbc..801d2a4 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOssServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOssServiceImpl.java
@@ -4,7 +4,6 @@
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.common.core.domain.PageQuery;
-import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
 import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.StringUtils;
@@ -16,6 +15,7 @@
 import com.ruoyi.system.domain.vo.SysOssVo;
 import com.ruoyi.system.mapper.SysOssMapper;
 import com.ruoyi.system.service.ISysOssService;
+import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
 
@@ -29,13 +29,16 @@
  *
  * @author Lion Li
  */
+@RequiredArgsConstructor
 @Service
-public class SysOssServiceImpl extends ServicePlusImpl<SysOssMapper, SysOss, SysOssVo> implements ISysOssService {
+public class SysOssServiceImpl implements ISysOssService {
+
+    private final SysOssMapper baseMapper;
 
     @Override
     public TableDataInfo<SysOssVo> queryPageList(SysOssBo bo, PageQuery pageQuery) {
         LambdaQueryWrapper<SysOss> lqw = buildQueryWrapper(bo);
-        Page<SysOssVo> result = pageVo(pageQuery.build(), lqw);
+        Page<SysOssVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
         return TableDataInfo.build(result);
     }
 
@@ -51,6 +54,11 @@
         lqw.eq(StringUtils.isNotBlank(bo.getCreateBy()), SysOss::getCreateBy, bo.getCreateBy());
         lqw.eq(StringUtils.isNotBlank(bo.getService()), SysOss::getService, bo.getService());
         return lqw;
+    }
+
+    @Override
+    public SysOss getById(Long ossId) {
+        return baseMapper.selectById(ossId);
     }
 
     @Override
@@ -71,7 +79,7 @@
                 .setFileName(uploadResult.getFilename())
                 .setOriginalName(originalfileName)
                 .setService(storage.getServiceType());
-        save(oss);
+        baseMapper.insert(oss);
         return oss;
     }
 
@@ -80,12 +88,12 @@
         if (isValid) {
             // 鍋氫竴浜涗笟鍔′笂鐨勬牎楠�,鍒ゆ柇鏄惁闇�瑕佹牎楠�
         }
-        List<SysOss> list = listByIds(ids);
+        List<SysOss> list = baseMapper.selectBatchIds(ids);
         for (SysOss sysOss : list) {
             IOssStrategy storage = OssFactory.instance(sysOss.getService());
             storage.delete(sysOss.getUrl());
         }
-        return removeByIds(ids);
+        return baseMapper.deleteBatchIds(ids) > 0;
     }
 
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysPostServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysPostServiceImpl.java
index 058d7ed..640eed6 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysPostServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysPostServiceImpl.java
@@ -4,7 +4,6 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.common.constant.UserConstants;
 import com.ruoyi.common.core.domain.PageQuery;
-import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
 import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.StringUtils;
@@ -13,7 +12,7 @@
 import com.ruoyi.system.mapper.SysPostMapper;
 import com.ruoyi.system.mapper.SysUserPostMapper;
 import com.ruoyi.system.service.ISysPostService;
-import org.springframework.beans.factory.annotation.Autowired;
+import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 
 import java.util.Arrays;
@@ -24,11 +23,12 @@
  *
  * @author Lion Li
  */
+@RequiredArgsConstructor
 @Service
-public class SysPostServiceImpl extends ServicePlusImpl<SysPostMapper, SysPost, SysPost> implements ISysPostService {
+public class SysPostServiceImpl implements ISysPostService {
 
-    @Autowired
-    private SysUserPostMapper userPostMapper;
+    private final SysPostMapper baseMapper;
+    private final SysUserPostMapper userPostMapper;
 
     @Override
     public TableDataInfo<SysPost> selectPagePostList(SysPost post, PageQuery pageQuery) {
@@ -36,7 +36,7 @@
                 .like(StringUtils.isNotBlank(post.getPostCode()), SysPost::getPostCode, post.getPostCode())
                 .eq(StringUtils.isNotBlank(post.getStatus()), SysPost::getStatus, post.getStatus())
                 .like(StringUtils.isNotBlank(post.getPostName()), SysPost::getPostName, post.getPostName());
-        Page<SysPost> page = page(pageQuery.build(), lqw);
+        Page<SysPost> page = baseMapper.selectPage(pageQuery.build(), lqw);
         return TableDataInfo.build(page);
     }
 
@@ -48,7 +48,7 @@
      */
     @Override
     public List<SysPost> selectPostList(SysPost post) {
-        return list(new LambdaQueryWrapper<SysPost>()
+        return baseMapper.selectList(new LambdaQueryWrapper<SysPost>()
                 .like(StringUtils.isNotBlank(post.getPostCode()), SysPost::getPostCode, post.getPostCode())
                 .eq(StringUtils.isNotBlank(post.getStatus()), SysPost::getStatus, post.getStatus())
                 .like(StringUtils.isNotBlank(post.getPostName()), SysPost::getPostName, post.getPostName()));
@@ -61,7 +61,7 @@
      */
     @Override
     public List<SysPost> selectPostAll() {
-        return list();
+        return baseMapper.selectList();
     }
 
     /**
@@ -72,7 +72,7 @@
      */
     @Override
     public SysPost selectPostById(Long postId) {
-        return getById(postId);
+        return baseMapper.selectById(postId);
     }
 
     /**
@@ -95,10 +95,10 @@
     @Override
     public String checkPostNameUnique(SysPost post) {
         Long postId = StringUtils.isNull(post.getPostId()) ? -1L : post.getPostId();
-        long count = count(new LambdaQueryWrapper<SysPost>()
+        boolean count = baseMapper.exists(new LambdaQueryWrapper<SysPost>()
                 .eq(SysPost::getPostName, post.getPostName())
                 .ne(SysPost::getPostId, postId));
-        if (count > 0) {
+        if (count) {
             return UserConstants.NOT_UNIQUE;
         }
         return UserConstants.UNIQUE;
@@ -113,10 +113,10 @@
     @Override
     public String checkPostCodeUnique(SysPost post) {
         Long postId = StringUtils.isNull(post.getPostId()) ? -1L : post.getPostId();
-        long count = count(new LambdaQueryWrapper<SysPost>()
+        boolean count = baseMapper.exists(new LambdaQueryWrapper<SysPost>()
                 .eq(SysPost::getPostCode, post.getPostCode())
                 .ne(SysPost::getPostId, postId));
-        if (count > 0) {
+        if (count) {
             return UserConstants.NOT_UNIQUE;
         }
         return UserConstants.UNIQUE;
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java
index 514afb1..f3c4a74 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java
@@ -6,7 +6,6 @@
 import com.ruoyi.common.core.domain.PageQuery;
 import com.ruoyi.common.core.domain.entity.SysRole;
 import com.ruoyi.common.core.domain.entity.SysUser;
-import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
 import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.SecurityUtils;
@@ -20,7 +19,7 @@
 import com.ruoyi.system.mapper.SysRoleMenuMapper;
 import com.ruoyi.system.mapper.SysUserRoleMapper;
 import com.ruoyi.system.service.ISysRoleService;
-import org.springframework.beans.factory.annotation.Autowired;
+import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -31,17 +30,14 @@
  *
  * @author Lion Li
  */
+@RequiredArgsConstructor
 @Service
-public class SysRoleServiceImpl extends ServicePlusImpl<SysRoleMapper, SysRole, SysRole> implements ISysRoleService {
+public class SysRoleServiceImpl implements ISysRoleService {
 
-    @Autowired
-    private SysRoleMenuMapper roleMenuMapper;
-
-    @Autowired
-    private SysUserRoleMapper userRoleMapper;
-
-    @Autowired
-    private SysRoleDeptMapper roleDeptMapper;
+    private final SysRoleMapper baseMapper;
+    private final SysRoleMenuMapper roleMenuMapper;
+    private final SysUserRoleMapper userRoleMapper;
+    private final SysRoleDeptMapper roleDeptMapper;
 
     @Override
     public TableDataInfo<SysRole> selectPageRoleList(SysRole role, PageQuery pageQuery) {
@@ -128,7 +124,7 @@
      */
     @Override
     public SysRole selectRoleById(Long roleId) {
-        return getById(roleId);
+        return baseMapper.selectById(roleId);
     }
 
     /**
@@ -140,10 +136,10 @@
     @Override
     public String checkRoleNameUnique(SysRole role) {
         Long roleId = StringUtils.isNull(role.getRoleId()) ? -1L : role.getRoleId();
-        long count = count(new LambdaQueryWrapper<SysRole>()
+        boolean count = baseMapper.exists(new LambdaQueryWrapper<SysRole>()
                 .eq(SysRole::getRoleName, role.getRoleName())
                 .ne(SysRole::getRoleId, roleId));
-        if (count > 0) {
+        if (count) {
             return UserConstants.NOT_UNIQUE;
         }
         return UserConstants.UNIQUE;
@@ -158,10 +154,10 @@
     @Override
     public String checkRoleKeyUnique(SysRole role) {
         Long roleId = StringUtils.isNull(role.getRoleId()) ? -1L : role.getRoleId();
-        long count = count(new LambdaQueryWrapper<SysRole>()
+        boolean count = baseMapper.exists(new LambdaQueryWrapper<SysRole>()
                 .eq(SysRole::getRoleKey, role.getRoleKey())
                 .ne(SysRole::getRoleId, roleId));
-        if (count > 0) {
+        if (count) {
             return UserConstants.NOT_UNIQUE;
         }
         return UserConstants.UNIQUE;
@@ -281,7 +277,7 @@
             list.add(rm);
         }
         if (list.size() > 0) {
-            rows = roleMenuMapper.insertAll(list);
+            rows = roleMenuMapper.insertBatch(list) ? list.size() : 0;
         }
         return rows;
     }
@@ -302,7 +298,7 @@
             list.add(rd);
         }
         if (list.size() > 0) {
-            rows = roleDeptMapper.insertAll(list);
+            rows = roleDeptMapper.insertBatch(list) ? list.size() : 0;
         }
         return rows;
     }
@@ -393,7 +389,7 @@
             list.add(ur);
         }
         if (list.size() > 0) {
-            rows = userRoleMapper.insertAll(list);
+            rows = userRoleMapper.insertBatch(list) ? list.size() : 0;
         }
         return rows;
     }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserOnlineServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserOnlineServiceImpl.java
index 874f76c..8ec0fe2 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserOnlineServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserOnlineServiceImpl.java
@@ -4,9 +4,9 @@
 import com.ruoyi.common.core.domain.model.LoginUser;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.system.domain.SysUserOnline;
+import com.ruoyi.system.mapper.SysUserMapper;
 import com.ruoyi.system.service.ISysUserOnlineService;
-import com.ruoyi.system.service.ISysUserService;
-import org.springframework.beans.factory.annotation.Autowired;
+import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 
 /**
@@ -14,11 +14,11 @@
  *
  * @author Lion Li
  */
+@RequiredArgsConstructor
 @Service
 public class SysUserOnlineServiceImpl implements ISysUserOnlineService {
 
-    @Autowired
-    private ISysUserService userService;
+    private final SysUserMapper userMapper;
 
     /**
      * 閫氳繃鐧诲綍鍦板潃鏌ヨ淇℃伅
@@ -77,7 +77,7 @@
         if (StringUtils.isNull(user)) {
             return null;
         }
-        SysUser sysUser = userService.selectUserById(user.getUserId());
+        SysUser sysUser = userMapper.selectUserById(user.getUserId());
         SysUserOnline sysUserOnline = new SysUserOnline();
         sysUserOnline.setTokenId(user.getToken());
         sysUserOnline.setUserName(user.getUsername());
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
index a31b43a..fe028bc 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
@@ -8,7 +8,6 @@
 import com.ruoyi.common.core.domain.PageQuery;
 import com.ruoyi.common.core.domain.entity.SysRole;
 import com.ruoyi.common.core.domain.entity.SysUser;
-import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
 import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.core.service.UserService;
 import com.ruoyi.common.exception.ServiceException;
@@ -20,8 +19,8 @@
 import com.ruoyi.system.domain.SysUserRole;
 import com.ruoyi.system.mapper.*;
 import com.ruoyi.system.service.ISysUserService;
+import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -36,20 +35,15 @@
  * @author Lion Li
  */
 @Slf4j
+@RequiredArgsConstructor
 @Service
-public class SysUserServiceImpl extends ServicePlusImpl<SysUserMapper, SysUser, SysUser> implements ISysUserService, UserService {
+public class SysUserServiceImpl implements ISysUserService, UserService {
 
-    @Autowired
-    private SysRoleMapper roleMapper;
-
-    @Autowired
-    private SysPostMapper postMapper;
-
-    @Autowired
-    private SysUserRoleMapper userRoleMapper;
-
-    @Autowired
-    private SysUserPostMapper userPostMapper;
+    private final SysUserMapper baseMapper;
+    private final SysRoleMapper roleMapper;
+    private final SysPostMapper postMapper;
+    private final SysUserRoleMapper userRoleMapper;
+    private final SysUserPostMapper userPostMapper;
 
     @Override
     public TableDataInfo<SysUser> selectPageUserList(SysUser user, PageQuery pageQuery) {
@@ -152,7 +146,7 @@
      */
     @Override
     public String checkUserNameUnique(String userName) {
-        long count = count(new LambdaQueryWrapper<SysUser>().eq(SysUser::getUserName, userName));
+        long count = baseMapper.selectCount(new LambdaQueryWrapper<SysUser>().eq(SysUser::getUserName, userName));
         if (count > 0) {
             return UserConstants.NOT_UNIQUE;
         }
@@ -168,10 +162,10 @@
     @Override
     public String checkPhoneUnique(SysUser user) {
         Long userId = StringUtils.isNull(user.getUserId()) ? -1L : user.getUserId();
-        long count = count(new LambdaQueryWrapper<SysUser>()
+        boolean count = baseMapper.exists(new LambdaQueryWrapper<SysUser>()
                 .eq(SysUser::getPhonenumber, user.getPhonenumber())
                 .ne(SysUser::getUserId, userId));
-        if (count > 0) {
+        if (count) {
             return UserConstants.NOT_UNIQUE;
         }
         return UserConstants.UNIQUE;
@@ -186,10 +180,10 @@
     @Override
     public String checkEmailUnique(SysUser user) {
         Long userId = StringUtils.isNull(user.getUserId()) ? -1L : user.getUserId();
-        long count = count(new LambdaQueryWrapper<SysUser>()
+        boolean count = baseMapper.exists(new LambdaQueryWrapper<SysUser>()
                 .eq(SysUser::getEmail, user.getEmail())
                 .ne(SysUser::getUserId, userId));
-        if (count > 0) {
+        if (count) {
             return UserConstants.NOT_UNIQUE;
         }
         return UserConstants.UNIQUE;
@@ -368,7 +362,7 @@
                 list.add(ur);
             }
             if (list.size() > 0) {
-                userRoleMapper.insertAll(list);
+                userRoleMapper.insertBatch(list);
             }
         }
     }
@@ -390,7 +384,7 @@
                 list.add(up);
             }
             if (list.size() > 0) {
-                userPostMapper.insertAll(list);
+                userPostMapper.insertBatch(list);
             }
         }
     }
@@ -412,7 +406,7 @@
                 list.add(ur);
             }
             if (list.size() > 0) {
-                userRoleMapper.insertAll(list);
+                userRoleMapper.insertBatch(list);
             }
         }
     }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TokenServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TokenServiceImpl.java
index 163e934..af14f37 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TokenServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TokenServiceImpl.java
@@ -11,11 +11,11 @@
 import com.ruoyi.common.core.domain.model.LoginUser;
 import com.ruoyi.common.core.service.TokenService;
 import com.ruoyi.common.properties.TokenProperties;
-import com.ruoyi.common.utils.redis.RedisUtils;
 import com.ruoyi.common.utils.ServletUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.ip.AddressUtils;
-import org.springframework.beans.factory.annotation.Autowired;
+import com.ruoyi.common.utils.redis.RedisUtils;
+import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 
 import javax.servlet.http.HttpServletRequest;
@@ -28,6 +28,7 @@
  *
  * @author Lion Li
  */
+@RequiredArgsConstructor
 @Service
 public class TokenServiceImpl implements TokenService {
 
@@ -37,8 +38,7 @@
 
     private static final Long MILLIS_MINUTE_TEN = 20 * 60 * 1000L;
 
-    @Autowired
-    private TokenProperties tokenProperties;
+    private final TokenProperties tokenProperties;
 
     /**
      * 鑾峰彇鐢ㄦ埛韬唤淇℃伅
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/UserDetailsServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/UserDetailsServiceImpl.java
index d4e3095..c66aa59 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/UserDetailsServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/UserDetailsServiceImpl.java
@@ -7,8 +7,8 @@
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.system.service.ISysUserService;
 import com.ruoyi.system.service.SysPermissionService;
+import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.core.userdetails.UserDetails;
 import org.springframework.security.core.userdetails.UserDetailsService;
 import org.springframework.security.core.userdetails.UsernameNotFoundException;
@@ -20,14 +20,12 @@
  * @author ruoyi
  */
 @Slf4j
+@RequiredArgsConstructor
 @Service
 public class UserDetailsServiceImpl implements UserDetailsService {
 
-    @Autowired
-    private ISysUserService userService;
-
-    @Autowired
-    private SysPermissionService permissionService;
+    private final ISysUserService userService;
+    private final SysPermissionService permissionService;
 
     @Override
     public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {

--
Gitblit v1.9.3