diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/RsaUtils.java b/eladmin-common/src/main/java/me/zhengjie/utils/RsaUtils.java index 58089211..7a4d09fe 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/RsaUtils.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/RsaUtils.java @@ -17,17 +17,17 @@ public class RsaUtils { private static final String SRC = "123456"; - public static void main(String[] args) throws Exception { - System.out.println("\n"); - RsaKeyPair keyPair = generateKeyPair(); - System.out.println("公钥:" + keyPair.getPublicKey()); - System.out.println("私钥:" + keyPair.getPrivateKey()); - System.out.println("\n"); - test1(keyPair); - System.out.println("\n"); - test2(keyPair); - System.out.println("\n"); - } +// public static void main(String[] args) throws Exception { +// System.out.println("\n"); +// RsaKeyPair keyPair = generateKeyPair(); +// System.out.println("公钥:" + keyPair.getPublicKey()); +// System.out.println("私钥:" + keyPair.getPrivateKey()); +// System.out.println("\n"); +// test1(keyPair); +// System.out.println("\n"); +// test2(keyPair); +// System.out.println("\n"); +// } /** * 公钥加密私钥解密 diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/WhereFun.java b/eladmin-common/src/main/java/me/zhengjie/utils/WhereFun.java new file mode 100644 index 00000000..0343b25e --- /dev/null +++ b/eladmin-common/src/main/java/me/zhengjie/utils/WhereFun.java @@ -0,0 +1,29 @@ +package me.zhengjie.utils; + +import com.baomidou.mybatisplus.core.conditions.AbstractWrapper; +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.extension.conditions.AbstractChainWrapper; + +import java.lang.reflect.Field; +import java.util.Objects; + +public interface WhereFun { + WhereFun DEFAULT = new DefaultWhereFun(); + + void whereFunc(Wrapper wrapper, Field field, Object value); +} + +class DefaultWhereFun implements WhereFun { + @Override + public void whereFunc(Wrapper wrapper, Field field, Object value) { + if (wrapper instanceof AbstractWrapper) { + if (Objects.nonNull(value)) { + ((AbstractWrapper) wrapper).eq(true, field.getName(), value); + } + } else if (wrapper instanceof AbstractChainWrapper) { + if (Objects.nonNull(value)) { + ((AbstractChainWrapper) wrapper).eq(true, field.getName(), value); + } + } + } +} diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/WrapperUtils.java b/eladmin-common/src/main/java/me/zhengjie/utils/WrapperUtils.java new file mode 100644 index 00000000..77f51913 --- /dev/null +++ b/eladmin-common/src/main/java/me/zhengjie/utils/WrapperUtils.java @@ -0,0 +1,41 @@ +package me.zhengjie.utils; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.extension.conditions.AbstractChainWrapper; +import me.zhengjie.utils.enums.WhereTypeEnum; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.lang.reflect.Field; +import java.util.Map; +import java.util.Objects; +import java.util.concurrent.ConcurrentHashMap; + +public class WrapperUtils { + private static final Logger log = LoggerFactory.getLogger(WrapperUtils.class); + + private static Map typeFunc = new ConcurrentHashMap(); + + /** + * 执行 + * + * @param obj obj + * @param wrapper + */ + public synchronized static Wrapper excute(Object obj, Wrapper wrapper, WhereFun whereFun) { + //反射获取属性 + Field[] fields = obj.getClass().getDeclaredFields(); + for (Field field : fields) { + try { + final Object value = field.get(obj); + if (Objects.nonNull(whereFun)) { + whereFun.whereFunc(wrapper, field, value); + } + } catch (IllegalAccessException e) { + log.error(e.getMessage(), e); + } + } + return wrapper; + } + +} diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/enums/WhereTypeEnum.java b/eladmin-common/src/main/java/me/zhengjie/utils/enums/WhereTypeEnum.java new file mode 100644 index 00000000..36004359 --- /dev/null +++ b/eladmin-common/src/main/java/me/zhengjie/utils/enums/WhereTypeEnum.java @@ -0,0 +1,5 @@ +package me.zhengjie.utils.enums; + +public enum WhereTypeEnum { + EQ,NEQ,IN,LIKE,LT,GT,LE,GE; +} diff --git a/eladmin-generator/src/main/java/me/zhengjie/repository/ColumnInfoDao.java b/eladmin-generator/src/main/java/me/zhengjie/repository/ColumnInfoDao.java new file mode 100644 index 00000000..e9e4b0f0 --- /dev/null +++ b/eladmin-generator/src/main/java/me/zhengjie/repository/ColumnInfoDao.java @@ -0,0 +1,71 @@ +package me.zhengjie.repository; + +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import me.zhengjie.domain.ColumnInfo; +import me.zhengjie.repository.jpa.ColumnInfoRepository; +import me.zhengjie.repository.mp.ColumnInfoService; +import me.zhengjie.utils.WhereFun; +import me.zhengjie.utils.WrapperUtils; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * @author liaojinlong + * @since 2020/6/28 14:59 + */ +@Component +public class ColumnInfoDao { + private Boolean dbType = false; + private ColumnInfoService columnInfoService; + private ColumnInfoRepository columnInfoRepository; + + public ColumnInfoDao(ColumnInfoService columnInfoService, ColumnInfoRepository columnInfoRepository) { + this.columnInfoService = columnInfoService; + this.columnInfoRepository = columnInfoRepository; + } + + public List findByTableNameOrderByIdAsc(String tableName) { + if (false) { + return columnInfoRepository.findByTableNameOrderByIdAsc(tableName); + } else { + return columnInfoService + .selectList(Wrappers.query().eq(true, "TABLE_NAME", tableName)); + } + } + + public List saveAll(List columnInfos) { + if (true) { + return columnInfoRepository.saveAll(columnInfos); + } else { + columnInfos.forEach(columnInfo -> { + columnInfoService.insert(columnInfo); + }); + return columnInfos; + } + } + + public void delete(ColumnInfo columnInfo) { + if (dbType) { + columnInfoRepository.delete(columnInfo); + } else { + columnInfoService.delete(WrapperUtils.excute(columnInfo, Wrappers.query(), WhereFun.DEFAULT)); + } + } + + public void save(ColumnInfo columnInfo) { + if (dbType) { + columnInfoRepository.save(columnInfo); + } else { + columnInfoService.insert(columnInfo); + } + } + + public void update(ColumnInfo columnInfo) { + if (dbType) { + columnInfoRepository.saveAndFlush(columnInfo); + } else { + columnInfoService.updateById(columnInfo); + } + } +} diff --git a/eladmin-generator/src/main/java/me/zhengjie/repository/ColumnInfoRepository.java b/eladmin-generator/src/main/java/me/zhengjie/repository/jpa/ColumnInfoRepository.java similarity index 96% rename from eladmin-generator/src/main/java/me/zhengjie/repository/ColumnInfoRepository.java rename to eladmin-generator/src/main/java/me/zhengjie/repository/jpa/ColumnInfoRepository.java index 4638be26..61fe7785 100644 --- a/eladmin-generator/src/main/java/me/zhengjie/repository/ColumnInfoRepository.java +++ b/eladmin-generator/src/main/java/me/zhengjie/repository/jpa/ColumnInfoRepository.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package me.zhengjie.repository; +package me.zhengjie.repository.jpa; import me.zhengjie.domain.ColumnInfo; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/eladmin-generator/src/main/java/me/zhengjie/repository/GenConfigRepository.java b/eladmin-generator/src/main/java/me/zhengjie/repository/jpa/GenConfigRepository.java similarity index 96% rename from eladmin-generator/src/main/java/me/zhengjie/repository/GenConfigRepository.java rename to eladmin-generator/src/main/java/me/zhengjie/repository/jpa/GenConfigRepository.java index 18c9a0c8..f460aa75 100644 --- a/eladmin-generator/src/main/java/me/zhengjie/repository/GenConfigRepository.java +++ b/eladmin-generator/src/main/java/me/zhengjie/repository/jpa/GenConfigRepository.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package me.zhengjie.repository; +package me.zhengjie.repository.jpa; import me.zhengjie.domain.GenConfig; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/eladmin-generator/src/main/java/me/zhengjie/repository/mp/ColumnInfoService.java b/eladmin-generator/src/main/java/me/zhengjie/repository/mp/ColumnInfoService.java new file mode 100644 index 00000000..d02eca23 --- /dev/null +++ b/eladmin-generator/src/main/java/me/zhengjie/repository/mp/ColumnInfoService.java @@ -0,0 +1,11 @@ +package me.zhengjie.repository.mp; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import me.zhengjie.domain.ColumnInfo; + +/** + * @author liaojinlong + * @since 2020/6/28 14:57 + */ +public interface ColumnInfoService extends BaseMapper { +} diff --git a/eladmin-generator/src/main/java/me/zhengjie/service/impl/GenConfigServiceImpl.java b/eladmin-generator/src/main/java/me/zhengjie/service/impl/GenConfigServiceImpl.java index 50319e1c..4242cf31 100644 --- a/eladmin-generator/src/main/java/me/zhengjie/service/impl/GenConfigServiceImpl.java +++ b/eladmin-generator/src/main/java/me/zhengjie/service/impl/GenConfigServiceImpl.java @@ -17,7 +17,7 @@ package me.zhengjie.service.impl; import lombok.RequiredArgsConstructor; import me.zhengjie.domain.GenConfig; -import me.zhengjie.repository.GenConfigRepository; +import me.zhengjie.repository.jpa.GenConfigRepository; import me.zhengjie.service.GenConfigService; import me.zhengjie.utils.StringUtils; import org.springframework.stereotype.Service; diff --git a/eladmin-generator/src/main/java/me/zhengjie/service/impl/GeneratorServiceImpl.java b/eladmin-generator/src/main/java/me/zhengjie/service/impl/GeneratorServiceImpl.java index 1b1803b2..28b9d2db 100644 --- a/eladmin-generator/src/main/java/me/zhengjie/service/impl/GeneratorServiceImpl.java +++ b/eladmin-generator/src/main/java/me/zhengjie/service/impl/GeneratorServiceImpl.java @@ -23,7 +23,7 @@ import me.zhengjie.domain.GenConfig; import me.zhengjie.domain.ColumnInfo; import me.zhengjie.domain.vo.TableInfo; import me.zhengjie.exception.BadRequestException; -import me.zhengjie.repository.ColumnInfoRepository; +import me.zhengjie.repository.ColumnInfoDao; import me.zhengjie.service.GeneratorService; import me.zhengjie.utils.FileUtil; import me.zhengjie.utils.GenUtil; @@ -58,7 +58,7 @@ public class GeneratorServiceImpl implements GeneratorService { @PersistenceContext private EntityManager em; - private final ColumnInfoRepository columnInfoRepository; + private final ColumnInfoDao columnInfoDao; @Override public Object getTables() { @@ -93,12 +93,12 @@ public class GeneratorServiceImpl implements GeneratorService { @Override public List getColumns(String tableName) { - List columnInfos = columnInfoRepository.findByTableNameOrderByIdAsc(tableName); + List columnInfos = columnInfoDao.findByTableNameOrderByIdAsc(tableName); if (CollectionUtil.isNotEmpty(columnInfos)) { return columnInfos; } else { columnInfos = query(tableName); - return columnInfoRepository.saveAll(columnInfos); + return columnInfoDao.saveAll(columnInfos); } } @@ -142,10 +142,10 @@ public class GeneratorServiceImpl implements GeneratorService { if (StringUtils.isBlank(column.getRemark())) { column.setRemark(columnInfo.getRemark()); } - columnInfoRepository.save(column); + columnInfoDao.update(column); } else { // 如果找不到,则保存新字段信息 - columnInfoRepository.save(columnInfo); + columnInfoDao.save(columnInfo); } } // 第二种情况,数据库字段删除了 @@ -154,14 +154,14 @@ public class GeneratorServiceImpl implements GeneratorService { List columns = columnInfoList.stream().filter(c -> c.getColumnName().equals(columnInfo.getColumnName())).collect(Collectors.toList()); // 如果找不到,就代表字段被删除了,则需要删除该字段 if (CollectionUtil.isEmpty(columns)) { - columnInfoRepository.delete(columnInfo); + columnInfoDao.delete(columnInfo); } } } @Override public void save(List columnInfos) { - columnInfoRepository.saveAll(columnInfos); + columnInfoDao.saveAll(columnInfos); } @Override diff --git a/eladmin-system/src/main/java/me/zhengjie/config/MybatisPlusConfig.java b/eladmin-system/src/main/java/me/zhengjie/config/MybatisPlusConfig.java new file mode 100644 index 00000000..225ed7f8 --- /dev/null +++ b/eladmin-system/src/main/java/me/zhengjie/config/MybatisPlusConfig.java @@ -0,0 +1,10 @@ +package me.zhengjie.config; + +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.context.annotation.Configuration; + +@Configuration +@MapperScan("me.zhengjie.repository.mp") +public class MybatisPlusConfig { + +} diff --git a/eladmin-system/src/main/resources/config/application-dev.yml b/eladmin-system/src/main/resources/config/application-dev.yml index d9a67418..011f6117 100644 --- a/eladmin-system/src/main/resources/config/application-dev.yml +++ b/eladmin-system/src/main/resources/config/application-dev.yml @@ -6,7 +6,7 @@ spring: driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy url: jdbc:log4jdbc:mysql://localhost:3306/eladmin?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false username: root - password: 123456 + password: 59421 # 初始连接数 initial-size: 5 # 最小连接数 @@ -106,4 +106,4 @@ file: avatar: C:\eladmin\avatar\ # 文件大小 /M maxSize: 100 - avatarMaxSize: 5 + avatarMaxSize: 5 \ No newline at end of file diff --git a/pom.xml b/pom.xml index c7b2e7d7..54794b27 100644 --- a/pom.xml +++ b/pom.xml @@ -206,6 +206,12 @@ UserAgentUtils 1.21 + + + com.baomidou + mybatis-plus-boot-starter + 3.3.3.3-SNAPSHOT +