From dc68d22faa2048364b7cacab3678a131c702f658 Mon Sep 17 00:00:00 2001 From: lgnerv Date: Mon, 2 Sep 2019 22:06:48 +0800 Subject: [PATCH 1/8] uuid log --- .../java/com/gnerv/boot/utils/LogUtil.java | 40 ++++++++++++++ .../java/com/gnerv/boot/utils/UUIDUtils.java | 53 +++++++++++++++++++ 2 files changed, 93 insertions(+) create mode 100644 src/main/java/com/gnerv/boot/utils/LogUtil.java create mode 100644 src/main/java/com/gnerv/boot/utils/UUIDUtils.java diff --git a/src/main/java/com/gnerv/boot/utils/LogUtil.java b/src/main/java/com/gnerv/boot/utils/LogUtil.java new file mode 100644 index 0000000..2f7a56f --- /dev/null +++ b/src/main/java/com/gnerv/boot/utils/LogUtil.java @@ -0,0 +1,40 @@ +package com.gnerv.boot.utils; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * @author Gnerv LiGen + * @description 日志工具类 + * @data 2019/5/31 + */ +public class LogUtil { + + private static Logger logger = LoggerFactory.getLogger(LogUtil.class); + + public static void info(String msg, Object... tag) { + StackTraceElement stackTraceElement = Thread.currentThread().getStackTrace()[2]; + logger.info(msg, tag); + getLogInfo(stackTraceElement); + } + + /** + * 输出日志所包含的信息 + */ + public static String getLogInfo(StackTraceElement stackTraceElement) { + StringBuilder logInfoStringBuilder = new StringBuilder(); + // 获取线程名 + String threadName = Thread.currentThread().getName(); + // 获取线程ID + long threadID = Thread.currentThread().getId(); + // 获取文件名.即xxx.java + String fileName = stackTraceElement.getFileName(); + // 获取类名.即包名+类名 + String className = stackTraceElement.getClassName(); + // 获取方法名称 + String methodName = stackTraceElement.getMethodName(); + // 获取生日输出行数 + int lineNumber = stackTraceElement.getLineNumber(); + return logInfoStringBuilder.toString(); + } +} diff --git a/src/main/java/com/gnerv/boot/utils/UUIDUtils.java b/src/main/java/com/gnerv/boot/utils/UUIDUtils.java new file mode 100644 index 0000000..35e8512 --- /dev/null +++ b/src/main/java/com/gnerv/boot/utils/UUIDUtils.java @@ -0,0 +1,53 @@ +package com.gnerv.boot.utils; + +import java.util.UUID; + +/** + *

+ * UUID 工具类 + *

+ * + * @author gnerv + * @since 2018-05-09 + */ +public class UUIDUtils { + + /** + * 去中横线 小写 + * + * @return uuid + */ + @Deprecated + public static String getLowerUUID() { + return UUID.randomUUID().toString().replace("-", "").toLowerCase(); + } + + /** + * 去中横线 小写 + * + * @return uuid + */ + public static String getLower() { + return UUID.randomUUID().toString().replace("-", "").toLowerCase(); + } + + /** + * 去中横线 大写 + * + * @return uuid + */ + @Deprecated + public static String getUpperUUID() { + return UUID.randomUUID().toString().replace("-", "").toUpperCase(); + } + + /** + * 去中横线 大写 + * + * @return uuid + */ + public static String getUpper() { + return UUID.randomUUID().toString().replace("-", "").toUpperCase(); + } + +} From 9825f65e6ca094c53ee652fc62d39efbc1e76969 Mon Sep 17 00:00:00 2001 From: lgnerv Date: Tue, 3 Sep 2019 07:48:58 +0800 Subject: [PATCH 2/8] release 1.0.0 --- pom.xml | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/pom.xml b/pom.xml index e29483c..6d2edea 100644 --- a/pom.xml +++ b/pom.xml @@ -46,4 +46,37 @@ + + + + The Apache Software License, Version 2.0 + http://www.apache.org/licenses/LICENSE-2.0.txt + + + + + scm:git:git://github.com/gnerv/gnerv-utils.git + scm:git:ssh://github.com/gnerv/gnerv-utils.git + https://github.com/gnerv/gnerv-utils/tree/master + + + + + Gnerv LiGen + ligendwow@126.com + https://github.com/gnerv + + + + + + ossrh + https://oss.sonatype.org/content/repositories/snapshots + + + ossrh + https://oss.sonatype.org/service/local/staging/deploy/maven2/ + + + From 7456b7305b292d89b2028cfffffc9572bf37a673 Mon Sep 17 00:00:00 2001 From: lgnerv Date: Tue, 3 Sep 2019 08:03:39 +0800 Subject: [PATCH 3/8] release 1.0.0 --- pom.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pom.xml b/pom.xml index 6d2edea..58203f7 100644 --- a/pom.xml +++ b/pom.xml @@ -79,4 +79,6 @@ + + From 7150a9e9c4894dd052be3845b7cb2b2230a36875 Mon Sep 17 00:00:00 2001 From: ligen Date: Tue, 3 Sep 2019 18:31:39 +0800 Subject: [PATCH 4/8] v1 --- pom.xml | 60 +++++++++++++++++-- .../java/com/gnerv/boot/utils/ExcelUtil.java | 13 +--- .../java/com/gnerv/boot/utils/LogUtil.java | 9 +-- .../java/com/gnerv/boot/utils/UUIDUtils.java | 9 +-- 4 files changed, 57 insertions(+), 34 deletions(-) diff --git a/pom.xml b/pom.xml index 58203f7..3d1ac71 100644 --- a/pom.xml +++ b/pom.xml @@ -3,10 +3,9 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - org.springframework.boot - spring-boot-starter-parent - 2.1.6.RELEASE - + org.sonatype.oss + oss-parent + 7 com.gnerv.boot @@ -23,8 +22,8 @@ org.springframework.boot spring-boot-starter-web + 2.1.6.RELEASE - org.apache.poi @@ -55,6 +54,7 @@ + master scm:git:git://github.com/gnerv/gnerv-utils.git scm:git:ssh://github.com/gnerv/gnerv-utils.git https://github.com/gnerv/gnerv-utils/tree/master @@ -79,6 +79,54 @@ - + + + + org.apache.maven.plugins + maven-clean-plugin + 3.1.0 + + + org.apache.maven.plugins + maven-source-plugin + 3.0.1 + + + attach-sources + + jar + + + + + + org.apache.maven.plugins + maven-gpg-plugin + 1.6 + + + sign-artifacts + verify + + sign + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + 3.0.1 + + + attach-javadocs + + jar + + + + + + diff --git a/src/main/java/com/gnerv/boot/utils/ExcelUtil.java b/src/main/java/com/gnerv/boot/utils/ExcelUtil.java index 9c8b0f0..bf7fa2f 100644 --- a/src/main/java/com/gnerv/boot/utils/ExcelUtil.java +++ b/src/main/java/com/gnerv/boot/utils/ExcelUtil.java @@ -15,29 +15,18 @@ import java.util.ArrayList; import java.util.List; -/** - * @author Gnerv LiGen - * @description Excel工具 - * @data 2019/6/13 - */ public class ExcelUtil { private final static String xls = "xls"; private final static String xlsx = "xlsx"; - /** - * 读入excel文件,解析后返回 - * - * @param file - * @throws IOException - */ public static List readExcel(MultipartFile file) throws IOException { //检查文件 checkFile(file); //获得Workbook工作薄对象 Workbook workbook = getWorkBook(file); //创建返回对象,把每行中的值作为一个数组,所有行作为一个集合返回 - List list = new ArrayList<>(); + List list = new ArrayList(); if (workbook != null) { for (int sheetNum = 0; sheetNum < workbook.getNumberOfSheets(); sheetNum++) { //获得当前sheet工作表 diff --git a/src/main/java/com/gnerv/boot/utils/LogUtil.java b/src/main/java/com/gnerv/boot/utils/LogUtil.java index 2f7a56f..e854c9e 100644 --- a/src/main/java/com/gnerv/boot/utils/LogUtil.java +++ b/src/main/java/com/gnerv/boot/utils/LogUtil.java @@ -3,11 +3,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -/** - * @author Gnerv LiGen - * @description 日志工具类 - * @data 2019/5/31 - */ public class LogUtil { private static Logger logger = LoggerFactory.getLogger(LogUtil.class); @@ -18,9 +13,7 @@ public static void info(String msg, Object... tag) { getLogInfo(stackTraceElement); } - /** - * 输出日志所包含的信息 - */ + public static String getLogInfo(StackTraceElement stackTraceElement) { StringBuilder logInfoStringBuilder = new StringBuilder(); // 获取线程名 diff --git a/src/main/java/com/gnerv/boot/utils/UUIDUtils.java b/src/main/java/com/gnerv/boot/utils/UUIDUtils.java index 35e8512..61f99a1 100644 --- a/src/main/java/com/gnerv/boot/utils/UUIDUtils.java +++ b/src/main/java/com/gnerv/boot/utils/UUIDUtils.java @@ -2,14 +2,7 @@ import java.util.UUID; -/** - *

- * UUID 工具类 - *

- * - * @author gnerv - * @since 2018-05-09 - */ + public class UUIDUtils { /** From 4f5d1ac651ca228c758e6a8d9bff567348c02a03 Mon Sep 17 00:00:00 2001 From: lgnerv Date: Tue, 3 Sep 2019 22:35:28 +0800 Subject: [PATCH 5/8] release 1.0.0 --- pom.xml | 20 ++- .../utils/{ExcelUtil.java => ExcelUtils.java} | 2 +- .../java/com/gnerv/boot/utils/LogUtil.java | 33 ---- .../java/com/gnerv/boot/utils/LogUtils.java | 143 ++++++++++++++++++ .../com/gnerv/boot/utils/MapperUtils.java | 89 +++++++++++ .../com/gnerv/boot/utils/QrCodeUtils.java | 18 +++ .../java/com/gnerv/boot/utils/UUIDUtils.java | 29 +--- .../com/gnerv/boot/utils/test/TestMain.java | 13 ++ 8 files changed, 286 insertions(+), 61 deletions(-) rename src/main/java/com/gnerv/boot/utils/{ExcelUtil.java => ExcelUtils.java} (99%) delete mode 100644 src/main/java/com/gnerv/boot/utils/LogUtil.java create mode 100644 src/main/java/com/gnerv/boot/utils/LogUtils.java create mode 100644 src/main/java/com/gnerv/boot/utils/MapperUtils.java create mode 100644 src/main/java/com/gnerv/boot/utils/QrCodeUtils.java create mode 100644 src/main/java/com/gnerv/boot/utils/test/TestMain.java diff --git a/pom.xml b/pom.xml index 3d1ac71..81e4afe 100644 --- a/pom.xml +++ b/pom.xml @@ -3,9 +3,10 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - org.sonatype.oss - oss-parent - 7 + org.springframework.boot + spring-boot-starter-parent + 2.1.6.RELEASE + com.gnerv.boot @@ -22,8 +23,15 @@ org.springframework.boot spring-boot-starter-web - 2.1.6.RELEASE + + + + com.baomidou + mybatis-plus-boot-starter + 3.1.0 + + org.apache.poi @@ -89,7 +97,7 @@ org.apache.maven.plugins maven-source-plugin - 3.0.1 + 3.1.0 attach-sources @@ -116,7 +124,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 3.0.1 + 3.1.0 attach-javadocs diff --git a/src/main/java/com/gnerv/boot/utils/ExcelUtil.java b/src/main/java/com/gnerv/boot/utils/ExcelUtils.java similarity index 99% rename from src/main/java/com/gnerv/boot/utils/ExcelUtil.java rename to src/main/java/com/gnerv/boot/utils/ExcelUtils.java index bf7fa2f..4402fde 100644 --- a/src/main/java/com/gnerv/boot/utils/ExcelUtil.java +++ b/src/main/java/com/gnerv/boot/utils/ExcelUtils.java @@ -15,7 +15,7 @@ import java.util.ArrayList; import java.util.List; -public class ExcelUtil { +public class ExcelUtils { private final static String xls = "xls"; private final static String xlsx = "xlsx"; diff --git a/src/main/java/com/gnerv/boot/utils/LogUtil.java b/src/main/java/com/gnerv/boot/utils/LogUtil.java deleted file mode 100644 index e854c9e..0000000 --- a/src/main/java/com/gnerv/boot/utils/LogUtil.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.gnerv.boot.utils; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class LogUtil { - - private static Logger logger = LoggerFactory.getLogger(LogUtil.class); - - public static void info(String msg, Object... tag) { - StackTraceElement stackTraceElement = Thread.currentThread().getStackTrace()[2]; - logger.info(msg, tag); - getLogInfo(stackTraceElement); - } - - - public static String getLogInfo(StackTraceElement stackTraceElement) { - StringBuilder logInfoStringBuilder = new StringBuilder(); - // 获取线程名 - String threadName = Thread.currentThread().getName(); - // 获取线程ID - long threadID = Thread.currentThread().getId(); - // 获取文件名.即xxx.java - String fileName = stackTraceElement.getFileName(); - // 获取类名.即包名+类名 - String className = stackTraceElement.getClassName(); - // 获取方法名称 - String methodName = stackTraceElement.getMethodName(); - // 获取生日输出行数 - int lineNumber = stackTraceElement.getLineNumber(); - return logInfoStringBuilder.toString(); - } -} diff --git a/src/main/java/com/gnerv/boot/utils/LogUtils.java b/src/main/java/com/gnerv/boot/utils/LogUtils.java new file mode 100644 index 0000000..32c9774 --- /dev/null +++ b/src/main/java/com/gnerv/boot/utils/LogUtils.java @@ -0,0 +1,143 @@ +package com.gnerv.boot.utils; + +import com.alibaba.fastjson.JSON; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + *

+ * 日志工具类 + *

+ * + * @author Gnerv LiGen + * @since 2019/5/31 + */ +public class LogUtils { + + private static Logger logger = LoggerFactory.getLogger(LogUtils.class); + + public static void info(String msg, Object... tag) { + StackTraceElement stackTraceElement = Thread.currentThread().getStackTrace()[2]; + String logInfo = getLogInfo(stackTraceElement, msg); + logger.info(logInfo, tag); + } + + public static void error(String msg, Object... tag) { + StackTraceElement stackTraceElement = Thread.currentThread().getStackTrace()[2]; + String logInfo = getLogInfo(stackTraceElement, msg); + logger.error(logInfo, tag); + } + + public static void debug(String msg, Object... tag) { + StackTraceElement stackTraceElement = Thread.currentThread().getStackTrace()[2]; + String logInfo = getLogInfo(stackTraceElement, msg); + logger.debug(logInfo, tag); + } + + public static void trace(String msg, Object... tag) { + StackTraceElement stackTraceElement = Thread.currentThread().getStackTrace()[2]; + String logInfo = getLogInfo(stackTraceElement, msg); + logger.trace(logInfo, tag); + } + + private static String getLogInfo(StackTraceElement stackTraceElement, String msg) { + // 获取线程名 + String threadName = Thread.currentThread().getName(); + // 获取线程ID + long threadId = Thread.currentThread().getId(); + // 获取文件名.即xxx.java + String fileName = stackTraceElement.getFileName(); + // 获取类名.即包名+类名 + String className = stackTraceElement.getClassName(); + // 获取方法名称 + String methodName = stackTraceElement.getMethodName(); + // 获取行号 + int lineNumber = stackTraceElement.getLineNumber(); + LogInfo logInfo = new LogInfo(threadName, threadId, fileName, className, methodName, lineNumber, msg); + return logInfo.toString(); + } + + public static class LogInfo { + private String threadName; + private long threadId; + private String fileName; + private String className; + private String methodName; + private int lineNumber; + private String msg; + + public LogInfo() { + } + + public LogInfo(String threadName, long threadId, String fileName, String className, String methodName, int lineNumber, String msg) { + this.threadName = threadName; + this.threadId = threadId; + this.fileName = fileName; + this.className = className; + this.methodName = methodName; + this.lineNumber = lineNumber; + this.msg = msg; + } + + public String getThreadName() { + return threadName; + } + + public void setThreadName(String threadName) { + this.threadName = threadName; + } + + public long getThreadId() { + return threadId; + } + + public void setThreadId(long threadId) { + this.threadId = threadId; + } + + public String getFileName() { + return fileName; + } + + public void setFileName(String fileName) { + this.fileName = fileName; + } + + public String getClassName() { + return className; + } + + public void setClassName(String className) { + this.className = className; + } + + public String getMethodName() { + return methodName; + } + + public void setMethodName(String methodName) { + this.methodName = methodName; + } + + public int getLineNumber() { + return lineNumber; + } + + public void setLineNumber(int lineNumber) { + this.lineNumber = lineNumber; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + @Override + public String toString() { + return JSON.toJSONString(this); + } + } +} diff --git a/src/main/java/com/gnerv/boot/utils/MapperUtils.java b/src/main/java/com/gnerv/boot/utils/MapperUtils.java new file mode 100644 index 0000000..2a19e37 --- /dev/null +++ b/src/main/java/com/gnerv/boot/utils/MapperUtils.java @@ -0,0 +1,89 @@ +package com.gnerv.boot.utils; + +import org.apache.ibatis.mapping.MappedStatement; +import org.apache.ibatis.mapping.ResultMap; +import org.apache.ibatis.mapping.ResultMapping; + +import java.util.ArrayList; +import java.util.List; + +/** + *

+ * Mapper工具类 + *

+ * + * @author Gnerv LiGen + * @since 2019/5/31 + */ +public class MapperUtils { + + private MappedStatement buildMappedStatement(MappedStatement ms) { + MappedStatement.Builder builder = + new MappedStatement.Builder(ms.getConfiguration(), ms.getId(), ms.getSqlSource(), ms.getSqlCommandType()); + + builder.resource(ms.getResource()); + builder.fetchSize(ms.getFetchSize()); + builder.statementType(ms.getStatementType()); + builder.keyGenerator(ms.getKeyGenerator()); + builder.timeout(ms.getTimeout()); + builder.parameterMap(ms.getParameterMap()); + + List resultMaps = ms.getResultMaps(); + + List newResultMaps = new ArrayList<>(); + + for (ResultMap resultMap : resultMaps) { + List resultMappings = resultMap.getResultMappings(); + List composites = buildComposites(ms, resultMap); + + ResultMapping resultMapping = buildResultMapping(ms, resultMap, composites); + + List lists = new ArrayList(resultMappings); + lists.add(resultMapping); + + ResultMap newResultMap = new ResultMap.Builder(ms.getConfiguration(), resultMap.getId(), resultMap.getType(), lists).build(); + + newResultMaps.add(newResultMap); + } + + //builder.resultMaps(ms.getResultMaps()); + builder.resultMaps(newResultMaps); + builder.resultSetType(ms.getResultSetType()); + builder.cache(ms.getCache()); + builder.flushCacheRequired(ms.isFlushCacheRequired()); + builder.useCache(ms.isUseCache()); + + return builder.build(); + } + + private ResultMapping buildResultMapping(MappedStatement ms, ResultMap resultMap, List composites){ + Class type = resultMap.getType(); + EntityExtend entityExtend = EntityExtendBean.BEANS_MAP.get(type); + ResultMapping resultMapping = new ResultMapping.Builder( + ms.getConfiguration(), + entityExtend.property(), + entityExtend.column(), + entityExtend.type()) + .nestedQueryId(entityExtend.method()) + .composites(composites) + .build(); + + return resultMapping; + } + + private List buildComposites(MappedStatement ms, ResultMap resultMap){ + Class type = resultMap.getType(); + EntityExtend entityExtend = EntityExtendBean.BEANS_MAP.get(type); + ResultMapping resultMapping = new ResultMapping.Builder( + ms.getConfiguration(), + entityExtend.property(), + entityExtend.column(), + entityExtend.type()) + .nestedQueryId(entityExtend.method()) + .build(); + List composites = new ArrayList<>(); + composites.add(resultMapping); + return composites; + } + +} diff --git a/src/main/java/com/gnerv/boot/utils/QrCodeUtils.java b/src/main/java/com/gnerv/boot/utils/QrCodeUtils.java new file mode 100644 index 0000000..ddc3dd6 --- /dev/null +++ b/src/main/java/com/gnerv/boot/utils/QrCodeUtils.java @@ -0,0 +1,18 @@ +package com.gnerv.boot.utils; + +/** + *

+ * 二维码工具 + *

+ * + * @author Gnerv LiGen + * @since 2019/5/31 + */ +public class QrCodeUtils { + + + + + + +} diff --git a/src/main/java/com/gnerv/boot/utils/UUIDUtils.java b/src/main/java/com/gnerv/boot/utils/UUIDUtils.java index 61f99a1..f05a12f 100644 --- a/src/main/java/com/gnerv/boot/utils/UUIDUtils.java +++ b/src/main/java/com/gnerv/boot/utils/UUIDUtils.java @@ -2,19 +2,16 @@ import java.util.UUID; - +/** + *

+ * UUID工具类 + *

+ * + * @author Gnerv LiGen + * @since 2019/5/31 + */ public class UUIDUtils { - /** - * 去中横线 小写 - * - * @return uuid - */ - @Deprecated - public static String getLowerUUID() { - return UUID.randomUUID().toString().replace("-", "").toLowerCase(); - } - /** * 去中横线 小写 * @@ -24,16 +21,6 @@ public static String getLower() { return UUID.randomUUID().toString().replace("-", "").toLowerCase(); } - /** - * 去中横线 大写 - * - * @return uuid - */ - @Deprecated - public static String getUpperUUID() { - return UUID.randomUUID().toString().replace("-", "").toUpperCase(); - } - /** * 去中横线 大写 * diff --git a/src/main/java/com/gnerv/boot/utils/test/TestMain.java b/src/main/java/com/gnerv/boot/utils/test/TestMain.java new file mode 100644 index 0000000..c2e3254 --- /dev/null +++ b/src/main/java/com/gnerv/boot/utils/test/TestMain.java @@ -0,0 +1,13 @@ +package com.gnerv.boot.utils.test; + +import com.gnerv.boot.utils.LogUtils; + +public class TestMain { + + + public static void main(String[] args) { + LogUtils.info("asdasdasdasdas{}{}{}", "555", "222", "333"); + } + + +} From 71ae5348c88a12518c8d452d6bf986c45833de60 Mon Sep 17 00:00:00 2001 From: ligen Date: Wed, 4 Sep 2019 14:18:51 +0800 Subject: [PATCH 6/8] v1 --- .../com/gnerv/boot/annotation/ESExcel.java | 31 +++ .../gnerv/boot/annotation/EntityExtend.java | 55 ++++++ .../gnerv/boot/annotation/ResultFilter.java | 24 +++ .../gnerv/boot/common/EntityExtendBean.java | 21 ++ .../gnerv/boot/config/EntityExtendConfig.java | 23 +++ .../com/gnerv/boot/entity/BaseExtend.java | 39 ++++ .../interceptor/EntityExtendInterceptor.java | 65 ++++++ .../listener/ContextRefreshedListener.java | 40 ++++ .../com/gnerv/boot/utils/MapperUtils.java | 89 --------- .../boot/utils/{ => excel}/ExcelUtils.java | 2 +- .../gnerv/boot/utils/{ => log}/LogUtils.java | 2 +- .../gnerv/boot/utils/mapper/MapperUtils.java | 74 +++++++ .../boot/utils/{ => qrcode}/QrCodeUtils.java | 7 +- .../boot/utils/reflect/ReflectUtils.java | 186 ++++++++++++++++++ .../com/gnerv/boot/utils/test/TestMain.java | 3 - .../boot/utils/{ => uuid}/UUIDUtils.java | 2 +- 16 files changed, 562 insertions(+), 101 deletions(-) create mode 100644 src/main/java/com/gnerv/boot/annotation/ESExcel.java create mode 100644 src/main/java/com/gnerv/boot/annotation/EntityExtend.java create mode 100644 src/main/java/com/gnerv/boot/annotation/ResultFilter.java create mode 100644 src/main/java/com/gnerv/boot/common/EntityExtendBean.java create mode 100644 src/main/java/com/gnerv/boot/config/EntityExtendConfig.java create mode 100644 src/main/java/com/gnerv/boot/entity/BaseExtend.java create mode 100644 src/main/java/com/gnerv/boot/interceptor/EntityExtendInterceptor.java create mode 100644 src/main/java/com/gnerv/boot/listener/ContextRefreshedListener.java delete mode 100644 src/main/java/com/gnerv/boot/utils/MapperUtils.java rename src/main/java/com/gnerv/boot/utils/{ => excel}/ExcelUtils.java (99%) rename src/main/java/com/gnerv/boot/utils/{ => log}/LogUtils.java (99%) create mode 100644 src/main/java/com/gnerv/boot/utils/mapper/MapperUtils.java rename src/main/java/com/gnerv/boot/utils/{ => qrcode}/QrCodeUtils.java (76%) create mode 100644 src/main/java/com/gnerv/boot/utils/reflect/ReflectUtils.java rename src/main/java/com/gnerv/boot/utils/{ => uuid}/UUIDUtils.java (93%) diff --git a/src/main/java/com/gnerv/boot/annotation/ESExcel.java b/src/main/java/com/gnerv/boot/annotation/ESExcel.java new file mode 100644 index 0000000..f17663d --- /dev/null +++ b/src/main/java/com/gnerv/boot/annotation/ESExcel.java @@ -0,0 +1,31 @@ +package com.gnerv.boot.annotation; + +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + *

+ * excel 实体对象注解 + *

+ * + * @author Gnerv LiGen + * @since 2019/8/28 + */ +@Target({ElementType.FIELD}) +@Retention(RetentionPolicy.RUNTIME) +@Documented +public @interface ESExcel { + + /** + * 列索引 + */ + int columnIndex() default 0; + + /** + * 列名称 如果使用名称 则Excel表格第一行 必须为名称 + */ + String columnName() default ""; +} diff --git a/src/main/java/com/gnerv/boot/annotation/EntityExtend.java b/src/main/java/com/gnerv/boot/annotation/EntityExtend.java new file mode 100644 index 0000000..841e3b2 --- /dev/null +++ b/src/main/java/com/gnerv/boot/annotation/EntityExtend.java @@ -0,0 +1,55 @@ +package com.gnerv.boot.annotation; + + +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + *

+ * 扩展类 注解 + * 对于使用mybatis-plus注解与数据库字段对应 + * 并且mapper接口继承了mybatis-plus的baseMapper的扩展类 + * 在不指定对应crud方法时 + * 将尝试使用通用crud方法 + * 否则必须指定对应crud方法 + *

+ * + * @author Gnerv LiGen + * @since 2019/9/4 + */ +@Target({ElementType.TYPE}) +@Retention(RetentionPolicy.RUNTIME) +@Documented +public @interface EntityExtend { + + // 被注入的对象 + Class clazz(); + + // mapper接口类 + Class mapper(); + + // 插入方法名 + String insert() default ""; + + // 删除方法名 + String delete() default ""; + + // 更新方法名 + String update() default ""; + + // 查询方法名 + String select() default ""; + + // 参数名 + String parameter() default ""; + + // 对应主表字段名 + String mColumn(); + + // 对应从表字段名 + String sColumn(); + +} diff --git a/src/main/java/com/gnerv/boot/annotation/ResultFilter.java b/src/main/java/com/gnerv/boot/annotation/ResultFilter.java new file mode 100644 index 0000000..83ca160 --- /dev/null +++ b/src/main/java/com/gnerv/boot/annotation/ResultFilter.java @@ -0,0 +1,24 @@ +package com.gnerv.boot.annotation; + +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + *

+ * 返回参数过滤 + *

+ * + * @author Gnerv LiGen + * @since 2019/8/13 + */ +@Target({ElementType.TYPE, ElementType.METHOD}) +@Retention(RetentionPolicy.RUNTIME) +@Documented +public @interface ResultFilter { + + String[] field() default {}; + +} diff --git a/src/main/java/com/gnerv/boot/common/EntityExtendBean.java b/src/main/java/com/gnerv/boot/common/EntityExtendBean.java new file mode 100644 index 0000000..6a8bcdd --- /dev/null +++ b/src/main/java/com/gnerv/boot/common/EntityExtendBean.java @@ -0,0 +1,21 @@ +package com.gnerv.boot.common; + +import com.gnerv.boot.annotation.EntityExtend; + +import java.util.HashMap; +import java.util.Map; + +/** + *

+ * 存储包含实体扩展类注解的类 + *

+ * + * @author Gnerv LiGen + * @since 2019/9/4 + */ +public class EntityExtendBean { + + public static Map BEANS_MAP = new HashMap<>(); + + +} diff --git a/src/main/java/com/gnerv/boot/config/EntityExtendConfig.java b/src/main/java/com/gnerv/boot/config/EntityExtendConfig.java new file mode 100644 index 0000000..215ce3b --- /dev/null +++ b/src/main/java/com/gnerv/boot/config/EntityExtendConfig.java @@ -0,0 +1,23 @@ +package com.gnerv.boot.config; + +import com.gnerv.boot.interceptor.EntityExtendInterceptor; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + *

+ * 实体扩展配置 + *

+ * + * @author Gnerv LiGen + * @since 2019/9/4 + */ +@Configuration +public class EntityExtendConfig { + + @Bean + public EntityExtendInterceptor getEntityExtendInterceptor(){ + return new EntityExtendInterceptor(); + } + +} diff --git a/src/main/java/com/gnerv/boot/entity/BaseExtend.java b/src/main/java/com/gnerv/boot/entity/BaseExtend.java new file mode 100644 index 0000000..8020a41 --- /dev/null +++ b/src/main/java/com/gnerv/boot/entity/BaseExtend.java @@ -0,0 +1,39 @@ +package com.gnerv.boot.entity; + +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.extension.activerecord.Model; + +import java.io.Serializable; + +/** + *

+ * 实体扩展类 + *

+ * + * @author Gnerv LiGen + * @since 2019/9/4 + */ +public class BaseExtend extends Model implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 扩展字段 + */ + @TableField(exist = false) + private Object extend; + + public Object getExtend() { + return extend; + } + + public void setExtend(Object extend) { + this.extend = extend; + } + + @Override + public String toString() { + return JSON.toJSONString(this); + } +} diff --git a/src/main/java/com/gnerv/boot/interceptor/EntityExtendInterceptor.java b/src/main/java/com/gnerv/boot/interceptor/EntityExtendInterceptor.java new file mode 100644 index 0000000..222aaf5 --- /dev/null +++ b/src/main/java/com/gnerv/boot/interceptor/EntityExtendInterceptor.java @@ -0,0 +1,65 @@ +package com.gnerv.boot.interceptor; + +import org.apache.ibatis.executor.Executor; +import org.apache.ibatis.executor.resultset.ResultSetHandler; +import org.apache.ibatis.mapping.MappedStatement; +import org.apache.ibatis.mapping.ResultMap; +import org.apache.ibatis.mapping.ResultMapping; +import org.apache.ibatis.plugin.Interceptor; +import org.apache.ibatis.plugin.Intercepts; +import org.apache.ibatis.plugin.Invocation; +import org.apache.ibatis.plugin.Plugin; +import org.apache.ibatis.plugin.Signature; +import org.apache.ibatis.session.ResultHandler; +import org.apache.ibatis.session.RowBounds; +import org.springframework.stereotype.Component; + +import java.util.List; +import java.util.Map; +import java.util.Properties; + +@Component +@Intercepts({@Signature(type = Executor.class, method = "query", args = {MappedStatement.class, Object.class, RowBounds.class, ResultHandler.class}), + @Signature(type = Executor.class, method = "update", args = {MappedStatement.class, Object.class})}) +public class EntityExtendInterceptor implements Interceptor { + + + @Override + public Object intercept(Invocation invocation) throws Throwable { + Object[] args = invocation.getArgs(); + MappedStatement ms = (MappedStatement) args[0]; + List resultMaps = ms.getResultMaps(); + ResultMap resultMap = resultMaps.get(1); + List resultMappings = resultMap.getResultMappings(); + + + //ResultMap.Builder builder = new ResultMap.Builder(new Configuration(), ); + + return invocation.proceed(); + } + + @Override + public Object plugin(Object target) { + System.out.println(target); + return target instanceof ResultSetHandler ? Plugin.wrap(target, this) : target; + } + + @Override + public void setProperties(Properties properties) { + + } + + public Object resultExtend(Object proceed){ + if(proceed instanceof Integer){ + return proceed; + } + if(proceed instanceof List){ + List list = (List) proceed; + } + if(proceed instanceof Map){ + Map map = (Map) proceed; + } + return proceed; + } + +} diff --git a/src/main/java/com/gnerv/boot/listener/ContextRefreshedListener.java b/src/main/java/com/gnerv/boot/listener/ContextRefreshedListener.java new file mode 100644 index 0000000..903b4d5 --- /dev/null +++ b/src/main/java/com/gnerv/boot/listener/ContextRefreshedListener.java @@ -0,0 +1,40 @@ +package com.gnerv.boot.listener; + +import com.gnerv.boot.annotation.EntityExtend; +import com.gnerv.boot.common.EntityExtendBean; +import org.springframework.context.ApplicationListener; +import org.springframework.context.event.ContextRefreshedEvent; +import org.springframework.stereotype.Component; + +import java.util.HashMap; +import java.util.Map; + +/** + *

+ * spring 容器内容 监听器 + *

+ * + * @author Gnerv LiGen + * @since 2019/8/30 + */ +@Component +public class ContextRefreshedListener implements ApplicationListener { + + @Override + public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) { + saveEntityExtendBean(contextRefreshedEvent); + } + + public void saveEntityExtendBean(ContextRefreshedEvent contextRefreshedEvent) { + Map map = new HashMap<>(); + Map beans = contextRefreshedEvent.getApplicationContext().getBeansWithAnnotation(EntityExtend.class); + for (Object o : beans.values()) { + Class clazz = o.getClass(); + EntityExtend entityExtend = clazz.getAnnotation(EntityExtend.class); + map.put(clazz, entityExtend); + } + EntityExtendBean.BEANS_MAP = map; + } + + +} diff --git a/src/main/java/com/gnerv/boot/utils/MapperUtils.java b/src/main/java/com/gnerv/boot/utils/MapperUtils.java deleted file mode 100644 index 2a19e37..0000000 --- a/src/main/java/com/gnerv/boot/utils/MapperUtils.java +++ /dev/null @@ -1,89 +0,0 @@ -package com.gnerv.boot.utils; - -import org.apache.ibatis.mapping.MappedStatement; -import org.apache.ibatis.mapping.ResultMap; -import org.apache.ibatis.mapping.ResultMapping; - -import java.util.ArrayList; -import java.util.List; - -/** - *

- * Mapper工具类 - *

- * - * @author Gnerv LiGen - * @since 2019/5/31 - */ -public class MapperUtils { - - private MappedStatement buildMappedStatement(MappedStatement ms) { - MappedStatement.Builder builder = - new MappedStatement.Builder(ms.getConfiguration(), ms.getId(), ms.getSqlSource(), ms.getSqlCommandType()); - - builder.resource(ms.getResource()); - builder.fetchSize(ms.getFetchSize()); - builder.statementType(ms.getStatementType()); - builder.keyGenerator(ms.getKeyGenerator()); - builder.timeout(ms.getTimeout()); - builder.parameterMap(ms.getParameterMap()); - - List resultMaps = ms.getResultMaps(); - - List newResultMaps = new ArrayList<>(); - - for (ResultMap resultMap : resultMaps) { - List resultMappings = resultMap.getResultMappings(); - List composites = buildComposites(ms, resultMap); - - ResultMapping resultMapping = buildResultMapping(ms, resultMap, composites); - - List lists = new ArrayList(resultMappings); - lists.add(resultMapping); - - ResultMap newResultMap = new ResultMap.Builder(ms.getConfiguration(), resultMap.getId(), resultMap.getType(), lists).build(); - - newResultMaps.add(newResultMap); - } - - //builder.resultMaps(ms.getResultMaps()); - builder.resultMaps(newResultMaps); - builder.resultSetType(ms.getResultSetType()); - builder.cache(ms.getCache()); - builder.flushCacheRequired(ms.isFlushCacheRequired()); - builder.useCache(ms.isUseCache()); - - return builder.build(); - } - - private ResultMapping buildResultMapping(MappedStatement ms, ResultMap resultMap, List composites){ - Class type = resultMap.getType(); - EntityExtend entityExtend = EntityExtendBean.BEANS_MAP.get(type); - ResultMapping resultMapping = new ResultMapping.Builder( - ms.getConfiguration(), - entityExtend.property(), - entityExtend.column(), - entityExtend.type()) - .nestedQueryId(entityExtend.method()) - .composites(composites) - .build(); - - return resultMapping; - } - - private List buildComposites(MappedStatement ms, ResultMap resultMap){ - Class type = resultMap.getType(); - EntityExtend entityExtend = EntityExtendBean.BEANS_MAP.get(type); - ResultMapping resultMapping = new ResultMapping.Builder( - ms.getConfiguration(), - entityExtend.property(), - entityExtend.column(), - entityExtend.type()) - .nestedQueryId(entityExtend.method()) - .build(); - List composites = new ArrayList<>(); - composites.add(resultMapping); - return composites; - } - -} diff --git a/src/main/java/com/gnerv/boot/utils/ExcelUtils.java b/src/main/java/com/gnerv/boot/utils/excel/ExcelUtils.java similarity index 99% rename from src/main/java/com/gnerv/boot/utils/ExcelUtils.java rename to src/main/java/com/gnerv/boot/utils/excel/ExcelUtils.java index 4402fde..c37b434 100644 --- a/src/main/java/com/gnerv/boot/utils/ExcelUtils.java +++ b/src/main/java/com/gnerv/boot/utils/excel/ExcelUtils.java @@ -1,4 +1,4 @@ -package com.gnerv.boot.utils; +package com.gnerv.boot.utils.excel; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Cell; diff --git a/src/main/java/com/gnerv/boot/utils/LogUtils.java b/src/main/java/com/gnerv/boot/utils/log/LogUtils.java similarity index 99% rename from src/main/java/com/gnerv/boot/utils/LogUtils.java rename to src/main/java/com/gnerv/boot/utils/log/LogUtils.java index 32c9774..c79aee8 100644 --- a/src/main/java/com/gnerv/boot/utils/LogUtils.java +++ b/src/main/java/com/gnerv/boot/utils/log/LogUtils.java @@ -1,4 +1,4 @@ -package com.gnerv.boot.utils; +package com.gnerv.boot.utils.log; import com.alibaba.fastjson.JSON; import org.slf4j.Logger; diff --git a/src/main/java/com/gnerv/boot/utils/mapper/MapperUtils.java b/src/main/java/com/gnerv/boot/utils/mapper/MapperUtils.java new file mode 100644 index 0000000..4309716 --- /dev/null +++ b/src/main/java/com/gnerv/boot/utils/mapper/MapperUtils.java @@ -0,0 +1,74 @@ +package com.gnerv.boot.utils.mapper; + +import org.apache.ibatis.mapping.MappedStatement; +import org.apache.ibatis.mapping.ResultMap; +import org.apache.ibatis.mapping.ResultMapping; + +import java.util.ArrayList; +import java.util.List; + +/** + *

+ * Mapper工具类 + *

+ * + * @author Gnerv LiGen + * @since 2019/5/31 + */ +public class MapperUtils { + + private MappedStatement buildMappedStatement(MappedStatement ms) { + MappedStatement.Builder builder = new MappedStatement.Builder(ms.getConfiguration(), ms.getId(), ms.getSqlSource(), ms.getSqlCommandType()); + builder.resource(ms.getResource()); + builder.fetchSize(ms.getFetchSize()); + builder.statementType(ms.getStatementType()); + builder.keyGenerator(ms.getKeyGenerator()); + builder.timeout(ms.getTimeout()); + builder.parameterMap(ms.getParameterMap()); + builder.resultMaps(ms.getResultMaps()); + builder.resultSetType(ms.getResultSetType()); + builder.cache(ms.getCache()); + builder.flushCacheRequired(ms.isFlushCacheRequired()); + builder.useCache(ms.isUseCache()); + return builder.build(); + } + + private List buildResultMap(MappedStatement ms) { + List resultMaps = ms.getResultMaps(); + ResultMap build = null; + for (ResultMap resultMap : resultMaps) { + List composites = buildComposites(ms, resultMap); + List resultMappings = buildResultMapping(ms, resultMap, composites); + build = new ResultMap.Builder(ms.getConfiguration(), resultMap.getId(), resultMap.getType(), resultMappings).build(); + } + List lists = new ArrayList(resultMaps); + lists.add(build); + return resultMaps; + } + + private List buildResultMapping(MappedStatement ms, ResultMap resultMap, List composites) { + List resultMappings = resultMap.getResultMappings(); + String id = resultMap.getId(); + ResultMapping resultMapping = + new ResultMapping.Builder(ms.getConfiguration(), "extend", "id=b_id", List.class) + .nestedQueryId("") + .composites(composites) + .build(); + List lists = new ArrayList(resultMappings); + lists.add(resultMapping); + return lists; + } + + private List buildComposites(MappedStatement ms, ResultMap resultMap) { + List resultMappings = resultMap.getResultMappings(); + String id = resultMap.getId(); + ResultMapping resultMapping = + new ResultMapping.Builder(ms.getConfiguration(), "extend", "id=b_id", Object.class) + .nestedQueryId("") + .build(); + List lists = new ArrayList(resultMappings); + lists.add(resultMapping); + return lists; + } + +} diff --git a/src/main/java/com/gnerv/boot/utils/QrCodeUtils.java b/src/main/java/com/gnerv/boot/utils/qrcode/QrCodeUtils.java similarity index 76% rename from src/main/java/com/gnerv/boot/utils/QrCodeUtils.java rename to src/main/java/com/gnerv/boot/utils/qrcode/QrCodeUtils.java index ddc3dd6..ffa2b41 100644 --- a/src/main/java/com/gnerv/boot/utils/QrCodeUtils.java +++ b/src/main/java/com/gnerv/boot/utils/qrcode/QrCodeUtils.java @@ -1,4 +1,4 @@ -package com.gnerv.boot.utils; +package com.gnerv.boot.utils.qrcode; /** *

@@ -10,9 +10,4 @@ */ public class QrCodeUtils { - - - - - } diff --git a/src/main/java/com/gnerv/boot/utils/reflect/ReflectUtils.java b/src/main/java/com/gnerv/boot/utils/reflect/ReflectUtils.java new file mode 100644 index 0000000..46f104d --- /dev/null +++ b/src/main/java/com/gnerv/boot/utils/reflect/ReflectUtils.java @@ -0,0 +1,186 @@ +package com.gnerv.boot.utils.reflect; + +import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; + +/** + *

+ * 反射工具 + *

+ * + * @author Gnerv LiGen + * @since 2019/8/13 + */ +public class ReflectUtils { + + public static Object getObject(Class clazz) { + Object o = null; + try { + o = clazz.newInstance(); + } catch (InstantiationException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + return o; + } + + public static Class getClazz(String classPath) { + Class c = null; + try { + c = Class.forName(classPath); + } catch (ClassNotFoundException e) { + e.printStackTrace(); + } + return c; + } + + public static Class getClazz(String packagePath, String className) { + String classPath = packagePath + "." + className; + Class c = null; + try { + c = Class.forName(classPath); + } catch (ClassNotFoundException e) { + e.printStackTrace(); + } + return c; + } + + public static Object setAttributeValue(Object o, String fieldName, Object value){ + try { + Field declaredField = o.getClass().getDeclaredField(fieldName); + declaredField.setAccessible(true); + declaredField.set(o, value); + } catch (NoSuchFieldException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + return o; + } + + public static Object getAttributeValue(Object o, String fieldName){ + Field declaredField = getDeclaredField(o, fieldName); + declaredField.setAccessible(true); + Object value = null; + try { + value = declaredField.get(o); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + return value; + } + + public static Field getField(Object o, String fieldName){ + Field field = null; + try { + field = o.getClass().getField(fieldName); + } catch (NoSuchFieldException e) { + e.printStackTrace(); + } + return field; + } + + public static Field[] getFields(Object o){ + Field[] fields = o.getClass().getFields(); + return fields; + } + + public static Field getDeclaredField(Object o, String fieldName){ + Field declaredField = null; + try { + declaredField = o.getClass().getDeclaredField(fieldName); + } catch (NoSuchFieldException e) { + e.printStackTrace(); + } + return declaredField; + } + + public static Field[] getDeclaredFields(Object o, String fieldName){ + Field[] declaredFields = o.getClass().getDeclaredFields(); + return declaredFields; + } + + public static Method getMethod(Class c, String methodName, Class[] args) { + Method method = null; + try { + method = c.getMethod(methodName, args); + } catch (NoSuchMethodException e) { + e.printStackTrace(); + } + return method; + } + + public static Method getMethod(Class c, String methodName, Object[] args) { + Class[] clazz = new Class[args.length]; + for (int i = 0; i < args.length; i++) { + clazz[i] = args[i].getClass(); + } + Method method = null; + try { + method = c.getMethod(methodName, clazz); + } catch (NoSuchMethodException e) { + e.printStackTrace(); + } + return method; + } + + public static Method getMethod(String classPath, String methodName, Class[] args) { + Class c = getClazz(classPath); + Method method = null; + try { + method = c.getMethod(methodName, args); + } catch (NoSuchMethodException e) { + e.printStackTrace(); + } + return method; + } + + public static Method getDeclaredMethod(Class c, String methodName, Class[] args) { + Method method = null; + try { + method = c.getDeclaredMethod(methodName, args); + } catch (NoSuchMethodException e) { + e.printStackTrace(); + } + return method; + } + + public static Method getDeclaredMethod(String classPath, String methodName, Class[] args) { + Class c = getClazz(classPath); + Method method = null; + try { + method = c.getDeclaredMethod(methodName, args); + } catch (NoSuchMethodException e) { + e.printStackTrace(); + } + return method; + } + + public static Object runMethod(Class c, String methodName, Object[] args){ + Method method = getMethod(c, methodName, args); + Object invoke = null; + try { + invoke = method.invoke(c, args); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } catch (InvocationTargetException e) { + e.printStackTrace(); + } + return invoke; + } + + public static Object runMethod(Class c, Method method, Object[] args){ + Object invoke = null; + try { + invoke = method.invoke(c, args); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } catch (InvocationTargetException e) { + e.printStackTrace(); + } + return invoke; + } + +} diff --git a/src/main/java/com/gnerv/boot/utils/test/TestMain.java b/src/main/java/com/gnerv/boot/utils/test/TestMain.java index c2e3254..c1efb8d 100644 --- a/src/main/java/com/gnerv/boot/utils/test/TestMain.java +++ b/src/main/java/com/gnerv/boot/utils/test/TestMain.java @@ -1,12 +1,9 @@ package com.gnerv.boot.utils.test; -import com.gnerv.boot.utils.LogUtils; - public class TestMain { public static void main(String[] args) { - LogUtils.info("asdasdasdasdas{}{}{}", "555", "222", "333"); } diff --git a/src/main/java/com/gnerv/boot/utils/UUIDUtils.java b/src/main/java/com/gnerv/boot/utils/uuid/UUIDUtils.java similarity index 93% rename from src/main/java/com/gnerv/boot/utils/UUIDUtils.java rename to src/main/java/com/gnerv/boot/utils/uuid/UUIDUtils.java index f05a12f..bd529f2 100644 --- a/src/main/java/com/gnerv/boot/utils/UUIDUtils.java +++ b/src/main/java/com/gnerv/boot/utils/uuid/UUIDUtils.java @@ -1,4 +1,4 @@ -package com.gnerv.boot.utils; +package com.gnerv.boot.utils.uuid; import java.util.UUID; From 6154151d4f1bdeaca2982a9cd2c1076dce30685f Mon Sep 17 00:00:00 2001 From: ligen Date: Wed, 4 Sep 2019 14:19:30 +0800 Subject: [PATCH 7/8] v1 --- .gitignore | 38 +++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 03bf91f..a2e0f8f 100644 --- a/.gitignore +++ b/.gitignore @@ -11,4 +11,40 @@ buildNumber.properties # Avoid ignoring Maven wrapper jar file (.jar files are usually ignored) !/.mvn/wrapper/maven-wrapper.jar -.idea \ No newline at end of file +.idea + +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/** +!**/src/test/** + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +.mvn +mvnw* + + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ + +### VS Code ### +.vscode/ From ef275ba2e7704b6e0d7739976950dd0d59bada5f Mon Sep 17 00:00:00 2001 From: ligen Date: Wed, 4 Sep 2019 16:49:23 +0800 Subject: [PATCH 8/8] v1 --- pom.xml | 2 +- .../com/gnerv/boot/annotation/ESExcel.java | 6 ---- .../gnerv/boot/annotation/EntityExtend.java | 4 +-- .../interceptor/EntityExtendInterceptor.java | 35 +++++++++---------- .../gnerv/boot/utils/mapper/MapperUtils.java | 28 +++++++++------ 5 files changed, 38 insertions(+), 37 deletions(-) diff --git a/pom.xml b/pom.xml index 81e4afe..cde7b54 100644 --- a/pom.xml +++ b/pom.xml @@ -11,7 +11,7 @@ com.gnerv.boot utils - 1.0.0-RELEASE + 1.0.1-RELEASE gnerv-utils diff --git a/src/main/java/com/gnerv/boot/annotation/ESExcel.java b/src/main/java/com/gnerv/boot/annotation/ESExcel.java index f17663d..80c8f40 100644 --- a/src/main/java/com/gnerv/boot/annotation/ESExcel.java +++ b/src/main/java/com/gnerv/boot/annotation/ESExcel.java @@ -19,13 +19,7 @@ @Documented public @interface ESExcel { - /** - * 列索引 - */ int columnIndex() default 0; - /** - * 列名称 如果使用名称 则Excel表格第一行 必须为名称 - */ String columnName() default ""; } diff --git a/src/main/java/com/gnerv/boot/annotation/EntityExtend.java b/src/main/java/com/gnerv/boot/annotation/EntityExtend.java index 841e3b2..b9959ee 100644 --- a/src/main/java/com/gnerv/boot/annotation/EntityExtend.java +++ b/src/main/java/com/gnerv/boot/annotation/EntityExtend.java @@ -47,9 +47,9 @@ String parameter() default ""; // 对应主表字段名 - String mColumn(); + String mColumn() default ""; // 对应从表字段名 - String sColumn(); + String sColumn() default ""; } diff --git a/src/main/java/com/gnerv/boot/interceptor/EntityExtendInterceptor.java b/src/main/java/com/gnerv/boot/interceptor/EntityExtendInterceptor.java index 222aaf5..00b5d9f 100644 --- a/src/main/java/com/gnerv/boot/interceptor/EntityExtendInterceptor.java +++ b/src/main/java/com/gnerv/boot/interceptor/EntityExtendInterceptor.java @@ -1,5 +1,8 @@ package com.gnerv.boot.interceptor; +import com.gnerv.boot.annotation.EntityExtend; +import com.gnerv.boot.common.EntityExtendBean; +import com.gnerv.boot.utils.mapper.MapperUtils; import org.apache.ibatis.executor.Executor; import org.apache.ibatis.executor.resultset.ResultSetHandler; import org.apache.ibatis.mapping.MappedStatement; @@ -13,6 +16,7 @@ import org.apache.ibatis.session.ResultHandler; import org.apache.ibatis.session.RowBounds; import org.springframework.stereotype.Component; +import org.springframework.util.StringUtils; import java.util.List; import java.util.Map; @@ -28,19 +32,17 @@ public class EntityExtendInterceptor implements Interceptor { public Object intercept(Invocation invocation) throws Throwable { Object[] args = invocation.getArgs(); MappedStatement ms = (MappedStatement) args[0]; - List resultMaps = ms.getResultMaps(); - ResultMap resultMap = resultMaps.get(1); - List resultMappings = resultMap.getResultMappings(); - - - //ResultMap.Builder builder = new ResultMap.Builder(new Configuration(), ); - + EntityExtend entityExtend = checkEntityExtend(ms); + if(StringUtils.isEmpty(entityExtend)){ + return invocation.proceed(); + } + MappedStatement mappedStatement = MapperUtils.buildMappedStatement(ms, entityExtend); + args[0] = mappedStatement; return invocation.proceed(); } @Override public Object plugin(Object target) { - System.out.println(target); return target instanceof ResultSetHandler ? Plugin.wrap(target, this) : target; } @@ -49,17 +51,14 @@ public void setProperties(Properties properties) { } - public Object resultExtend(Object proceed){ - if(proceed instanceof Integer){ - return proceed; - } - if(proceed instanceof List){ - List list = (List) proceed; - } - if(proceed instanceof Map){ - Map map = (Map) proceed; + public EntityExtend checkEntityExtend(MappedStatement ms){ + EntityExtend entityExtend = null; + List resultMaps = ms.getResultMaps(); + for (ResultMap resultMap : resultMaps) { + Class type = resultMap.getType(); + entityExtend = EntityExtendBean.BEANS_MAP.get(type); } - return proceed; + return entityExtend; } } diff --git a/src/main/java/com/gnerv/boot/utils/mapper/MapperUtils.java b/src/main/java/com/gnerv/boot/utils/mapper/MapperUtils.java index 4309716..b0f81ea 100644 --- a/src/main/java/com/gnerv/boot/utils/mapper/MapperUtils.java +++ b/src/main/java/com/gnerv/boot/utils/mapper/MapperUtils.java @@ -1,5 +1,8 @@ package com.gnerv.boot.utils.mapper; +import com.gnerv.boot.annotation.EntityExtend; +import com.gnerv.boot.common.EntityExtendBean; +import com.gnerv.boot.utils.reflect.ReflectUtils; import org.apache.ibatis.mapping.MappedStatement; import org.apache.ibatis.mapping.ResultMap; import org.apache.ibatis.mapping.ResultMapping; @@ -17,7 +20,10 @@ */ public class MapperUtils { - private MappedStatement buildMappedStatement(MappedStatement ms) { + public static String EXTEND = "extend"; + + + public static MappedStatement buildMappedStatement(MappedStatement ms, EntityExtend entityExtend) { MappedStatement.Builder builder = new MappedStatement.Builder(ms.getConfiguration(), ms.getId(), ms.getSqlSource(), ms.getSqlCommandType()); builder.resource(ms.getResource()); builder.fetchSize(ms.getFetchSize()); @@ -25,7 +31,9 @@ private MappedStatement buildMappedStatement(MappedStatement ms) { builder.keyGenerator(ms.getKeyGenerator()); builder.timeout(ms.getTimeout()); builder.parameterMap(ms.getParameterMap()); - builder.resultMaps(ms.getResultMaps()); + + builder.resultMaps(buildResultMap(ms, entityExtend)); + builder.resultSetType(ms.getResultSetType()); builder.cache(ms.getCache()); builder.flushCacheRequired(ms.isFlushCacheRequired()); @@ -33,12 +41,12 @@ private MappedStatement buildMappedStatement(MappedStatement ms) { return builder.build(); } - private List buildResultMap(MappedStatement ms) { + public static List buildResultMap(MappedStatement ms, EntityExtend entityExtend) { List resultMaps = ms.getResultMaps(); ResultMap build = null; for (ResultMap resultMap : resultMaps) { - List composites = buildComposites(ms, resultMap); - List resultMappings = buildResultMapping(ms, resultMap, composites); + List composites = buildComposites(ms, resultMap, entityExtend); + List resultMappings = buildResultMappings(ms, resultMap, composites, entityExtend); build = new ResultMap.Builder(ms.getConfiguration(), resultMap.getId(), resultMap.getType(), resultMappings).build(); } List lists = new ArrayList(resultMaps); @@ -46,12 +54,12 @@ private List buildResultMap(MappedStatement ms) { return resultMaps; } - private List buildResultMapping(MappedStatement ms, ResultMap resultMap, List composites) { + public static List buildResultMappings(MappedStatement ms, ResultMap resultMap, List composites, EntityExtend entityExtend) { List resultMappings = resultMap.getResultMappings(); String id = resultMap.getId(); ResultMapping resultMapping = - new ResultMapping.Builder(ms.getConfiguration(), "extend", "id=b_id", List.class) - .nestedQueryId("") + new ResultMapping.Builder(ms.getConfiguration(), EXTEND, entityExtend.parameter() + "=" + entityExtend.mColumn(), List.class) + .nestedQueryId(entityExtend.select()) .composites(composites) .build(); List lists = new ArrayList(resultMappings); @@ -59,11 +67,11 @@ private List buildResultMapping(MappedStatement ms, ResultMap res return lists; } - private List buildComposites(MappedStatement ms, ResultMap resultMap) { + public static List buildComposites(MappedStatement ms, ResultMap resultMap, EntityExtend entityExtend) { List resultMappings = resultMap.getResultMappings(); String id = resultMap.getId(); ResultMapping resultMapping = - new ResultMapping.Builder(ms.getConfiguration(), "extend", "id=b_id", Object.class) + new ResultMapping.Builder(ms.getConfiguration(), entityExtend.parameter(), entityExtend.mColumn(), Object.class) .nestedQueryId("") .build(); List lists = new ArrayList(resultMappings);