From 336c41557a699219b38d9105fec64db4a5544d9a Mon Sep 17 00:00:00 2001 From: "defeng.wang" Date: Wed, 24 Jun 2020 11:51:19 +0800 Subject: [PATCH 1/2] typeHandler --- dalgen/abssqrTables/COLL_ORG.xml | 189 ------------------ dalgen/abssqrTables/Ste.xml | 15 -- dalgen/abssqrTables/TABLE1.xml | 76 +++++++ dalgen/config/config.xml | 8 +- dalgen/ext/mybatis-config.xml.ftl | 39 ---- mybatis-maven-plugin.iml | 8 +- pom.xml | 8 +- .../mybatis/gen/dataloaders/DalgenLoader.java | 9 + .../mybatis/gen/model/dbtable/Column.java | 12 ++ .../gen/model/dbtable/NormalIndex.java | 2 +- .../gen/model/dbtable/UniqueIndex.java | 2 +- .../repository/db/MySQLTableRepository.java | 12 ++ src/main/resources/dalgen/config/config.xml | 10 +- .../configTables/COLL_GYS_STG_RESULT.xml | 139 ------------- .../resources/dalgen/configTables/TABLE1.xml | 76 +++++++ .../dalgen/templates/dalgen/XMLMapper.xml.ftl | 4 +- .../dalgen/templates/lib/function.ftl | 6 + .../cn/dalgen/mybatis/gen/DalgenMojoTest.java | 2 +- 18 files changed, 210 insertions(+), 407 deletions(-) delete mode 100644 dalgen/abssqrTables/COLL_ORG.xml delete mode 100644 dalgen/abssqrTables/Ste.xml create mode 100644 dalgen/abssqrTables/TABLE1.xml delete mode 100644 src/main/resources/dalgen/configTables/COLL_GYS_STG_RESULT.xml create mode 100644 src/main/resources/dalgen/configTables/TABLE1.xml diff --git a/dalgen/abssqrTables/COLL_ORG.xml b/dalgen/abssqrTables/COLL_ORG.xml deleted file mode 100644 index 3c8588e..0000000 --- a/dalgen/abssqrTables/COLL_ORG.xml +++ /dev/null @@ -1,189 +0,0 @@ - - - - - - ID,API_KEY,STATUS,ORG_CODE,ORG_NAME - ,ORG_TYPE,SECRET_KEY,GMT_CREATE,GMT_MODIFIED - - - - - sf.ID,sf.API_KEY,sf.STATUS,sf.ORG_CODE,sf.ORG_NAME - ,sf.ORG_TYPE,sf.SECRET_KEY,sf.GMT_CREATE,sf.GMT_MODIFIED - - - - - SELECT - LAST_INSERT_ID() - - - - - - - - INSERT INTO coll_org( - ID - ,API_KEY - ,STATUS - ,ORG_CODE - ,ORG_NAME - ,ORG_TYPE - ,SECRET_KEY - ,GMT_CREATE - ,GMT_MODIFIED - )VALUES - - ( - null - , #{item.apiKey,jdbcType=VARCHAR} - , #{item.status,jdbcType=VARCHAR} - , #{item.orgCode,jdbcType=VARCHAR} - , #{item.orgName,jdbcType=VARCHAR} - , #{item.orgType,jdbcType=VARCHAR} - , #{item.secretKey,jdbcType=VARCHAR} - , now() - , now() - ) - - - - - - - - - - SELECT * - FROM coll_org - WHERE - - - - - - - - - - - - - - SELECT * - FROM coll_org - WHERE - - - - - - - - - - - - - - SELECT * - FROM coll_org - WHERE - - - - - - - - SELECT * - FROM coll_org - WHERE - - - - - -
diff --git a/dalgen/abssqrTables/Ste.xml b/dalgen/abssqrTables/Ste.xml deleted file mode 100644 index e2cc08a..0000000 --- a/dalgen/abssqrTables/Ste.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - -
diff --git a/dalgen/abssqrTables/TABLE1.xml b/dalgen/abssqrTables/TABLE1.xml new file mode 100644 index 0000000..8b2c6f6 --- /dev/null +++ b/dalgen/abssqrTables/TABLE1.xml @@ -0,0 +1,76 @@ + + + + + + + ID,CARD + + + + + sf.ID,sf.CARD + + + + + + + SELECT + LAST_INSERT_ID() + + + + + + + + INSERT INTO table1( + ID + ,CARD + )VALUES + + ( + null + , #{item.card,jdbcType=VARCHAR} + ) + + + + + + + + + + SELECT * + FROM table1 + WHERE + + + +
diff --git a/dalgen/config/config.xml b/dalgen/config/config.xml index de6d71d..7b78f77 100644 --- a/dalgen/config/config.xml +++ b/dalgen/config/config.xml @@ -30,10 +30,10 @@ --> - - - - + + + + diff --git a/dalgen/ext/mybatis-config.xml.ftl b/dalgen/ext/mybatis-config.xml.ftl index 1dd812a..e774d24 100644 --- a/dalgen/ext/mybatis-config.xml.ftl +++ b/dalgen/ext/mybatis-config.xml.ftl @@ -4,54 +4,15 @@ -<#assign enumTypes = pp.newWritableSequence()> -<#assign jsonTypes = pp.newWritableSequence()> -<#assign othTypes = pp.newWritableSequence()> -<#list tmpTables as tmpTable> - <#list tmpTable.columns as column> - <#if column.javatype?lower_case?starts_with(dalgen.config.getCustomerProperty("enumPathBase")!null)> - <#if !enumTypes?seq_contains(column.javatype)> - <@pp.add seq=enumTypes value="${column.javatype}" /> - - <#elseif column.javatype?lower_case?starts_with(dalgen.config.getCustomerProperty("jsonPathBase")!null)> - <#if !jsonTypes?seq_contains(column.javatype)> - <@pp.add seq=jsonTypes value="${column.javatype}" /> - - <#elseif !othTypes?seq_contains(column.javatype) && !column.javatype?lower_case?starts_with("com.alibaba.hr.common.util.encrypt")> - <@pp.add seq=othTypes value="${column.javatype}" /> - - - -<#-- - - - - - - - -<#list enumTypes as enumType> - - -<#list jsonTypes as jsonType> - - -<#list othTypes as othType> - - ---> - <#--<#list dalgen.doMappers as doMapper>--> - <#----> - <#----> diff --git a/mybatis-maven-plugin.iml b/mybatis-maven-plugin.iml index f26e155..38cc0b8 100644 --- a/mybatis-maven-plugin.iml +++ b/mybatis-maven-plugin.iml @@ -1,10 +1,5 @@ - - - - - @@ -12,7 +7,6 @@ - @@ -65,7 +59,7 @@ - + diff --git a/pom.xml b/pom.xml index eab9cc5..394e43b 100644 --- a/pom.xml +++ b/pom.xml @@ -9,7 +9,7 @@ maven-plugin ${project.groupId}:${project.artifactId} - 1.2.4.0 + 1.3.1 https://gitee.com/bangis/mybatis.generator mybatis generator mapper.xml mapper.java dao.java do.java paging map list @@ -118,7 +118,7 @@ mysql mysql-connector-java - 5.1.33 + 5.1.47 @@ -207,10 +207,10 @@ cn.dalgen.plugins mybatis-maven-plugin - 1.2.4.0 + 1.3.1 srcTmp - false + true dalgen/template diff --git a/src/main/java/cn/dalgen/mybatis/gen/dataloaders/DalgenLoader.java b/src/main/java/cn/dalgen/mybatis/gen/dataloaders/DalgenLoader.java index 26d0488..f21e7fb 100755 --- a/src/main/java/cn/dalgen/mybatis/gen/dataloaders/DalgenLoader.java +++ b/src/main/java/cn/dalgen/mybatis/gen/dataloaders/DalgenLoader.java @@ -301,6 +301,15 @@ public class DalgenLoader extends AbstractDalgenLoader { column.setSqlType(cfColumn.getSqlType()); column.setTestVal(cfColumn.getTestVal()); column.setRemarks(cfColumn.getRemark()); + String typeHandler = cfColumn.getTypeHandler() ; + if(StringUtils.isBlank(typeHandler)) { + Column columnByName = table.getColumnByName(column.getSqlName()); + if (columnByName != null) { + typeHandler= columnByName.getTypeHandler(); + } + } + column.setTypeHandler(typeHandler); + resultMap.addColumn(column); resultMap.addImport(cfColumn.getJavatype()); Filelds filelds = new Filelds(); diff --git a/src/main/java/cn/dalgen/mybatis/gen/model/dbtable/Column.java b/src/main/java/cn/dalgen/mybatis/gen/model/dbtable/Column.java index e6628ba..c5c3bb0 100755 --- a/src/main/java/cn/dalgen/mybatis/gen/model/dbtable/Column.java +++ b/src/main/java/cn/dalgen/mybatis/gen/model/dbtable/Column.java @@ -33,6 +33,10 @@ public class Column implements Comparable { * The Default value. */ private String defaultValue; + /** + * typeHandler + */ + private String typeHandler; /** * Gets remarks. @@ -205,4 +209,12 @@ public class Column implements Comparable { public int hashCode() { return super.hashCode(); } + + public String getTypeHandler() { + return typeHandler; + } + + public void setTypeHandler(String typeHandler) { + this.typeHandler = typeHandler; + } } diff --git a/src/main/java/cn/dalgen/mybatis/gen/model/dbtable/NormalIndex.java b/src/main/java/cn/dalgen/mybatis/gen/model/dbtable/NormalIndex.java index bfbc7bc..d4addce 100755 --- a/src/main/java/cn/dalgen/mybatis/gen/model/dbtable/NormalIndex.java +++ b/src/main/java/cn/dalgen/mybatis/gen/model/dbtable/NormalIndex.java @@ -3,7 +3,7 @@ package cn.dalgen.mybatis.gen.model.dbtable; import java.util.List; import com.google.common.collect.Lists; -import com.mysql.jdbc.StringUtils; +import org.apache.commons.lang.StringUtils; /** * Created by bangis.wangdf on 15/12/5. Desc 普通索引 diff --git a/src/main/java/cn/dalgen/mybatis/gen/model/dbtable/UniqueIndex.java b/src/main/java/cn/dalgen/mybatis/gen/model/dbtable/UniqueIndex.java index 0861e9a..451a00d 100755 --- a/src/main/java/cn/dalgen/mybatis/gen/model/dbtable/UniqueIndex.java +++ b/src/main/java/cn/dalgen/mybatis/gen/model/dbtable/UniqueIndex.java @@ -3,7 +3,7 @@ package cn.dalgen.mybatis.gen.model.dbtable; import java.util.List; import com.google.common.collect.Lists; -import com.mysql.jdbc.StringUtils; +import org.apache.commons.lang.StringUtils; /** * Created by bangis.wangdf on 15/12/5. Desc 唯一索引 diff --git a/src/main/java/cn/dalgen/mybatis/gen/model/repository/db/MySQLTableRepository.java b/src/main/java/cn/dalgen/mybatis/gen/model/repository/db/MySQLTableRepository.java index d39d3cd..42fef7a 100755 --- a/src/main/java/cn/dalgen/mybatis/gen/model/repository/db/MySQLTableRepository.java +++ b/src/main/java/cn/dalgen/mybatis/gen/model/repository/db/MySQLTableRepository.java @@ -321,11 +321,23 @@ public class MySQLTableRepository { column.setJavaName(CamelCaseUtils.toCamelCase(column.getSqlName())); column.setJavaType(getJavaType(column, cfColumns)); column.setTestVal(getTestVal(column, cfColumns)); + column.setTypeHandler(getTypeHandler(column, cfColumns)); column.setRemarks(getRsStr(resultSet, "REMARKS", column.getSqlName())); table.addColumn(column); } } + private String getTypeHandler(Column column, List cfColumns) { + if (cfColumns != null && cfColumns.size() > 0) { + for (CfColumn cfColumn : cfColumns) { + if (StringUtils.equalsIgnoreCase(column.getSqlName(), cfColumn.getName())) { + return cfColumn.getTypeHandler(); + } + } + } + return null; + } + private String getTestVal(Column column, List cfColumns) { if (cfColumns != null && cfColumns.size() > 0) { for (CfColumn cfColumn : cfColumns) { diff --git a/src/main/resources/dalgen/config/config.xml b/src/main/resources/dalgen/config/config.xml index ee85be4..d2933bb 100755 --- a/src/main/resources/dalgen/config/config.xml +++ b/src/main/resources/dalgen/config/config.xml @@ -23,11 +23,11 @@ - - - - - + + + + + diff --git a/src/main/resources/dalgen/configTables/COLL_GYS_STG_RESULT.xml b/src/main/resources/dalgen/configTables/COLL_GYS_STG_RESULT.xml deleted file mode 100644 index 028cb2e..0000000 --- a/src/main/resources/dalgen/configTables/COLL_GYS_STG_RESULT.xml +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - ID,ORG_CASE_ID,STG_RESULT,ACTIVE_SCORE,CASE_NO - ,ID_CARD,ORG_CODE,IMPORT_CODE,PERSON_NAME,GMT_CREATE - ,GMT_MODIFIED - - - - - sf.ID,sf.ORG_CASE_ID,sf.STG_RESULT,sf.ACTIVE_SCORE,sf.CASE_NO - ,sf.ID_CARD,sf.ORG_CODE,sf.IMPORT_CODE,sf.PERSON_NAME,sf.GMT_CREATE - ,sf.GMT_MODIFIED - - - - - SELECT - LAST_INSERT_ID() - - - - - - - - INSERT INTO coll_gys_stg_result( - ID - ,ORG_CASE_ID - ,STG_RESULT - ,ACTIVE_SCORE - ,CASE_NO - ,ID_CARD - ,ORG_CODE - ,IMPORT_CODE - ,PERSON_NAME - ,GMT_CREATE - ,GMT_MODIFIED - )VALUES - - ( - null - , #{item.orgCaseId,jdbcType=BIGINT} - , #{item.stgResult,jdbcType=OTHER} - , #{item.activeScore,jdbcType=DOUBLE} - , #{item.caseNo,jdbcType=VARCHAR} - , #{item.idCard,jdbcType=VARCHAR} - , #{item.orgCode,jdbcType=VARCHAR} - , #{item.importCode,jdbcType=VARCHAR} - , #{item.personName,jdbcType=VARCHAR} - , now() - , now() - ) - - - - - - - - - - SELECT * - FROM coll_gys_stg_result - WHERE - - - - - - SELECT * - FROM coll_gys_stg_result - WHERE - - - - - SELECT * - FROM coll_gys_stg_result - WHERE - - -
diff --git a/src/main/resources/dalgen/configTables/TABLE1.xml b/src/main/resources/dalgen/configTables/TABLE1.xml new file mode 100644 index 0000000..8b2c6f6 --- /dev/null +++ b/src/main/resources/dalgen/configTables/TABLE1.xml @@ -0,0 +1,76 @@ + + + + + + + ID,CARD + + + + + sf.ID,sf.CARD + + + + + + + SELECT + LAST_INSERT_ID() + + + + + + + + INSERT INTO table1( + ID + ,CARD + )VALUES + + ( + null + , #{item.card,jdbcType=VARCHAR} + ) + + + + + + + + + + SELECT * + FROM table1 + WHERE + + + +
diff --git a/src/main/resources/dalgen/templates/dalgen/XMLMapper.xml.ftl b/src/main/resources/dalgen/templates/dalgen/XMLMapper.xml.ftl index 4acdc18..c606d93 100755 --- a/src/main/resources/dalgen/templates/dalgen/XMLMapper.xml.ftl +++ b/src/main/resources/dalgen/templates/dalgen/XMLMapper.xml.ftl @@ -13,7 +13,7 @@ <#if xmlMapper.table.columnList?size gt 0> <#list xmlMapper.table.columnList as column> - <#if column.sqlName?upper_case =="ID"><#else> + <#if column.sqlName?upper_case =="ID"><#else> @@ -26,7 +26,7 @@ <#list resultMap.columnList as column> - <#if column.sqlName?upper_case =="ID"><#else> + <#if column.sqlName?upper_case =="ID"><#else> <#list resultMap.associations as association> diff --git a/src/main/resources/dalgen/templates/lib/function.ftl b/src/main/resources/dalgen/templates/lib/function.ftl index fa7a0c3..356816d 100644 --- a/src/main/resources/dalgen/templates/lib/function.ftl +++ b/src/main/resources/dalgen/templates/lib/function.ftl @@ -17,6 +17,12 @@ <#return "1"> +<#function typeHandler column> + <#if column.typeHandler??><#return "typeHandler=\"${column.typeHandler}\"" > + <#return ""> + + + <#-- test默认值 --> <#function paramVal param columnList> <#list columnList as column> diff --git a/src/test/java/cn/dalgen/mybatis/gen/DalgenMojoTest.java b/src/test/java/cn/dalgen/mybatis/gen/DalgenMojoTest.java index e072a64..4c4e9f2 100644 --- a/src/test/java/cn/dalgen/mybatis/gen/DalgenMojoTest.java +++ b/src/test/java/cn/dalgen/mybatis/gen/DalgenMojoTest.java @@ -57,7 +57,7 @@ public class DalgenMojoTest extends TestCase{ try { ConfigUtil.readConfig(config); - ConfigUtil.setCmd("coll_gys_stg_result"); + ConfigUtil.setCmd("table1"); } catch (IOException e) { LOG.error(e); } -- Gitee From 30064bc9775d2ed6943f374f01cfa4eb59b2bd2f Mon Sep 17 00:00:00 2001 From: "defeng.wang" Date: Wed, 24 Jun 2020 11:51:42 +0800 Subject: [PATCH 2/2] typeHandler --- dalgen/template/dalgen/BasePage.java.ftl | 284 ++++++++++++++ dalgen/template/dalgen/DAO.java.ftl | 109 ++++++ .../template/dalgen/DBPreCheckMapper.java.ftl | 17 + .../template/dalgen/DBPreCheckMapper.xml.ftl | 34 ++ dalgen/template/dalgen/DO.java.ftl | 44 +++ dalgen/template/dalgen/DOMapper.java.ftl | 29 ++ dalgen/template/dalgen/Page.java.ftl | 40 ++ dalgen/template/dalgen/ResultMap.java.ftl | 114 ++++++ dalgen/template/dalgen/XMLMapper.xml.ftl | 91 +++++ dalgen/template/init/initTableXml.ftl | 122 ++++++ dalgen/template/lib/function.ftl | 119 ++++++ dalgen/template/lib/lib.ftl | 151 ++++++++ dalgen/template/lib/macro.ftl | 82 ++++ .../java/example/abssqr/dao/Table1DAO.java | 51 +++ .../main/java/example/abssqr/do/Table1DO.java | 49 +++ .../abssqr/mapper/DBPreCheckMapper.java | 9 + .../example/abssqr/mapper/Table1Mapper.java | 38 ++ .../java/example/abssqr/resultmap/xxx.java | 39 ++ .../mapper/abssqr/DBPreCheckMapper.xml | 18 + .../resources/mapper/abssqr/Table1Mapper.xml | 71 ++++ srcTmp/main/resources/mybatis-config.xml | 15 + .../mybatis-maven-plugin/plugin-help.xml | 83 ++++ target/classes/META-INF/maven/plugin.xml | 354 ++++++++++++++++++ .../cn/dalgen/mybatis/gen/DalgenMojo.class | Bin 0 -> 9894 bytes .../mybatis/gen/common/FileNameSelector.class | Bin 0 -> 1063 bytes .../dataloaders/AbstractDalgenLoader.class | Bin 0 -> 2880 bytes .../gen/dataloaders/DalgenLoader.class | Bin 0 -> 32856 bytes .../gen/dataloaders/DalgenTbLoader.class | Bin 0 -> 3514 bytes .../gen/datasources/DBConnectionFactory.class | Bin 0 -> 2266 bytes .../datasources/DalgenConnectionDriver.class | Bin 0 -> 250 bytes .../datasources/JdbcConnectionDriver.class | Bin 0 -> 1709 bytes .../mybatis/gen/enums/MultiplicityEnum.class | Bin 0 -> 1663 bytes .../mybatis/gen/enums/PagingCntTypeEnum.class | Bin 0 -> 1744 bytes .../mybatis/gen/enums/ParamTypeEnum.class | Bin 0 -> 1620 bytes .../dalgen/mybatis/gen/enums/SystemEnum.class | Bin 0 -> 1349 bytes .../mybatis/gen/enums/TypeMapEnum.class | Bin 0 -> 3866 bytes .../gen/exception/DalgenException.class | Bin 0 -> 651 bytes .../cn/dalgen/mybatis/gen/model/Config.class | Bin 0 -> 5157 bytes .../cn/dalgen/mybatis/gen/model/Gen.class | Bin 0 -> 6891 bytes .../gen/model/config/CfAssociation.class | Bin 0 -> 1713 bytes .../gen/model/config/CfCollection.class | Bin 0 -> 1710 bytes .../mybatis/gen/model/config/CfColumn.class | Bin 0 -> 1745 bytes .../gen/model/config/CfOperation.class | Bin 0 -> 7295 bytes .../gen/model/config/CfResultMap.class | Bin 0 -> 3136 bytes .../mybatis/gen/model/config/CfTable.class | Bin 0 -> 4552 bytes .../gen/model/config/DeleteColumn.class | Bin 0 -> 1431 bytes .../mybatis/gen/model/db/DataBase.class | Bin 0 -> 4471 bytes .../mybatis/gen/model/dbtable/Column.class | Bin 0 -> 2669 bytes .../gen/model/dbtable/NormalIndex.class | Bin 0 -> 1920 bytes .../gen/model/dbtable/PrimaryKeys.class | Bin 0 -> 1593 bytes .../mybatis/gen/model/dbtable/Table$1.class | Bin 0 -> 1835 bytes .../mybatis/gen/model/dbtable/Table.class | Bin 0 -> 5043 bytes .../gen/model/dbtable/UniqueIndex.class | Bin 0 -> 1917 bytes .../dalgen/mybatis/gen/model/java/Base.class | Bin 0 -> 3571 bytes .../dalgen/mybatis/gen/model/java/DAO.class | Bin 0 -> 966 bytes .../cn/dalgen/mybatis/gen/model/java/DO.class | Bin 0 -> 975 bytes .../mybatis/gen/model/java/DOMapper.class | Bin 0 -> 1715 bytes .../mybatis/gen/model/java/Filelds.class | Bin 0 -> 1320 bytes .../mybatis/gen/model/java/Paging.class | Bin 0 -> 1050 bytes .../mybatis/gen/model/java/ResultMap$1.class | Bin 0 -> 1821 bytes .../mybatis/gen/model/java/ResultMap.class | Bin 0 -> 3068 bytes .../mybatis/gen/model/java/XmlMapper.class | Bin 0 -> 2796 bytes .../java/domapper/DOMapperMethod$1.class | Bin 0 -> 1819 bytes .../model/java/domapper/DOMapperMethod.class | Bin 0 -> 5789 bytes .../java/domapper/DOMapperMethodParam.class | Bin 0 -> 1661 bytes .../model/repository/CfTableRepository.class | Bin 0 -> 23305 bytes .../repository/IgnoreDTDEntityResolver.class | Bin 0 -> 927 bytes .../model/repository/TableRepository.class | Bin 0 -> 2313 bytes .../repository/db/MySQLTableRepository.class | Bin 0 -> 13551 bytes .../repository/db/OBTableRepository.class | Bin 0 -> 8625 bytes .../repository/db/OracleTableRepository.class | Bin 0 -> 13257 bytes .../mybatis/gen/utils/CamelCaseUtils.class | Bin 0 -> 2574 bytes .../cn/dalgen/mybatis/gen/utils/CmdUtil.class | Bin 0 -> 3035 bytes .../dalgen/mybatis/gen/utils/ConfInit.class | Bin 0 -> 5416 bytes .../dalgen/mybatis/gen/utils/ConfigUtil.class | Bin 0 -> 5990 bytes .../mybatis/gen/utils/StringDalUtil.class | Bin 0 -> 1137 bytes .../cn/dalgen/mybatis/gen/utils/SysUtil.class | Bin 0 -> 2445 bytes target/classes/dalgen/config/README.md | 7 + target/classes/dalgen/config/config.xml | 94 +++++ .../dalgen/config/table-config-1.0.dtd | 235 ++++++++++++ target/classes/dalgen/configTables/TABLE1.xml | 76 ++++ .../classes/dalgen/ext/mybatis-config.xml.ftl | 57 +++ .../dalgen/templates/dalgen/BasePage.java.ftl | 284 ++++++++++++++ .../dalgen/templates/dalgen/DAO.java.ftl | 109 ++++++ .../dalgen/DBPreCheckMapper.java.ftl | 17 + .../templates/dalgen/DBPreCheckMapper.xml.ftl | 34 ++ .../dalgen/templates/dalgen/DO.java.ftl | 44 +++ .../dalgen/templates/dalgen/DOMapper.java.ftl | 29 ++ .../dalgen/templates/dalgen/Page.java.ftl | 40 ++ .../templates/dalgen/ResultMap.java.ftl | 114 ++++++ .../dalgen/templates/dalgen/XMLMapper.xml.ftl | 91 +++++ .../dalgen/templates/init/initTableXml.ftl | 122 ++++++ .../classes/dalgen/templates/lib/function.ftl | 119 ++++++ target/classes/dalgen/templates/lib/lib.ftl | 151 ++++++++ target/classes/dalgen/templates/lib/macro.ftl | 82 ++++ target/maven-archiver/pom.properties | 5 + .../compile/default-compile/createdFiles.lst | 54 +++ .../compile/default-compile/inputFiles.lst | 51 +++ target/mybatis-maven-plugin-1.3.1-sources.jar | Bin 0 -> 92551 bytes ...mybatis-maven-plugin-1.3.1-sources.jar.asc | 16 + target/mybatis-maven-plugin-1.3.1.jar | Bin 0 -> 135905 bytes target/mybatis-maven-plugin-1.3.1.jar.asc | 16 + target/mybatis-maven-plugin-1.3.1.pom | 231 ++++++++++++ target/mybatis-maven-plugin-1.3.1.pom.asc | 16 + 104 files changed, 4057 insertions(+) create mode 100644 dalgen/template/dalgen/BasePage.java.ftl create mode 100644 dalgen/template/dalgen/DAO.java.ftl create mode 100644 dalgen/template/dalgen/DBPreCheckMapper.java.ftl create mode 100644 dalgen/template/dalgen/DBPreCheckMapper.xml.ftl create mode 100644 dalgen/template/dalgen/DO.java.ftl create mode 100644 dalgen/template/dalgen/DOMapper.java.ftl create mode 100644 dalgen/template/dalgen/Page.java.ftl create mode 100644 dalgen/template/dalgen/ResultMap.java.ftl create mode 100644 dalgen/template/dalgen/XMLMapper.xml.ftl create mode 100644 dalgen/template/init/initTableXml.ftl create mode 100644 dalgen/template/lib/function.ftl create mode 100644 dalgen/template/lib/lib.ftl create mode 100644 dalgen/template/lib/macro.ftl create mode 100644 srcTmp/main/java/example/abssqr/dao/Table1DAO.java create mode 100644 srcTmp/main/java/example/abssqr/do/Table1DO.java create mode 100644 srcTmp/main/java/example/abssqr/mapper/DBPreCheckMapper.java create mode 100644 srcTmp/main/java/example/abssqr/mapper/Table1Mapper.java create mode 100644 srcTmp/main/java/example/abssqr/resultmap/xxx.java create mode 100644 srcTmp/main/resources/mapper/abssqr/DBPreCheckMapper.xml create mode 100644 srcTmp/main/resources/mapper/abssqr/Table1Mapper.xml create mode 100644 srcTmp/main/resources/mybatis-config.xml create mode 100644 target/classes/META-INF/maven/cn.dalgen.plugins/mybatis-maven-plugin/plugin-help.xml create mode 100644 target/classes/META-INF/maven/plugin.xml create mode 100644 target/classes/cn/dalgen/mybatis/gen/DalgenMojo.class create mode 100644 target/classes/cn/dalgen/mybatis/gen/common/FileNameSelector.class create mode 100644 target/classes/cn/dalgen/mybatis/gen/dataloaders/AbstractDalgenLoader.class create mode 100644 target/classes/cn/dalgen/mybatis/gen/dataloaders/DalgenLoader.class create mode 100644 target/classes/cn/dalgen/mybatis/gen/dataloaders/DalgenTbLoader.class create mode 100644 target/classes/cn/dalgen/mybatis/gen/datasources/DBConnectionFactory.class create mode 100644 target/classes/cn/dalgen/mybatis/gen/datasources/DalgenConnectionDriver.class create mode 100644 target/classes/cn/dalgen/mybatis/gen/datasources/JdbcConnectionDriver.class create mode 100644 target/classes/cn/dalgen/mybatis/gen/enums/MultiplicityEnum.class create mode 100644 target/classes/cn/dalgen/mybatis/gen/enums/PagingCntTypeEnum.class create mode 100644 target/classes/cn/dalgen/mybatis/gen/enums/ParamTypeEnum.class create mode 100644 target/classes/cn/dalgen/mybatis/gen/enums/SystemEnum.class create mode 100644 target/classes/cn/dalgen/mybatis/gen/enums/TypeMapEnum.class create mode 100644 target/classes/cn/dalgen/mybatis/gen/exception/DalgenException.class create mode 100644 target/classes/cn/dalgen/mybatis/gen/model/Config.class create mode 100644 target/classes/cn/dalgen/mybatis/gen/model/Gen.class create mode 100644 target/classes/cn/dalgen/mybatis/gen/model/config/CfAssociation.class create mode 100644 target/classes/cn/dalgen/mybatis/gen/model/config/CfCollection.class create mode 100644 target/classes/cn/dalgen/mybatis/gen/model/config/CfColumn.class create mode 100644 target/classes/cn/dalgen/mybatis/gen/model/config/CfOperation.class create mode 100644 target/classes/cn/dalgen/mybatis/gen/model/config/CfResultMap.class create mode 100644 target/classes/cn/dalgen/mybatis/gen/model/config/CfTable.class create mode 100644 target/classes/cn/dalgen/mybatis/gen/model/config/DeleteColumn.class create mode 100644 target/classes/cn/dalgen/mybatis/gen/model/db/DataBase.class create mode 100644 target/classes/cn/dalgen/mybatis/gen/model/dbtable/Column.class create mode 100644 target/classes/cn/dalgen/mybatis/gen/model/dbtable/NormalIndex.class create mode 100644 target/classes/cn/dalgen/mybatis/gen/model/dbtable/PrimaryKeys.class create mode 100644 target/classes/cn/dalgen/mybatis/gen/model/dbtable/Table$1.class create mode 100644 target/classes/cn/dalgen/mybatis/gen/model/dbtable/Table.class create mode 100644 target/classes/cn/dalgen/mybatis/gen/model/dbtable/UniqueIndex.class create mode 100644 target/classes/cn/dalgen/mybatis/gen/model/java/Base.class create mode 100644 target/classes/cn/dalgen/mybatis/gen/model/java/DAO.class create mode 100644 target/classes/cn/dalgen/mybatis/gen/model/java/DO.class create mode 100644 target/classes/cn/dalgen/mybatis/gen/model/java/DOMapper.class create mode 100644 target/classes/cn/dalgen/mybatis/gen/model/java/Filelds.class create mode 100644 target/classes/cn/dalgen/mybatis/gen/model/java/Paging.class create mode 100644 target/classes/cn/dalgen/mybatis/gen/model/java/ResultMap$1.class create mode 100644 target/classes/cn/dalgen/mybatis/gen/model/java/ResultMap.class create mode 100644 target/classes/cn/dalgen/mybatis/gen/model/java/XmlMapper.class create mode 100644 target/classes/cn/dalgen/mybatis/gen/model/java/domapper/DOMapperMethod$1.class create mode 100644 target/classes/cn/dalgen/mybatis/gen/model/java/domapper/DOMapperMethod.class create mode 100644 target/classes/cn/dalgen/mybatis/gen/model/java/domapper/DOMapperMethodParam.class create mode 100644 target/classes/cn/dalgen/mybatis/gen/model/repository/CfTableRepository.class create mode 100644 target/classes/cn/dalgen/mybatis/gen/model/repository/IgnoreDTDEntityResolver.class create mode 100644 target/classes/cn/dalgen/mybatis/gen/model/repository/TableRepository.class create mode 100644 target/classes/cn/dalgen/mybatis/gen/model/repository/db/MySQLTableRepository.class create mode 100644 target/classes/cn/dalgen/mybatis/gen/model/repository/db/OBTableRepository.class create mode 100644 target/classes/cn/dalgen/mybatis/gen/model/repository/db/OracleTableRepository.class create mode 100644 target/classes/cn/dalgen/mybatis/gen/utils/CamelCaseUtils.class create mode 100644 target/classes/cn/dalgen/mybatis/gen/utils/CmdUtil.class create mode 100644 target/classes/cn/dalgen/mybatis/gen/utils/ConfInit.class create mode 100644 target/classes/cn/dalgen/mybatis/gen/utils/ConfigUtil.class create mode 100644 target/classes/cn/dalgen/mybatis/gen/utils/StringDalUtil.class create mode 100644 target/classes/cn/dalgen/mybatis/gen/utils/SysUtil.class create mode 100644 target/classes/dalgen/config/README.md create mode 100644 target/classes/dalgen/config/config.xml create mode 100644 target/classes/dalgen/config/table-config-1.0.dtd create mode 100644 target/classes/dalgen/configTables/TABLE1.xml create mode 100644 target/classes/dalgen/ext/mybatis-config.xml.ftl create mode 100644 target/classes/dalgen/templates/dalgen/BasePage.java.ftl create mode 100644 target/classes/dalgen/templates/dalgen/DAO.java.ftl create mode 100644 target/classes/dalgen/templates/dalgen/DBPreCheckMapper.java.ftl create mode 100644 target/classes/dalgen/templates/dalgen/DBPreCheckMapper.xml.ftl create mode 100644 target/classes/dalgen/templates/dalgen/DO.java.ftl create mode 100644 target/classes/dalgen/templates/dalgen/DOMapper.java.ftl create mode 100644 target/classes/dalgen/templates/dalgen/Page.java.ftl create mode 100644 target/classes/dalgen/templates/dalgen/ResultMap.java.ftl create mode 100644 target/classes/dalgen/templates/dalgen/XMLMapper.xml.ftl create mode 100644 target/classes/dalgen/templates/init/initTableXml.ftl create mode 100644 target/classes/dalgen/templates/lib/function.ftl create mode 100644 target/classes/dalgen/templates/lib/lib.ftl create mode 100644 target/classes/dalgen/templates/lib/macro.ftl create mode 100644 target/maven-archiver/pom.properties create mode 100644 target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst create mode 100644 target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst create mode 100644 target/mybatis-maven-plugin-1.3.1-sources.jar create mode 100644 target/mybatis-maven-plugin-1.3.1-sources.jar.asc create mode 100644 target/mybatis-maven-plugin-1.3.1.jar create mode 100644 target/mybatis-maven-plugin-1.3.1.jar.asc create mode 100644 target/mybatis-maven-plugin-1.3.1.pom create mode 100644 target/mybatis-maven-plugin-1.3.1.pom.asc diff --git a/dalgen/template/dalgen/BasePage.java.ftl b/dalgen/template/dalgen/BasePage.java.ftl new file mode 100644 index 0000000..9418be3 --- /dev/null +++ b/dalgen/template/dalgen/BasePage.java.ftl @@ -0,0 +1,284 @@ +<@pp.dropOutputFile /> +<#if dalgen.pagings?? && dalgen.pagings?size gt 0> +<#assign paging =dalgen.pagings?first> + <@pp.changeOutputFile name = "/main/java/${paging.baseClassPath}/BasePage.java" /> +package ${paging.basePackageName}; + +import java.util.List; +import java.util.Map; +import com.google.common.collect.Maps; + +/** + * 用于分页的工具类 + */ +public class BasePage { + + private List datas; //对象记录结果集 + private int total = 0; // 总记录数 + private int limit = 20; // 默认每页显示记录数 + private int pageNos = 1; // 总页数 + private int currPageNo = 1; // 当前页 + + private boolean isFirstPage = false; //是否为第一页 + private boolean isLastPage = false; //是否为最后一页 + private boolean hasPreviousPage = false; //是否有前一页 + private boolean hasNextPage = false; //是否有下一页 + + private int navigatePages = 8; //导航页码数 + private int[] navigatePageNos; //所有导航页号 + + private Map> dataMenus;//数据拥有的菜单 + + + private Map dataDict;//数据字典 + + private void init() { + this.pageNos = (this.total - 1) / this.limit + 1; + + //根据输入可能错误的当前号码进行自动纠正 + if (currPageNo < 1) { + this.currPageNo = 1; + } else if (currPageNo > this.pageNos) { + this.currPageNo = this.pageNos; + } + + //基本参数设定之后进行导航页面的计算 + calcNavigatePageNumbers(); + + //以及页面边界的判定 + judgePageBoudary(); + } + + /** + * 计算导航页 + */ + private void calcNavigatePageNumbers() { + //当总页数小于或等于导航页码数时 + if (pageNos <= navigatePages) { + navigatePageNos = new int[pageNos]; + for (int i = 0; i < pageNos; i++) { + navigatePageNos[i] = i + 1; + } + } else { //当总页数大于导航页码数时 + navigatePageNos = new int[navigatePages]; + int startNum = currPageNo - navigatePages / 2; + int endNum = currPageNo + navigatePages / 2; + + if (startNum < 1) { + startNum = 1; + //(最前navigatePages页 + for (int i = 0; i < navigatePages; i++) { + navigatePageNos[i] = startNum++; + } + } else if (endNum > pageNos) { + endNum = pageNos; + //最后navigatePages页 + for (int i = navigatePages - 1; i >= 0; i--) { + navigatePageNos[i] = endNum--; + } + } else { + //所有中间页 + for (int i = 0; i < navigatePages; i++) { + navigatePageNos[i] = startNum++; + } + } + } + } + + /** + * 判定页面边界 + */ + private void judgePageBoudary() { + isFirstPage = currPageNo == 1; + isLastPage = currPageNo == pageNos && currPageNo != 1; + hasPreviousPage = currPageNo > 1; + hasNextPage = currPageNo < pageNos; + } + + /** + * 得到数据 + * + * @return + */ + public List getDatas() { + return datas; + } + + /** + * 设置数据 + * + * @param datas + */ + public void setDatas(List datas) { + this.datas = datas; + } + + /** + * 得到记录总数 + * + * @return {int} + */ + public int getTotal() { + return total; + } + + /** + * 得到记录总数 + * + * @return {int} + */ + public int getTotalCount() { + return total; + } + + /** + * 设置总记录数 + * + * @param total + */ + public void setTotal(int total) { + this.total = total; + init(); + } + + /** + * 得到每页显示多少条记录 + * + * @return {int} + */ + public int getLimit() { + return limit; + } + + /** + * 设置每页多少记录 + * + * @param limit + */ + public void setLimit(int limit) { + this.limit = limit; + } + + /** + * 设置导航线上几页 + * + * @param navigatePages + */ + public void setNavigatePages(int navigatePages) { + this.navigatePages = navigatePages; + } + + /** + * 得到页面总数 + * + * @return {int} + */ + public int getPageNos() { + return pageNos; + } + + /** + * 得到当前页号 + * + * @return {int} + */ + public int getCurrPageNo() { + return currPageNo; + } + + /** + * 得到当前页号 + * + * @return {int} + */ + public int getCurrentPage() { + return currPageNo; + } + + /** + * 得到所有导航页号 + * + * @return {int[]} + */ + public int[] getNavigatePageNos() { + return navigatePageNos; + } + + public boolean isFirstPage() { + return isFirstPage; + } + + public boolean isLastPage() { + return isLastPage; + } + + public boolean hasPreviousPage() { + return hasPreviousPage; + } + + public boolean hasNextPage() { + return hasNextPage; + } + + /** + * 设置当前行 + * @param currPageNo + */ + public void setCurrPageNo(int currPageNo){ + if(currPageNo==0){ + this.currPageNo =1; + }else { + this.currPageNo = currPageNo; + } + } + + /** + * 得到开始行 + */ + public int getStartRow(){ + return (this.currPageNo-1)*this.limit; + } + + public Map> getDataMenus() { + return dataMenus; + } + + public void setDataMenus(Map> dataMenus) { + this.dataMenus = dataMenus; + } + + public Map getDataDict() { + return dataDict; + } + + public void setDataDict(Map dataDict) { + this.dataDict = dataDict; + } + + public void addDataDict(String key,Object dataDict) { + if(this.dataDict==null){ + this.dataDict = Maps.newHashMap(); + } + this.dataDict.put(key,dataDict); + } + + public String toTString() { + init(); + StringBuffer sb = new StringBuffer(); + sb.append("[").append("total=").append(total).append(",pageNos=").append(pageNos) + .append(",currPageNo=").append(currPageNo).append(",limit=").append(limit) + .append(",isFirstPage=").append(isFirstPage).append(",isLastPage=") + .append(isLastPage).append(",hasPreviousPage=").append(hasPreviousPage) + .append(",hasNextPage=").append(hasNextPage).append(",navigatePageNos="); + int len = navigatePageNos.length; + if (len > 0){ + sb.append(navigatePageNos[0]);} + for (int i = 1; i < len; i++) { + sb.append(" " + navigatePageNos[i]); + } + sb.append(",datas.size=" + (datas!=null?datas.size():0)); + sb.append("]"); + return sb.toString(); + } +} + diff --git a/dalgen/template/dalgen/DAO.java.ftl b/dalgen/template/dalgen/DAO.java.ftl new file mode 100644 index 0000000..28bfc6a --- /dev/null +++ b/dalgen/template/dalgen/DAO.java.ftl @@ -0,0 +1,109 @@ +<@pp.dropOutputFile /> +<#import "../lib/function.ftl" as fun/> +<#list dalgen.daos as dao> + <@pp.changeOutputFile name = "/main/java/${dao.classPath}/${dao.className}.java" /> +package ${dao.packageName}; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Repository; +<#list dao.importLists as import> +import ${import}; + + +/** +* The Table ${dao.tableName!}. +* ${dao.desc!} +*/ +<#if dalgen.config.getExtParam("Repository") == "true">@Repository +public class ${dao.className}{ + + @Autowired + private ${dao.doMapper.className} ${dao.doMapper.className?uncap_first}; + + <#list dao.motheds as method> + /** + * desc:${method.desc!method.name!}.
+ <#list method.params as param> + * @param ${param.param} ${param.param} + + * @return ${fun.methodClass(method)} + */ + public ${fun.methodClass(method)} ${method.name}(<#list method.params as param><#if param_index gt 0>,${param.paramType!} <#assign pagingParam = param.param/>${param.param}){ + <#if !method.name?starts_with("insert")><#list method.params as param><#if param.paramType?starts_with("List<")> + if(${param.param}!=null && ${param.param}.size()>201){throw new RuntimeException("${param.param} 超出200长度限制");} + + <#if method.pagingFlag == "true"> + <#if method.pagingCustomFlag == "true"> + int total = ${dao.doMapper.className?uncap_first}.${method.pagingCntOperation}(<#list method.params as param><#if param_index gt 0>, ${param.param}); + <#else > + int total = ${dao.doMapper.className?uncap_first}.${method.name}Count(<#list method.params as param><#if param_index gt 0>, ${param.param}); + + if(total>0){ + ${pagingParam}.setDatas(${dao.doMapper.className?uncap_first}.${method.name}Result(<#list method.params as param><#if param_index gt 0>, ${param.param})); + } + ${pagingParam}.setTotal(total); + return ${pagingParam}; + <#elseif method.kvMap?? && method.kvMap == "true"> + ${fun.methodClass(method)} result = new LinkedHashMap(); + ${method.returnClass} resultList = ${dao.doMapper.className?uncap_first}.${method.name}(<#list method.params as param><#if param_index gt 0>, ${param.param}); + if(resultList!=null && !resultList.isEmpty()){ + for(${fun.fanType2Type(method.returnClass)} entity:resultList){ + <#if method.mapV??> + result.put(entity.get${method.mapK}(),entity.get${method.mapV}()); + <#else > + result.put(entity.get${method.mapK}(),entity); + + } + } + return result; + <#elseif method.kvMap?? && method.kvMap == "list"> + ${fun.methodClass(method)} result = new LinkedHashMap(); + ${method.returnClass} resultList = ${dao.doMapper.className?uncap_first}.${method.name}(<#list method.params as param><#if param_index gt 0>, ${param.param}); + if(resultList!=null && !resultList.isEmpty()){ + for(${fun.fanType2Type(method.returnClass)} entity:resultList){ + <#if method.mapV??> + List<${method.mapVType}> vList = result.get(entity.get${method.mapK}()); + <#else > + List<${fun.fanType2Type(method.returnClass)}> vList = result.get(entity.get${method.mapK}()); + + if(vList == null){ + vList = new ArrayList(); + result.put(entity.get${method.mapK}(),vList); + } + <#if method.mapV??> + vList.add(entity.get${method.mapV}()); + <#else > + vList.add(entity); + + } + } + return result; + <#elseif method.kvMap?? && method.kvMap == "set"> + ${fun.methodClass(method)} result = new LinkedHashMap(); + ${method.returnClass} resultList = ${dao.doMapper.className?uncap_first}.${method.name}(<#list method.params as param><#if param_index gt 0>, ${param.param}); + if(resultList!=null && !resultList.isEmpty()){ + for(${fun.fanType2Type(method.returnClass)} entity:resultList){ + <#if method.mapV??> + Set<${method.mapVType}> vSet = result.get(entity.get${method.mapK}()); + <#else > + Set<${fun.fanType2Type(method.returnClass)}> vSet = result.get(entity.get${method.mapK}()); + + if(vSet == null){ + vSet = new HashSet(); + result.put(entity.get${method.mapK}(),vSet); + } + <#if method.mapV??> + vSet.add(entity.get${method.mapV}()); + <#else > + vSet.add(entity); + + } + } + return result; + <#else> + return ${dao.doMapper.className?uncap_first}.${method.name}(<#list method.params as param><#if param_index gt 0>, ${param.param}); + + } + +} + diff --git a/dalgen/template/dalgen/DBPreCheckMapper.java.ftl b/dalgen/template/dalgen/DBPreCheckMapper.java.ftl new file mode 100644 index 0000000..c764365 --- /dev/null +++ b/dalgen/template/dalgen/DBPreCheckMapper.java.ftl @@ -0,0 +1,17 @@ +<@pp.dropOutputFile /> +<#if dalgen.doMappers?size gt 0> +<#assign tmpTables = dalgen.tmpTables> +<#assign doMapper = dalgen.doMappers?first> +<#assign dbName=""/> +<#if !dalgen.getDataSourceSingle()><#assign dbName=dalgen.getDataSourceName()/> +<@pp.changeOutputFile name = "/main/java/${doMapper.classPath}/${dbName}DBPreCheckMapper.java" /> +package ${doMapper.packageName}; +import java.util.List; +/** + * 数据库字段检查 + */ +public interface ${dbName}DBPreCheckMapper{ + + List dbColumnCheck(); +} + diff --git a/dalgen/template/dalgen/DBPreCheckMapper.xml.ftl b/dalgen/template/dalgen/DBPreCheckMapper.xml.ftl new file mode 100644 index 0000000..8c66cfb --- /dev/null +++ b/dalgen/template/dalgen/DBPreCheckMapper.xml.ftl @@ -0,0 +1,34 @@ +<@pp.dropOutputFile /> +<#if dalgen.xmlMappers?size gt 0> +<#assign tmpTables = dalgen.tmpTables> +<#assign xmlMapper = dalgen.xmlMappers?first> +<#assign dbName=""/> +<#if !dalgen.getDataSourceSingle()><#assign dbName=dalgen.getDataSourceName()/> +<@pp.changeOutputFile name = "/main/resources/${xmlMapper.doMapper.xmlPath}/${dbName}DBPreCheckMapper.xml" /> + + + +<#assign idx = 0> + + + diff --git a/dalgen/template/dalgen/DO.java.ftl b/dalgen/template/dalgen/DO.java.ftl new file mode 100644 index 0000000..f9e08e9 --- /dev/null +++ b/dalgen/template/dalgen/DO.java.ftl @@ -0,0 +1,44 @@ +<@pp.dropOutputFile /> +<#list dalgen.dos as DO> +<#if DO.fieldses?size gt 0> +<@pp.changeOutputFile name = "/main/java/${DO.classPath}/${DO.className}.java" /> +package ${DO.packageName}; + +<#list DO.importLists as import> +<#if !import?ends_with("${DO.className}")> +import ${import}; + + + +/** + * The table ${DO.desc} + */ +public class ${DO.className}{ + + <#list DO.fieldses as fields> + /** + * ${fields.name} ${fields.desc}. + */ + private ${fields.javaType} ${fields.name}; + + <#list DO.fieldses as fields> + + /** + * Set ${fields.name} ${fields.desc}. + */ + public void set${fields.name?cap_first}(${fields.javaType} ${fields.name}){ + this.${fields.name} = ${fields.name}; + } + + /** + * Get ${fields.name} ${fields.desc}. + * + * @return the string + */ + public ${fields.javaType} get${fields.name?cap_first}(){ + return ${fields.name}; + } + +} + + diff --git a/dalgen/template/dalgen/DOMapper.java.ftl b/dalgen/template/dalgen/DOMapper.java.ftl new file mode 100644 index 0000000..3172f78 --- /dev/null +++ b/dalgen/template/dalgen/DOMapper.java.ftl @@ -0,0 +1,29 @@ +<@pp.dropOutputFile /> +<#list dalgen.doMappers as doMapper> +<@pp.changeOutputFile name = "/main/java/${doMapper.classPath}/${doMapper.className}.java" /> +package ${doMapper.packageName}; + +<#list doMapper.importLists as import> +import ${import}; + +import org.apache.ibatis.annotations.Param; + +/** + * 由于需要对分页支持,请直接使用对应的DAO类 + * The Table ${doMapper.tableName!}. + * ${doMapper.desc!} + */ +public interface ${doMapper.className}{ + + <#list doMapper.motheds as method> + /** + * desc:${method.desc!method.name!}.
+ <#list method.params as param> + * @param ${param.param} ${param.param} + + * @return ${method.returnClass!} + */ + ${method.returnClass!} ${method.name}(<#list method.params as param><#if param_index gt 0>,<#if method.params?size == 1 && param.paramType == "String">@Param("${param.param}")<#if method.params?size gt 1>@Param("${param.param}")${param.paramType!} ${param.param}); + +} + diff --git a/dalgen/template/dalgen/Page.java.ftl b/dalgen/template/dalgen/Page.java.ftl new file mode 100644 index 0000000..06a44e2 --- /dev/null +++ b/dalgen/template/dalgen/Page.java.ftl @@ -0,0 +1,40 @@ +<@pp.dropOutputFile /> +<#list dalgen.pagings as paging> + <@pp.changeOutputFile name = "/main/java/${paging.classPath}/${paging.className}.java" /> +package ${paging.packageName}; + +<#list paging.importLists as import> +import ${import}; + + +/** + * The table ${paging.desc!} + */ +public class ${paging.className} extends BasePage<${paging.resultType}>{ + + <#list paging.fieldses as fields> + /** + * ${fields.name} ${fields.desc!}. + */ + private ${fields.javaType} ${fields.name}; + + <#list paging.fieldses as fields> + + /** + * Set ${fields.name} ${fields.desc!}. + */ + public void set${fields.name?cap_first}(${fields.javaType} ${fields.name}){ + this.${fields.name} = ${fields.name}; + } + + /** + * Get ${fields.name} ${fields.desc!}. + * + * @return the string + */ + public ${fields.javaType} get${fields.name?cap_first}(){ + return ${fields.name}; + } + +} + diff --git a/dalgen/template/dalgen/ResultMap.java.ftl b/dalgen/template/dalgen/ResultMap.java.ftl new file mode 100644 index 0000000..d9e9ec1 --- /dev/null +++ b/dalgen/template/dalgen/ResultMap.java.ftl @@ -0,0 +1,114 @@ +<@pp.dropOutputFile /> +<#import "../lib/lib.ftl" as lib/> +<#list dalgen.resultMaps as resultMap> + <@pp.changeOutputFile name = "/main/java/${resultMap.classPath}/${resultMap.className}.java" /> +package ${resultMap.packageName}; + +import java.io.Serializable; +<#list resultMap.importLists as import> +import ${import}; + +<@lib.importByResultMap daos=dalgen.daos resultMap=resultMap/> +<#assign extend = ""> + <#list dalgen.dos as DO> + <#if DO.tableName == resultMap.tableName?upper_case && resultMap.extend == "base"> + <#assign extend = "extends "+DO.className> +import ${DO.packageName}.${DO.className}; + + + + +/** + * The table ${resultMap.desc!resultMap.className} + */ +public class ${resultMap.className} ${extend} implements Serializable { + +private static final long serialVersionUID = -1L; + + <#--属性--> + <#list resultMap.fieldses as fields> + /** + * ${fields.name} ${fields.desc!}. + */ + private ${fields.javaType} ${fields.name}; + + + <#--一对一--> + <#list resultMap.associations as association> + <#assign method = lib.getMethodByMethodName(dalgen.daos,association.tableName?upper_case,association.methodName)> + /** + * ${association.select} ${association.remark!}. + */ + private ${method.returnClass!} ${association.property}; + + + <#--一对多--> + <#list resultMap.collections as collection> + <#assign method = lib.getMethodByMethodName(dalgen.daos,collection.tableName?upper_case,collection.methodName)> + /** + * ${collection.select} ${collection.remark!}. + */ + private ${method.returnClass!} ${collection.property}; + + + <#list resultMap.fieldses as fields> + + /** + * Set ${fields.name} ${fields.desc!}. + */ + public void set${fields.name?cap_first}(${fields.javaType} ${fields.name}){ + this.${fields.name} = ${fields.name}; + } + + /** + * Get ${fields.name} ${fields.desc!}. + * + * @return the string + */ + public ${fields.javaType} get${fields.name?cap_first}(){ + return ${fields.name}; + } + + + +<#--一对一--> + <#list resultMap.associations as association> + <#assign method = lib.getMethodByMethodName(dalgen.daos,association.tableName?upper_case,association.methodName)> + /** + * Set ${association.property}.${association.remark!}. + */ + public void set${association.property?cap_first}(${method.returnClass!} ${association.property}){ + this.${association.property} = ${association.property}; + } + + /** + * Get ${association.property} ${association.remark!}. + * + * @return the ${method.returnClass} + */ + public ${method.returnClass} get${association.property?cap_first}(){ + return ${association.property}; + } + + +<#--一对多--> + <#list resultMap.collections as collection> + <#assign method = lib.getMethodByMethodName(dalgen.daos,collection.tableName?upper_case,collection.methodName)> + /** + * Set ${collection.property}.${collection.remark!}. + */ + public void set${collection.property?cap_first}(${method.returnClass!} ${collection.property}){ + this.${collection.property} = ${collection.property}; + } + + /** + * Get ${collection.property} ${collection.remark!}. + * + * @return the ${method.returnClass} + */ + public ${method.returnClass} get${collection.property?cap_first}(){ + return ${collection.property}; + } + +} + diff --git a/dalgen/template/dalgen/XMLMapper.xml.ftl b/dalgen/template/dalgen/XMLMapper.xml.ftl new file mode 100644 index 0000000..c606d93 --- /dev/null +++ b/dalgen/template/dalgen/XMLMapper.xml.ftl @@ -0,0 +1,91 @@ +<@pp.dropOutputFile /> +<#import "../lib/lib.ftl" as lib/> +<#import "../lib/function.ftl" as fun/> +<#import "../lib/macro.ftl" as m> +<#list dalgen.xmlMappers as xmlMapper> +<@pp.changeOutputFile name = "/main/resources/${xmlMapper.doMapper.xmlPath}/${xmlMapper.doMapper.className}.xml" /> + + + + + <#-- 自定义分页时参数 limit {pageLimit}--> + <#--生成BaseResultMap--> +<#if xmlMapper.table.columnList?size gt 0> + +<#list xmlMapper.table.columnList as column> + <#if column.sqlName?upper_case =="ID"><#else> + + + + + <#--生成自定义ResultMap--> +<#list xmlMapper.resultMaps as resultMap> + <#assign extends = ""> + <#if resultMap.extend == "base"> + <#assign extends = "extends=\"BaseResultMap\""> + + + <#list resultMap.columnList as column> + <#if column.sqlName?upper_case =="ID"><#else> + + <#list resultMap.associations as association> + + + <#list resultMap.collections as collection> + + + + + + <#if xmlMapper.sqlMap?size == 0 > + <#-- baseSql --> +<#if xmlMapper.table.columnList?size gt 0> + + <#list xmlMapper.table.columnList as column><#if column_index gt 0>,${column.sqlName} + + + <#-- baseSql --> + + <#list xmlMapper.table.columnList as column><#if column_index gt 0>,sf.${column.sqlName} + + + <#else><#list xmlMapper.sqlMap?values as sqlXML> + ${sqlXML} + + + + <#-- sql部分 --> + <#list xmlMapper.cfTable.operations as operation> + +<#if operation.multiplicity.code=="paging"><#--分页--> + <#if operation.pagingCntType.code=="pagingCustom"><#--分页--> + + <${lib.operation2Sql(operation.name)} id="${operation.name}Result" ${lib.mapperResult(operation)}${lib.timeout(operation)}> + ${operation.cdata!} + + <#else> + + <${lib.operation2Sql(operation.name)} id="${operation.name}Count" resultType="int"${lib.timeout(operation)}> +${operation.cdataPageCount!} + + + <${lib.operation2Sql(operation.name)} id="${operation.name}Result" ${lib.mapperResult(operation)}${lib.timeout(operation)}> +${operation.cdata!} + <#if operation.pagingCntType.code=="paging" || operation.pagingCntType.code=="pagingExtCnt"> + limit ${"#"}{startRow},${"#"}{limit} + + + + <#else><#--非分页--> + + <${lib.operation2Sql(operation.name)} id="${operation.name}" ${lib.mapperResult(operation)}${lib.timeout(operation)} <#if operation.useGeneratedKeys??>useGeneratedKeys="${operation.useGeneratedKeys}"<#if operation.keyProperty??> keyProperty="${operation.keyProperty}"> +<#if operation.autoGen> +<@m.autoGen operation.name ,xmlMapper.table/> +<#else> +${operation.cdata!} + + + + + + diff --git a/dalgen/template/init/initTableXml.ftl b/dalgen/template/init/initTableXml.ftl new file mode 100644 index 0000000..9dba324 --- /dev/null +++ b/dalgen/template/init/initTableXml.ftl @@ -0,0 +1,122 @@ +<@pp.dropOutputFile /> +<#import "../lib/lib.ftl" as lib/> +<#import "../lib/macro.ftl" as m> +<#list dalgen.tables as table> +<@pp.changeOutputFile name = "/${dalgen.tablesPath}/${table.sqlName}.xml" /> + + remark="${table.remark!}"> + + + <@m.BaseColumnList table/> + + + <@m.Base_SF_Column_List table/> + + + <@m.insertMethod table/> + + + + + + <@m.insertBatchMethod table/> + + +<#if table.primaryKeys??> + + + + DELETE FROM ${table.sqlName?lower_case} + WHERE + <#list table.primaryKeys.columnList as column> + <#if column_index gt 0>AND ${column.sqlName} = ${"#"}{${column.javaName},jdbcType=${column.sqlType}} + + ]]> + + + + SELECT * + FROM ${table.sqlName?lower_case} + WHERE + + <#if column_index gt 0>AND ${column.sqlName} = ${"#"}{${column.javaName},jdbcType=${column.sqlType}} + + ]]> + + +<#list table.uniqueIndexs as uniqueIndex> + + + + + <#list table.columnList as column> + <#if lib.updateIncludeUKColumn(dalgen,column,table.primaryKeys!,uniqueIndex.columnList)><#assign c_idx = c_idx+1> + <#if c_idx gt 1>,${column.sqlName}${lib.space(column.sqlName)} = ${lib.updateVal(column)} + + + WHERE + <#list uniqueIndex.columnList as column> + <#if column_index gt 0>AND ${column.sqlName}${lib.space(column.sqlName)} = ${"#"}{${column.javaName},jdbcType=${column.sqlType}} + + ]]> + + + + + <#if column_index gt 0>AND ${column.sqlName}${lib.space(column.sqlName)} = ${"#"}{${column.javaName},jdbcType=${column.sqlType}} + + ]]> + + + + SELECT * + FROM ${table.sqlName?lower_case} + WHERE + + <#if column_index gt 0>AND ${column.sqlName}${lib.space(column.sqlName)} = ${"#"}{${column.javaName},jdbcType=${column.sqlType}} + + ]]> + + + +<#list table.normalIndexs as normalIndex> + + + SELECT * + FROM ${table.sqlName?lower_case} + WHERE + + <#if column_index gt 0>AND ${column.sqlName}${lib.space(column.sqlName)} = ${"#"}{${column.javaName},jdbcType=${column.sqlType}} + + ]]> + + +
+ diff --git a/dalgen/template/lib/function.ftl b/dalgen/template/lib/function.ftl new file mode 100644 index 0000000..356816d --- /dev/null +++ b/dalgen/template/lib/function.ftl @@ -0,0 +1,119 @@ +<#--获取字段list--> +<#function columnList xmlMappers tableName> + <#list xmlMappers as xmlMapper> + <#if xmlMapper.table.sqlName == tableName> + <#return xmlMapper.table.columnList/> + + + + +<#-- 字段默认值 --> +<#function columnVal column> + <#if column.testVal??><#return column.testVal> + <#if column.javaName == "id"><#return "1"> + <#if column.javaName == "isDel"><#return "0"> + <#if column.javaType == "java.util.Date"><#return "1984-12-24"> + <#if column.javaType == "String"><#return column.javaName?substring(0,1)?cap_first> + <#return "1"> + + +<#function typeHandler column> + <#if column.typeHandler??><#return "typeHandler=\"${column.typeHandler}\"" > + <#return ""> + + + +<#-- test默认值 --> +<#function paramVal param columnList> + <#list columnList as column> + <#if column.javaName == param.param || "old${column.javaName?cap_first}" == param.param> + <#if column.javaType == "java.util.Date"><#return "new Date()"> + <#assign columnVal = "0"> + + <#if column.javaName == "id"><#assign columnVal = "1"> + <#if column.javaName == "isDel"><#assign columnVal = "0"> + <#if column.javaType == "String"><#assign columnVal = column.javaName?substring(0,1)?cap_first> + + <#if column.javaType == "Long"><#return "${columnVal}L"> + <#if column.javaType == "String"><#return "\"${columnVal}\""> + + <#if column.testVal??> + <#if param.paramType?ends_with("Enum")> + <#return "${param.paramType}.${column.testVal}"/> + + <#return "TestParamValUtil.trans(${param.paramType}.class,\"${column.testVal}\")"/> + + <#return columnVal> + + + + <#if param.paramType?ends_with("Enum") && param.testVal??> + <#return "${param.paramType}.${param.testVal}"/> + + + <#if param.paramType == "String"><#return "\"${param.param}\""> + <#if param.paramType == "Long"><#return "1L"> + <#if param.paramType == "Integer"><#return "1"> + <#if param.paramType?starts_with("List")><#return "Lists.newArrayList(\"S\")"> + <#if param.paramType?starts_with("List")><#return "Lists.newArrayList(1L)"> + <#if param.paramType?starts_with("List")><#return "Lists.newArrayList(1)"> + <#if param.paramType?starts_with("List")><#return "Lists.newArrayList(1d)"> + <#if param.paramType?starts_with("List")><#return "Lists.newArrayList()"> + <#return "new ${param.paramType}()"> + + +<#-- 忽略不需要单元测试的类 --> +<#function neadTest methodName> + <#assign ignoreMethods = ["insert","insertBatch","update", "getById"]> + <#if ignoreMethods?seq_contains(methodName)><#return false> + <#if methodName != "insert" && methodName?starts_with("insert")><#return false> +<#return true> + + +<#function getByIdMethod motheds> + <#list motheds as method> + <#if method.name == "getById"><#return method> + + + +<#function fanType2Type fanType> + <#if fanType??> + <#return fanType?substring(fanType?last_index_of("<")+1,fanType?last_index_of(">"))> + <#else > + <#return fanType> + + + +<#function methodClass method> + <#if method.kvMap?? && method.kvMap == "true"> + <#if method.mapVType??> + <#assign valType = method.mapVType> + <#else > + <#assign valType = fanType2Type(method.returnClass)> + + <#return "Map<${method.mapKType},${valType}>"> + <#elseif method.kvMap?? && method.kvMap == "list"> + <#if method.mapVType??> + <#assign valType = method.mapVType> + <#else > + <#assign valType = fanType2Type(method.returnClass)> + + <#return "Map<${method.mapKType},List<${valType}>>"> + <#elseif method.kvMap?? && method.kvMap == "set"> + <#if method.mapVType??> + <#assign valType = method.mapVType> + <#else > + <#assign valType = fanType2Type(method.returnClass)> + + <#return "Map<${method.mapKType},Set<${valType}>>"> + <#else> + <#return method.returnClass> + + + +<#function javaTypeTrun javaType> + <#if javaType?contains("<")> + <#return javaType?substring(0,javaType?index_of("<"))/> + + <#return javaType/> + diff --git a/dalgen/template/lib/lib.ftl b/dalgen/template/lib/lib.ftl new file mode 100644 index 0000000..ce7a9ed --- /dev/null +++ b/dalgen/template/lib/lib.ftl @@ -0,0 +1,151 @@ +<#--空格处理--> +<#function space param> + <#if param?length gt 15><#return ""/> + <#else> + <#return " "?substring(param?length)/> + + + +<#-- operation 2 sql --> +<#function operation2Sql param> + <#if param?starts_with("insert")><#return "insert"/> + <#if param?starts_with("update")><#return "update"/> + <#if param?starts_with("delete")><#return "delete"/> + <#return "select"/> + + +<#-- mapperxml result --> +<#function mapperResult operation> + <#if operation.resultmap??><#return 'resultMap="${operation.resultmap}"'/> + <#if operation.resulttype??><#return 'resultType="${operation.resulttype}"'/> + <#if operation.name?starts_with("insert")><#return ''/> + <#if operation.name?starts_with("update")><#return ''/> + <#if operation.name?starts_with("delete")><#return ''/> + <#return 'resultMap="BaseResultMap"'/> + + +<#function timeout operation> + <#if operation.timeout??><#return ' timeout="${operation.timeout}"'/> + <#return ""/> + + +<#-- insert 时字段处理 --> +<#function insertVal column dalgen> + <#if column.sqlName == "GMT_MODIFIED" || column.sqlName == "GMT_CREATE"><#return "now()"> + <#if column.sqlName?upper_case == "ID"><#return "null"> + <#if column.sqlName?upper_case == "IS_DELETED"><#return "0"> + <#if column.sqlName?upper_case == "REVISION"><#return "0"> + <#return '${"#"}{${column.javaName},jdbcType=${column.sqlType}}'/> + + +<#-- insert 时字段处理 --> +<#function insertBatchVal column dalgen> + <#if column.sqlName == "GMT_MODIFIED" || column.sqlName == "GMT_CREATE"><#return "now()"> + <#if column.sqlName?upper_case == "ID"><#return "null"> + <#if column.sqlName?upper_case == "IS_DELETED"><#return "0"> + <#if column.sqlName?upper_case == "REVISION"><#return "0"> + <#return '${"#"}{item.${column.javaName},jdbcType=${column.sqlType}}'/> + + +<#-- Update 时字段处理 --> +<#function updateVal column> + <#if column.sqlName == "GMT_MODIFIED" || column.sqlName == "GMT_CREATE"><#return "now()"> + <#return '${"#"}{${column.javaName},jdbcType=${column.sqlType}}'/> + + +<#-- update 中需要设置的字段 --> +<#function updateIncludeColumn dalgen column primaryKeys> + <#if column.sqlName == "CREATOR" || column.sqlName == "GMT_CREATE"> + <#return false> + + <#list primaryKeys as pkcolumn> + <#if pkcolumn.sqlName == column.sqlName><#return false> + + <#return true> + + +<#-- update 中需要设置的字段 --> +<#function updateIncludeUKColumn dalgen column primaryKeys uniqueColums> + <#if column.sqlName == "CREATOR" || column.sqlName == "GMT_CREATE"> + <#return false> + + <#if primaryKeys?? && primaryKeys.columnList??> + <#list primaryKeys.columnList as pkcolumn> + <#if pkcolumn.sqlName == column.sqlName><#return false> + + + <#list uniqueColums as pkcolumn> + <#if pkcolumn.sqlName == column.sqlName><#return false> + + <#return true> + + +<#function getMethodByMethodName daos tableName methodName> + <#list daos as dao> + <#if dao.tableName == tableName> + <#list dao.motheds as method> + <#if method.name == methodName> + <#return method> + + + + + + +<#macro importByResultMap daos resultMap> +<#assign imports = []> + <#list daos as dao> + <#list resultMap.associations as association> + <#if dao.tableName == association.tableName> + <#list dao.motheds as method> + <#if method.name == association.methodName> + <#list dao.importLists as import> + <#if import?ends_with(method.returnClass)> + <#if !imports?seq_contains(import)> + <#assign imports = imports+[import]> + + + + + + + + <#list resultMap.collections as collection> + <#if dao.tableName == collection.tableName> + <#list dao.motheds as method> + <#if method.name == collection.methodName> + <#list dao.importLists as import> + <#if isClasz(import,method.returnClass)> + <#if !imports?seq_contains(import)> + <#assign imports = imports+[import]> + + <#if !imports?seq_contains("java.util.List")> + <#assign imports = imports+["java.util.List"]> + + + + + + + + +<#list imports as import> +import ${import}; + + + +<#function genDOMapperNameSpace doMappers tableName> + <#list doMappers as doMapper> + <#if doMapper.tableName == tableName> + <#return doMapper.packageName+"."+doMapper.className> + + + + +<#function isClasz import listF> + <#assign clazz = listF> + <#if listF?contains("<") && import?ends_with(listF?substring(listF?index_of("<")+1,listF?index_of(">")))> + <#return true> + +<#return false> + diff --git a/dalgen/template/lib/macro.ftl b/dalgen/template/lib/macro.ftl new file mode 100644 index 0000000..88d9fd8 --- /dev/null +++ b/dalgen/template/lib/macro.ftl @@ -0,0 +1,82 @@ +<#macro SqlBaseColumnList table id prex> + + <#list table.columnList as column><#if column_index gt 0><#if column_index%5==0>${" \n"} ,${prex?default("")}${column.sqlName} + + + +<#macro BaseColumnList table> + <@SqlBaseColumnList table,"Base_Column_List","" /> + + +<#macro Base_SF_Column_List table> + <@SqlBaseColumnList table,"Base_SF_Column_List","sf." /> + + +<#macro insertMethod table> + <#if dalgen.dbType=="MySQL"> + + SELECT + LAST_INSERT_ID() + + <#elseif dalgen.dbType=="Oracle"> + + select seq_${table.sqlName?lower_case}.nextval from dual + + + + <#if column_index gt 0>,${column.sqlName} + + )VALUES( + <#list table.columnList as column> + <#if column_index gt 0>, ${lib.insertVal(column,dalgen)} + + ) + ]]> + + + +<#macro insertBatchMethod table> + INSERT INTO ${table.sqlName?lower_case}( + <#list table.columnList as column> + <#if column_index gt 0>,${column.sqlName} + + )VALUES + + ( + <#list table.columnList as column> + <#if column_index gt 0>, ${lib.insertBatchVal(column,dalgen)} + + ) + + + +<#macro updateMethod table> + + <#list table.columnList as column> + <#if lib.updateIncludeColumn(dalgen,column,table.primaryKeys.columnList)><#assign c_idx = c_idx+1> + <#if c_idx gt 1>,${column.sqlName}${lib.space(column.sqlName)} = ${lib.updateVal(column)} + + + WHERE + <#list table.primaryKeys.columnList as column> + <#if column_index gt 0>AND ${column.sqlName}${lib.space(column.sqlName)} = ${"#"}{${column.javaName},jdbcType=${column.sqlType}} + + ]]> + + + +<#macro autoGen method table> + <#if method=="insert"> + <@insertMethod table/> + <#elseif method=="insertBatch"> + <@insertBatchMethod table/> + <#elseif method=="update"> + <@updateMethod table/> + + + diff --git a/srcTmp/main/java/example/abssqr/dao/Table1DAO.java b/srcTmp/main/java/example/abssqr/dao/Table1DAO.java new file mode 100644 index 0000000..55b04a7 --- /dev/null +++ b/srcTmp/main/java/example/abssqr/dao/Table1DAO.java @@ -0,0 +1,51 @@ +package example.abssqr.dao; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Repository; +import example.abssqr.do.Table1DO; +import java.util.List; +import example.abssqr.mapper.Table1Mapper; + +/** +* The Table table1. +* TABLE1 +*/ +@Repository +public class Table1DAO{ + + @Autowired + private Table1Mapper table1Mapper; + + /** + * desc:插入表:table1.
+ * @param entity entity + * @return Long + */ + public Long insert(Table1DO entity){ + return table1Mapper.insert(entity); + } + /** + * desc:批量插入表:table1.
+ * @param list list + * @return Long + */ + public Long insertBatch(List list){ + return table1Mapper.insertBatch(list); + } + /** + * desc:根据主键删除数据:table1.
+ * @param id id + * @return Long + */ + public Long deleteById(Integer id){ + return table1Mapper.deleteById(id); + } + /** + * desc:根据主键获取数据:table1.
+ * @param id id + * @return Table1DO + */ + public Table1DO getById(Integer id){ + return table1Mapper.getById(id); + } +} diff --git a/srcTmp/main/java/example/abssqr/do/Table1DO.java b/srcTmp/main/java/example/abssqr/do/Table1DO.java new file mode 100644 index 0000000..3aa674f --- /dev/null +++ b/srcTmp/main/java/example/abssqr/do/Table1DO.java @@ -0,0 +1,49 @@ +package example.abssqr.do; + + +/** + * The table TABLE1 + */ +public class Table1DO{ + + /** + * id ID. + */ + private Integer id; + /** + * card CARD. + */ + private String card; + + /** + * Set id ID. + */ + public void setId(Integer id){ + this.id = id; + } + + /** + * Get id ID. + * + * @return the string + */ + public Integer getId(){ + return id; + } + + /** + * Set card CARD. + */ + public void setCard(String card){ + this.card = card; + } + + /** + * Get card CARD. + * + * @return the string + */ + public String getCard(){ + return card; + } +} diff --git a/srcTmp/main/java/example/abssqr/mapper/DBPreCheckMapper.java b/srcTmp/main/java/example/abssqr/mapper/DBPreCheckMapper.java new file mode 100644 index 0000000..d5342c4 --- /dev/null +++ b/srcTmp/main/java/example/abssqr/mapper/DBPreCheckMapper.java @@ -0,0 +1,9 @@ +package example.abssqr.mapper; +import java.util.List; +/** + * 数据库字段检查 + */ +public interface DBPreCheckMapper{ + + List dbColumnCheck(); +} diff --git a/srcTmp/main/java/example/abssqr/mapper/Table1Mapper.java b/srcTmp/main/java/example/abssqr/mapper/Table1Mapper.java new file mode 100644 index 0000000..55392f9 --- /dev/null +++ b/srcTmp/main/java/example/abssqr/mapper/Table1Mapper.java @@ -0,0 +1,38 @@ +package example.abssqr.mapper; + +import example.abssqr.do.Table1DO; +import java.util.List; +import org.apache.ibatis.annotations.Param; + +/** + * 由于需要对分页支持,请直接使用对应的DAO类 + * The Table table1. + * TABLE1 + */ +public interface Table1Mapper{ + + /** + * desc:插入表:table1.
+ * @param entity entity + * @return Long + */ + Long insert(Table1DO entity); + /** + * desc:批量插入表:table1.
+ * @param list list + * @return Long + */ + Long insertBatch(List list); + /** + * desc:根据主键删除数据:table1.
+ * @param id id + * @return Long + */ + Long deleteById(Integer id); + /** + * desc:根据主键获取数据:table1.
+ * @param id id + * @return Table1DO + */ + Table1DO getById(Integer id); +} diff --git a/srcTmp/main/java/example/abssqr/resultmap/xxx.java b/srcTmp/main/java/example/abssqr/resultmap/xxx.java new file mode 100644 index 0000000..55bc8d8 --- /dev/null +++ b/srcTmp/main/java/example/abssqr/resultmap/xxx.java @@ -0,0 +1,39 @@ +package example.abssqr.resultmap; + +import java.io.Serializable; + + +/** + * The table xxx + */ +public class xxx implements Serializable { + +private static final long serialVersionUID = -1L; + + /** + * card . + */ + private String card; + + + + + /** + * Set card . + */ + public void setCard(String card){ + this.card = card; + } + + /** + * Get card . + * + * @return the string + */ + public String getCard(){ + return card; + } + + + +} diff --git a/srcTmp/main/resources/mapper/abssqr/DBPreCheckMapper.xml b/srcTmp/main/resources/mapper/abssqr/DBPreCheckMapper.xml new file mode 100644 index 0000000..99915bf --- /dev/null +++ b/srcTmp/main/resources/mapper/abssqr/DBPreCheckMapper.xml @@ -0,0 +1,18 @@ + + + + + diff --git a/srcTmp/main/resources/mapper/abssqr/Table1Mapper.xml b/srcTmp/main/resources/mapper/abssqr/Table1Mapper.xml new file mode 100644 index 0000000..392f2db --- /dev/null +++ b/srcTmp/main/resources/mapper/abssqr/Table1Mapper.xml @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + sf.ID,sf.CARD + + + ID,CARD + + + + + + + SELECT + LAST_INSERT_ID() + + + + + + + INSERT INTO table1( + ID + ,CARD + )VALUES + + ( + null + , #{item.card,jdbcType=VARCHAR} + ) + + + + + + + + + + + diff --git a/srcTmp/main/resources/mybatis-config.xml b/srcTmp/main/resources/mybatis-config.xml new file mode 100644 index 0000000..58d8069 --- /dev/null +++ b/srcTmp/main/resources/mybatis-config.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + diff --git a/target/classes/META-INF/maven/cn.dalgen.plugins/mybatis-maven-plugin/plugin-help.xml b/target/classes/META-INF/maven/cn.dalgen.plugins/mybatis-maven-plugin/plugin-help.xml new file mode 100644 index 0000000..d7039de --- /dev/null +++ b/target/classes/META-INF/maven/cn.dalgen.plugins/mybatis-maven-plugin/plugin-help.xml @@ -0,0 +1,83 @@ + + + + + + cn.dalgen.plugins:mybatis-maven-plugin + mybatis generator mapper.xml mapper.java dao.java do.java paging map list + cn.dalgen.plugins + mybatis-maven-plugin + 1.3.1 + mybatis + + + gen + false + true + false + false + false + true + cn.dalgen.mybatis.gen.DalgenMojo + java + per-lookup + once-per-session + false + + + config + java.io.File + false + true + 配置文件 + + + copyTemplate + boolean + false + true + copyTemplate + + + outputDirectory + java.io.File + false + true + Location of the output files. + + + project + org.apache.maven.project.MavenProject + 1.0 + false + true + Project instance, needed for attaching the build info file. Used to add new source directory to the build. + + + templateDirectory + java.io.File + 1.0 + false + true + Location of the FreeMarker template files. ${project.build.directory}/generated-sources/fmpp/ + + + templateExtDirectory + java.io.File + 1.0 + false + true + Location of the FreeMarker template files. ${project.build.directory}/generated-sources/fmpp/ + + + + + + + + + + + + + \ No newline at end of file diff --git a/target/classes/META-INF/maven/plugin.xml b/target/classes/META-INF/maven/plugin.xml new file mode 100644 index 0000000..d77e8ea --- /dev/null +++ b/target/classes/META-INF/maven/plugin.xml @@ -0,0 +1,354 @@ + + + + + + cn.dalgen.plugins:mybatis-maven-plugin + mybatis generator mapper.xml mapper.java dao.java do.java paging map list + cn.dalgen.plugins + mybatis-maven-plugin + 1.3.1 + mybatis + false + true + + + gen + false + true + false + false + false + true + cn.dalgen.mybatis.gen.DalgenMojo + java + per-lookup + once-per-session + false + + + config + java.io.File + false + true + 配置文件 + + + copyTemplate + boolean + false + true + copyTemplate + + + outputDirectory + java.io.File + false + true + Location of the output files. + + + project + org.apache.maven.project.MavenProject + 1.0 + false + true + Project instance, needed for attaching the build info file. Used to add +new source directory to the build. + + + templateDirectory + java.io.File + 1.0 + false + true + Location of the FreeMarker template files. +${project.build.directory}/generated-sources/fmpp/ + + + templateExtDirectory + java.io.File + 1.0 + false + true + Location of the FreeMarker template files. +${project.build.directory}/generated-sources/fmpp/ + + + + + + + + + + + + + + + com.google.guava + guava + jar + 18.0 + + + org.apache.maven + maven-artifact + jar + 3.0 + + + org.jsoup + jsoup + jar + 1.8.1 + + + com.alibaba + fastjson + jar + 1.2.38 + + + commons-lang + commons-lang + jar + 2.6 + + + commons-beanutils + commons-beanutils + jar + 1.9.2 + + + commons-logging + commons-logging + jar + 1.1.1 + + + commons-collections + commons-collections + jar + 3.2.1 + + + org.apache.maven + maven-project + jar + 3.0-alpha-2 + + + org.apache.maven + maven-model + jar + 3.0-alpha-2 + + + org.codehaus.plexus + plexus-utils + jar + 1.5.6 + + + org.codehaus.plexus + plexus-interpolation + jar + 1.1 + + + org.apache.maven + maven-compat + jar + 3.0-alpha-2 + + + org.codehaus.plexus + plexus-component-annotations + jar + 1.0-beta-3.0.5 + + + org.apache.maven.wagon + wagon-provider-api + jar + 1.0-beta-4 + + + org.codehaus.plexus + plexus-container-default + jar + 1.0-beta-3.0.5 + + + org.codehaus.plexus + plexus-classworlds + jar + 1.4 + + + org.apache.xbean + xbean-reflect + jar + 3.4 + + + log4j + log4j + jar + 1.2.12 + + + commons-logging + commons-logging-api + jar + 1.1 + + + com.google.code.google-collections + google-collect + jar + snapshot-20080530 + + + org.codehaus.woodstox + wstx-asl + jar + 3.2.6 + + + stax + stax-api + jar + 1.0.1 + + + org.sonatype.spice + model-builder + jar + 1.3 + + + org.apache.maven + maven-project-builder + jar + 3.0-alpha-2 + + + org.apache.maven + maven-plugin-api + jar + 3.1.0 + + + org.eclipse.sisu + org.eclipse.sisu.plexus + jar + 0.0.0.M2a + + + javax.enterprise + cdi-api + jar + 1.0 + + + javax.annotation + jsr250-api + jar + 1.0 + + + javax.inject + javax.inject + jar + 1 + + + org.sonatype.sisu + sisu-guice + jar + 3.1.0 + + + aopalliance + aopalliance + jar + 1.0 + + + org.eclipse.sisu + org.eclipse.sisu.inject + jar + 0.0.0.M2a + + + asm + asm + jar + 3.3.1 + + + junit + junit + jar + 3.8.2 + + + net.sourceforge.fmpp + fmpp + jar + 0.9.15 + + + org.freemarker + freemarker + jar + 2.3.21 + + + org.beanshell + bsh + jar + 2.0b4 + + + xml-resolver + xml-resolver + jar + 1.2 + + + org.devlib.schmidt + imageinfo + jar + 1.9 + + + mysql + mysql-connector-java + jar + 5.1.47 + + + org.mybatis + mybatis + jar + 3.4.1 + + + dom4j + dom4j + jar + 1.6.1 + + + xml-apis + xml-apis + jar + 1.0.b2 + + + \ No newline at end of file diff --git a/target/classes/cn/dalgen/mybatis/gen/DalgenMojo.class b/target/classes/cn/dalgen/mybatis/gen/DalgenMojo.class new file mode 100644 index 0000000000000000000000000000000000000000..a926c876493f5173ab742f7016b60588e01804b3 GIT binary patch literal 9894 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 c(3$VeF*uKYZ%y$ovVHr?`vTe+8vdQvd(} literal 0 HcmV?d00001 diff --git a/target/classes/cn/dalgen/mybatis/gen/common/FileNameSelector.class b/target/classes/cn/dalgen/mybatis/gen/common/FileNameSelector.class new file mode 100644 index 0000000000000000000000000000000000000000..15924831b1312c172ca3331cc8d5dd05cff758b0 GIT binary patch literal 1063 zcmb7DOH&g;5dJ0!*<=Y1BQKwTsDuPqpP+^1K})?vJVdeNHrb3}aI>4*43_>75B>r# zUaV5Ew8|ggk5a!`7NH~;58K<_^L6*v-7`Obeft66I&Qld#B2cm&nwYe)WUO9fe zupyAUAGMUgNL`0&eW%k@@l)9h=qcADUj`d8*49p)IkTmE0$$w@y_O8xD)c&Uo6_i> zXLUd7bfVCEr~|bwJF1}q<(nubkD-_JJvbyg)G*S2^;mY3#7RfXWGj7Nb&bGW%2r27 zvb8?kHwCgS9SaQaA09y2Qpnl@ZX?=>ePzk8{eL+v+hLV30#86JmoS832UkkCifaOs z|4#DWjt*KXE^$vcO1Oy?2aH+8ErF%~8il~3MRD7cUFmPBbm+aKi+^Txz%{u&BV*HhuFaOfe4h)@f2?`g?W(ZF*7}4j9E(Y3 z!zC9?bU<^gavW$8%$xG*dm%S5%iBK)ffB!r-3lK^hWZFbDNoRPhb%q7YIP5yTF!hy zwpRU&>{sO8WBNM=UhE-X-K1w1PL1C#3dDRsp<3hr6GO8oQ=UeivWy&4yEut)jB))F zSiux6P)o|tJ5GxQ=@}-8N$R7>{3bZ#V9LQMFo$5iGbzPKjLZ^MT(rb?QT#|FlN8Mp d0zPhAU}himw?GkRaV|M8;yg>)zNeGOnLiGF`(OY7 literal 0 HcmV?d00001 diff --git a/target/classes/cn/dalgen/mybatis/gen/dataloaders/AbstractDalgenLoader.class b/target/classes/cn/dalgen/mybatis/gen/dataloaders/AbstractDalgenLoader.class new file mode 100644 index 0000000000000000000000000000000000000000..874e96ae5fc09a932641627362366d8776bca50e GIT binary patch literal 2880 zcma)8X?GK46n=&_nKqra*ix`4B5PYP44^Ew$kLY9YG{F$)pe3g(}5%tW+u>z;!^j0 z!v*&hw{yfEPbhNK4<7vBPx81ucP4F9h~k%bx$oWYbMMS=fBoIV#%Ia>_)o5?Oh*h50}gauFPZ6M+j)mb{ANDo&^v zRS@1{Wi4;3f{NC*{R%3(?4+rnK4xXj{(L5GIzvW0O-e(|P8jL^hGWUSNUZcmELXwi zSR$(@jdaS)>Y1^);aRRO=cM5oY1>Gej;rs8yPjhtyl$T@=2JUpPu>-*YmE(Oayflx zHbui7u_MNDL(h9wT8~+-*U=Ub(ndC=55$j{36G)*y{erhMsu4yuvY6m?dadelF z^YcVpu%Ld<$5cF^;-rcPscGkE!pw;xSH(jLdRwpRTv>CoJ(MEW4Aa;3-SK`S!w{CX zUd9nz{bUY$j+IT(<7z+XAm+%Rop%yuaA_`AxHVEA4Q*JZU~&1{PiIucn1)k$Si>WD zRKsH!SMj)pC-9_(r!cPJX*{FiSq;z0^Ya*2u)r^WiG!VaD@_z>cmXdGvVK-w4KInr z%Oauq62&TMctsvw6$`J)sZGqhj?)_6z-bk4YIqB8vkV%};2jn3YIslB-WRqH@S%o} z@Ue!q=+W?rgs7}h@u`N-@VSb!8ot1n8ot8U3O1IH{c5-;KxZNh@T{QGZvZcu)VtX> zL4!ysXWD{j^u?z8f1BCi0XUO!Kh>RvD~;XqKUo#1G!wK|z3+f$ zh>Cy`HgY*L%ZU~(7ycDN6oF0iRh}I*BTGW90mOsYr9`D+R=Z}-a176Og7TH}hRsn9 zOpZW~^TP^4nWIUIY#Yi4CqQ-mW_R`O&Y2O`!$EC3V}be^GCOms@UtOD|7+;vF4Hpv zyb2bT@(C%<3{5?gyLlS7mp>|)?}r~`#AK2gjz<7Qol#&R5L)np35LPTAq&H*2- zih?Pjmj9l%MHvBXD3P{Znk?zrsYE@Vpl5$VFl0TPjmYyL1tA4xL9u ze{^*Ll?8+f2uCNN7El$PM0Ej?0&1ccp^>R}icr^3UqD>}a|^iUA{q`ApQ8mdl0JcX zTzP4lzL51i=C@Zi)53x?sFwZO14?^n63y+QXmjWS7Am-a>l74lJq<4^;D%MC3*+ME z(66{bcy3g17W3M}LWmRz&EcP;=NQx}j{XS-G=cB^y~0mMKN?9}fhy*(kvUw*{4Hk& zxAQf|6lIv2Jd<-0>#5-ujAH{oK^ys<*+hNq{B(3sTRUCrz%SV5Cv_`R%)}LwDyQ}Q zrIbosqJ|Chr3yb%$0k%z|3PfVtxWbQ^iod;LfAsiwW$14ek*QMvGs5AhE;4+v0cTE zfTp4oii)m3P|Njq>g=YJ)PHBCl(C1WX$tARxSbS1#U9?~aBpHgmsH5ou(W_>lUP29 m73cU6prnq@fj^*O45E&^pk;m_I2~9M`sliV><(Y<&VK+nT=u>I literal 0 HcmV?d00001 diff --git a/target/classes/cn/dalgen/mybatis/gen/dataloaders/DalgenLoader.class b/target/classes/cn/dalgen/mybatis/gen/dataloaders/DalgenLoader.class new file mode 100644 index 0000000000000000000000000000000000000000..efabbc814dd4e80576ca6080809f44e4c50484de GIT binary patch literal 32856 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 YgC6pI@>fKHVv4$A#`$!Kx(MF;2a?EOZ~y=R literal 0 HcmV?d00001 diff --git a/target/classes/cn/dalgen/mybatis/gen/datasources/DalgenConnectionDriver.class b/target/classes/cn/dalgen/mybatis/gen/datasources/DalgenConnectionDriver.class new file mode 100644 index 0000000000000000000000000000000000000000..eaa94aacd7a92b9467876763b5b5026b0651b8ac GIT binary patch literal 250 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 literal 0 HcmV?d00001 diff --git a/target/classes/cn/dalgen/mybatis/gen/enums/SystemEnum.class b/target/classes/cn/dalgen/mybatis/gen/enums/SystemEnum.class new file mode 100644 index 0000000000000000000000000000000000000000..47808c81f79832dd12c2660e62aabc56dabd01f7 GIT binary patch literal 1349 zcmb7DT~pIg5It$qCJmv5096o05wR^oM8FTIe8`|OQ{^FAhw&*5u?Ew0rcL?yS6WmY z9UY$iQI5N5W+=i#&BMLB_nzH7d+z4!taD{vbI+m7F? zHVpHy5jfQivX=zJi>}{15Foy=Yypy8+i?Ww#a(O9GCa$#7-mp+{R$!FiPBo}^@b@R z_qO}|i9O3}It>9++5ZWX)%faouDs<`f1jmA=k8qs)m${0;{rZX;rZRSd=v-H2{^y|e}hnXlqJ8=wmB1kte z?g{7{VQm8S7NaUx#K>ieBxMqrOfqts3qlY@;Tp5bw zjJLvm*y4^vOwwr#x2aMVxrm=ZJM)X@KSTbPS|&`_rWTLVDad0g3jRRi@b~Noq-|Xh z_2eCh5JQn+n}@T<;6r{=`p0i!Jn++foZDb35Kbzj*|KyJ{<`w>w4}y`)qM P(@=?doBtj1xR05?#snd| literal 0 HcmV?d00001 diff --git a/target/classes/cn/dalgen/mybatis/gen/enums/TypeMapEnum.class b/target/classes/cn/dalgen/mybatis/gen/enums/TypeMapEnum.class new file mode 100644 index 0000000000000000000000000000000000000000..123b154547ae232fd11dace1695a5847ce43c896 GIT binary patch literal 3866 zcmb7H`*&2;75?tbWaeaY1D6v>8WNO;LNXzlf>3z`WG0!Akx7D?JRAY_W^$PfOlD$o zhk{yLt;JH*zI4-Jj27YRd^212k=4w zCxX!NqQKV}U*h5GK~&*ocKe1vQsA3GGQY*&Cj|xtzRl)$1cn&DD=^IXJ%PIgUSae5 z0x8BH2;3v^LpEO(*dy>7n?DlR%lNv$KE_i5_cERqxKH2=n~uQ!0%zHLL%$7skBpdhb}G!al`oD@g$IsISUu)Mj6Swf zNJn?1UqfIh(qFQw5`Dcp=e`2HgFUhScn5iO#ya9Xk%R_sG(JGz1M%Keyq7GIBs!r? zuNnh1#&*VNS${OXQ&GPD7>8DLCHf*1;_vJmj3#2rp*PZ>(ojh$qw$hm?Ur!m+t(Qx zAYb1=yoW&WSIMkoNDf4LcGJ>*1Kpfb92gx*^By(G!~ye=8P1vcOgL#zX7d@^uwbq< zA50fUtwf=4usES%Vad5@XLDgX9`dYAW;1!yE>6-?iK}PZuV49w&wM*A9k^vEk{FC7 zHH7xua3G!5Av0IBrZlW=YW^s3z7EC9I z$HVxIj)TbQ80R66LIA(j@jLupL-<3MI-Is9>}(+)?o{tf?8>)>x@(&)TFmA~tx3*v zOhe5-&dmP(<>T*PeC@rbPX6w)X5}>Qg$B ziYm3QjzJ9Q7~)}=`Nf>GZQQiS+M?M^rw+{boBSFT{%I_~EWe`ldcs@7q$?}+l{B6Xyh80EoYwp!IQ z^+2wz)8y&>SCa$TaUwJ9KE^Y0&YfqbY;$}@tNrwElZGAjEI@#eq^FS7r;r4wki@2t^rn!6rjQh-kVK}C zbf%D`rjTT&kQAnnw55>brI4hhkkqA+1g4NQrI2K#kd&m5bfb`Zh${DRV=JWICJb_W zL&JpP9x#^j%R#n4B@2sY4$;?2LjDtUpiRSb8Q#Of>4H98fV}SwVp#DRPQ?nab|8MNw)#Y z>BocgPrQe)h+YO>bveaSBpy*aW{dY+;&|6ScekIWnm;pF^TWh@D6Y*xW#|He9#Gkd zmbX#Sa(Wh3safc$8C1&!(^wdyztb>gu;?v{@Tz^4s(Av{_&il|3^h2es;Mol>YjTw zR^U;pOT%LnDWLraH358Qu zso`@tN`>%ohY9(@Dnf4{aP3{4REw7Gs=_^04NuG)EUpcHb)H~BM|7-|*;`N7N7v}d z&BB+GHC|aG7tdhHS=1_`&L`{S#}rYoh@};BsY^5{qR}rKU1FIcZVJeowYtTqC2wOpf^CdD)xLN>chNHHx&rEGDTwTfvqg0j_R+7uHu zs$^JxT&=TCG3yOou9vqdW`klj8r5>6{Dfj|SIj13f!yRWn-#OgSSYv1t;(leG20A7 zZgZLKin+sBB=2yU9g2w1YXP06U zMlBukQpHH4?jqfc*FkME<#SMi;}f<+E?5J(3d1T_x22o^ht6D)DC zi=dXeA$bkh-Ua9=SUDPiF%cJmQJrQO__Q^H_ujsny-bkGKV@ gH@)gPsD|eQPj3KTP5U<*=?$2m;yhHqafMI*4-Cn6NB{r; literal 0 HcmV?d00001 diff --git a/target/classes/cn/dalgen/mybatis/gen/exception/DalgenException.class b/target/classes/cn/dalgen/mybatis/gen/exception/DalgenException.class new file mode 100644 index 0000000000000000000000000000000000000000..251c220dd62c6861f90a4bb74bbfc3576bb33502 GIT binary patch literal 651 zcmb7ByG{Z@6g`8;;`#sq-;ZdgVB8o>jE#>3gBCvM2bjQ^W!B6NK0eDv6AM4U#?sct z%G%a=XGJthW3hMU+&TB0bF&ZcclQ9+G3z3ZNn55IOgoriNQXj8?pK5kWuQ(<+YD@v zVR$Q0q2bC@xZf82;_>G7<@xQ2A+aHqG@A@#OXX93&OM*2hIeGNRE^?tg(1Eb)CEJT zER{HDx2i%P^QupsOgX5L5hpvsoo3uLWyr8rt|_n1{f1Cp>#E9)3_W`nmo;%_D44e$ zJ??zrB12MW9q9eAVWs~>VaWFg_=9)c)WL;K5~Ut6UywHI$zpJig0`-SU1_(;{R*^d z6AZz{peKrHklL8n6~h9rHI41-jMsIy5pMrR^l zxCOh8IKx!ksGFtP97YI_f3lE5nh^0ZiVSI3t!ziDM4o;0=Hv@2w}|}~o1>xmNNnMg U))jL)Vl+y2V`Rn1(8itk07~bV=>Px# literal 0 HcmV?d00001 diff --git a/target/classes/cn/dalgen/mybatis/gen/model/Config.class b/target/classes/cn/dalgen/mybatis/gen/model/Config.class new file mode 100644 index 0000000000000000000000000000000000000000..d4b4322eb265c7c05e5d726ec9398ea4bf7c3654 GIT binary patch literal 5157 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 YOBv2#f`-^x^1Q|w+)Dl~XGa_V2h26ZFaQ7m literal 0 HcmV?d00001 diff --git a/target/classes/cn/dalgen/mybatis/gen/model/Gen.class b/target/classes/cn/dalgen/mybatis/gen/model/Gen.class new file mode 100644 index 0000000000000000000000000000000000000000..e63ee24bebf19392cfef154977aed0c9504ec611 GIT binary patch literal 6891 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 G==cNY8!uY` literal 0 HcmV?d00001 diff --git a/target/classes/cn/dalgen/mybatis/gen/model/config/CfCollection.class b/target/classes/cn/dalgen/mybatis/gen/model/config/CfCollection.class new file mode 100644 index 0000000000000000000000000000000000000000..659ca4d27fb1816904774ad3ddc365d494d2964e GIT binary patch literal 1710 zcmb7@OHUI~6vzL!4_eCbDi0A+c}k(k@K6CUsHy0}0tS@CxEh9`3`}R5nW>ST8xs>_ z!orP-Cc4s%f(eF3BkWxGIRNE57~{D^Ewv0rHs_u>x##|W=P}=YecAxfkBcD)h!&#+ zUEG}Irkfivh@KF7(HB5}5a&V&;(P!X0vKQjrc5KHnD!DwIKCj=mqbm{6XKL@s(NCW zp-48gbW$hBQZz-j$uX6rWG<3(N!3+*guxr>m}ccseRS7mvwPg(h`a;CYNR;TeU>Tr?)gwHuO0)A;#unhQ`HJLnow? zgks;yQCCMg+_+1u{7W^FgLgP{F+D|ZI|UX~M$V`BRJL9o&-oOe%$CpNe|&-BPGRFx zk}CFFDNUtTRoy!%%TPLHOY-8FlyWixXrmD2k16)NF}wFbXv#>NvT|MJ{j1EcznjlU zKp0g5N>L`DoSO=6DpAJ3x&s&#(2603`u%xMrgd9QDx(i%CB@swFmTnf3|Xa)8+zmJ zqo?1$yx)EH{Kv{l*Y@L8n@`HxdHZ_j<>prA-Oloht<1x%%#-cqH(a}cK|JEz7%KK@ zCT13#RcbNJgeavXd0wGeCzFP5<*(lzTh(YshFpesu&*61y+#vlzd%2S4<6nv@;tm@ z&PhFUPHG#SC7?w`71?U~66s`g`a9RbJ~-EE$QC(40kz}{dlzsFb@at>9Q9=XPF{m& zwII30HTeV@vdJSv=;2bG(U0)#ONX3jJN$?^FVybc%F1&zULU7E=?da41c|zWoN@>8 z7J`Tb(sKw1Z!iZr?F!;61nGALX>0$rZ$32r}#n((Df6F9f+v zAXg3n;VZ^LT5=#Mc%1<@cdo$~F3KPfkA6jIbi@A&fvC4{^)rHZ!^P_eZPGG$!M86= zYYfB?!Zq5nQQEs3d3w#+RR~eM6>X$;hHeMJexfdbcKVL|r@HSS>NiO}PU>T%GI1pJ J4x;g(^Ec4ZE(rht literal 0 HcmV?d00001 diff --git a/target/classes/cn/dalgen/mybatis/gen/model/config/CfColumn.class b/target/classes/cn/dalgen/mybatis/gen/model/config/CfColumn.class new file mode 100644 index 0000000000000000000000000000000000000000..8673872c13ea7e30c2f09dc9e31aa928db41457f GIT binary patch literal 1745 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 JxEd*X>wkmZdh3*1=TRJgIZsdBTNq>FTk zM=MEskzR_?Zl6+?aN5ze;bv+GL5#w9z)95OqhSGu?QdKeb*6sfHm?XJ z%_Y^sWlT278kNk}5JJg#A?FwYz%idzY~!07v5>QsoUUekHjIvHhGvgR)G;`8Mxu2S zur^;`Gt|@7a!$48Sb~GeM5LTiERE;x;yQa?gAzO2^PCW3x0O_Twicut2Zx&NCQ*|2 zc#+zJ*>pp&#<4Qv#%rSD%|M4vu3OZae_`M6dapKv}dqAhr40M=8xt@+Df$RmPApcaISYj ziT1U5v?nscr^l^YmP7gW6sQ9n9XxBauY)Jz=wQ~8xNRNk0O$a>PS*4O$Snp-Nao9k zcptIPO`Lj|v*iXF(|%>Cmiptt?Ke+=rt=xz&!HOf)_5r=s;m3j^h4dS%{9I2dl{XY zwUzuLDz{sy2I@yOK34;EY~v4HVNj*SYp}k-+Rl4$Ah_1{ix5Xh*T_3U%2jv)i)aPs zai3E!*(jp3X4T58$2Bg_@Y5_Q)ff3~1ZFVj_-?xee7^omTc(rYqp zrEN0ZL)&8Xx=e4-HJR?C`(+yB6-VZ3M-@HWI@!23IKX7uww*+SGv&(cbje zB&9b}$93vlrD*y(#a5}y>Eh@TtCVzRveTtL7y4w-ZlM_36s^Ok8`|{K5W;pCdhWs5 z`_U4~&MEW&?ZpfwnI3dC$e?EpI@4cK_h%SHh@nxjc*rN*=?U)-748WN9}g9NC{(yN zD4Y!yJ`gIrJ}7)HRQMo0?B00{myGZw)5ELOUAH9vi9w`LC*=fTz}e+qoQ=Y`%gg9iEtrQ&0sfn+ZTWI9fdf+W!idMtz(Z$bP7#7|ogPtxOpI7O#Ih;j?!7a)Gw zf_R#;f;b&&x>V3~-?lW}6Tr;StQ!f_uIWVPh#J%(%7v3T-y^Di@F^7aj23mP;2fJB zM9!r&YE-SRK8ev8I*T?KZ_%KtKZU3&(K&j`70$XUCWe1R1x12K*|(0G-ROyaL8<(e z;`EzO)r6;Ng5P|w&I>6ij^WdxWv4Hw+3%s6JrkaieZh$P1IGK)r;*=y{1kD-JxkBI zj_{{sGN{O3A&NLD`8*&mpu#zJ&cYmQkQ5RjIlS`*ZR}{ygumgie*|!wv)Qv$3T2Y@ Q;>RbCQ3T@xW)V{V2k&vy-2eap literal 0 HcmV?d00001 diff --git a/target/classes/cn/dalgen/mybatis/gen/model/config/DeleteColumn.class b/target/classes/cn/dalgen/mybatis/gen/model/config/DeleteColumn.class new file mode 100644 index 0000000000000000000000000000000000000000..27f813ab41ba1e2435c8b3884a596accbb549efb GIT binary patch literal 1431 zcmb7DTT|0e5dKamO)o*p-MbdNlvapX?;tN#M`tSNfIK+9r0JoANmEQyNB@%#UJxB0 z`~m(b$K8_vnKnF_hdsM{&hCEu?dH$lU%vrVv7AF5r7UuoXHjNRVR0je1uW)Z;${X* zY~0dO)p1)OvaJ+-&k6$Rdje;|fL`FZ zrY~FagZVPN;q*a+%MtUjpyQ?o@bBk)6tYdo;PW0UdOT)BA)Y9Z4Or` hTLxE;wxvimf7$WOPh`Jgm_drz#=Iiy8u>I_{|8Z6{D%Ml literal 0 HcmV?d00001 diff --git a/target/classes/cn/dalgen/mybatis/gen/model/db/DataBase.class b/target/classes/cn/dalgen/mybatis/gen/model/db/DataBase.class new file mode 100644 index 0000000000000000000000000000000000000000..551db9f603ee9d9e0a35c6519dc340cbde325ccd GIT binary patch literal 4471 zcma)8O>|pF75+w&^dJY@5uw=<$3p=2EcjifcdLDCf>~m+{%-lQQ zz4yC!^r!#+=Jx>3;3s(;#Z!4yu-1;)6 z4PRk+@w#`zD^|T)rMMC{gIeXR!a%th-0++8Rj<|J$#Ap5llh8YTlPxpUWFfnJ0Htl zxW?U9d$qeeWQ?}Mpjuq=8noEI5>#ql*ltqy-rn7FyAkYOIZqpR@XiIVI$z(|sP7;d zv#c6O{h_y7_04>s(X2Q8X1GZ>3a;5{`cDPV(!uPxpcaJZ71EQZuF&84dYLeX7K569 zp}n!{H!q1HiB-MiRj+u>K)$2JOt==%#;L_ptyuP|L{r?@T=l}BRn&9Zsus(u#RV_) z=De0qM}{hXsI`|n2=-5&>J17{eJHth+kqPL%H>}BCntA@boYulKM?AmXporwwZoz3AZU+@LcL#h7tt2X-%|?zSL^eC|D%CXonZm7(hLsnF`ZW5i~R z;P>}nF`3`rqifdOZUQuST^=#<(w_qi-*QA3a$?=zROq|mRoe`ML(L1ia2zU`8EYY2 zh!@Ntw|W*t>yj=a(K0j9>fEA9Dd1xZSG+3AjK^bZq+sNEx3nZ@qrJT3McNyM*~IDF zWRSK=G)(L6dK)Dq>&Ap#!$f?-u4OibLMyTMk!|{|b~Plon2GpCnpt40S*f?1CI7)d zYO>I&tJBiQT)YqOckm4t-^90EoW!Jy(;|wPbntB#-@$hk)RQh=!A*s+Wbd162i3CQ zbn!jB>f$xbD}XF_@qPTj#a%c?<MQESOH-X8Y)|b#e8&Uy?X!^Bqno94^&2ij{i3QuT|RvR!hhR(V$1 zF}qd1=0EeW*ILuW8|hT6HV`ed0UfV5D@Cv2mDV~|TJd+{GP}E&3R)NH;T(&2UBOzI zPblR4TDf&KkcZ+nTM?DAUZX)hg?nt}zN>vjxg+pgST|1@tGCf+d^&ZYJBXG!*BN-1qMtVNQ^JJNxlW2M*L-oj_=sCywh<#6R&O)O608cN|4(k9D zQ*S{{Z6kFHX)|QZ(Dy5C^9;q#<$%H*<|DV`u^URp?wTcbqP!3(-;8258^wq&4@n62QA{yl`%So(^n7@D8+UA> zpg%I(xN~Vn?laLaNw1KuYwTzNQ@kFF!fZDRv-r4x7N0~t*Md7VJE_5dP9FF=;M^>Q)FeSt~OOvmVLiq8c3r>xqa zX_JP|g>H}wq`skZfdwFRR_qcsR*ogT{DsxaN9|sYCB0--;?^EsN{bXPAF~2EkOcBO zE07gCkON5|et3 z@$eR3zg-<(9mJqIgb{TZW9q2B#x#cUZc4_Z^bYdz_jsXs=X8f3GaY`_+Jn-2^dNNt UuDUCBmAwa*^i>LFdXs|xKi2Cy?EnA( literal 0 HcmV?d00001 diff --git a/target/classes/cn/dalgen/mybatis/gen/model/dbtable/Column.class b/target/classes/cn/dalgen/mybatis/gen/model/dbtable/Column.class new file mode 100644 index 0000000000000000000000000000000000000000..5b97f19ff4a9933c8fa166de930875e2cfe1ec8d GIT binary patch literal 2669 zcma)-&vV;U5XZlgf5?`VI5A0~{0z`SVuuPS(2}%);!={-Nuf3YLd%S73)`tIr?w2! z8yva9iQ&Sbz$G(np*TZ_0d6oHIdFh~g#mV-WXBfIGaS6D_ulTl&)ePi{OjL$egJSB z@94uw%VvnU3Yw%%azBxV2>k37+%U*>clrlBJmRKQ+(pcw3f3f!cP{YG3In zFsk;uR@dR_E?K8M3cqT(RmW~Ch@Wb>4R1w3WPV{wK{Vg0l1;kMaP7@*vuw9ZR@o6W zt%~JrS?vaogUP5@Z_oydg^FudEvII?X7gIv@){jed{ZpPtd>1?G4m~_+jQv+dd>DO z_Tgsc7i8zuJ3}_J^Zzwr*omTNRjzDUy8?$&t>G;{e6gQIjx!jfXyf%k{!+AbFk&b& z^s^Xv`GdY!Fbcf!ULqxzw);M;;84l~!}tYTKojf{`;`DDT)6Z+T%& zfkJD;oe(T3NVd2Ye2ln#wQD(432BsVDsHR1Lw!=WI(5ImRBZ}A$!NpfFv)ns6MC`L zZCC7b4eo)IU&3R&v4IEhpn-caYhZ@OAr^PDxQE4kEDmEVXl!|Cz8!s9- zfwvW?jjDl5xNP7QP8)cE7w+e{Q;gwX4?igiW)7zEBDH?+4q5saiQ3+=-I`YqWh}U6 zoSG>=rE4{})wc6ihmJpz+`j2H9;WM?fr7h`fXca`7eeK92u&FgnvxW7&Nuw}jao$+(z|)5d_|8{iQ;qZWSrL7tI=Xkn0#3FMP8Abd?3ZKi5@0DMNAc=z?Alm?x}ke&%fqb==6Pqh;Bl|*GS_VdZBJ(5j`T<#}dB7 zD(+w%-wWb7pJi~p3iLcI5osEyu}ti$co0&EYJcGfJp>bJTBMgfILy+)E#60(F@~S5 zU&bV5MQow)pF~N8cXIA^|w|n-S?`QqbzkmG=;2w5$RB>C!9hmbl z@csfea95f4l=(pg_jP=T2Rd5#NDZ46w9D8k<6{Bc3cS(K@3~PdaH01?{vgd!?0TkJ zX$#EnxsEU6QD_Tn&$zdGmTwNE=h(hEJnGBXjm%^o3~bLF^kdogY_pSG(B39k*&V#x zl|w?+QYcUQj=2|yuJ6#TZMnW1ZwnOb>(2yA9pVU_@43FcI~w-w@EZlF4hNR>p2^Tv zcD7iG58Oy#<5Zk>gK#Llu0OC}Dvfe5NLdP)^-}?4q7+RnjiA7-vz!#DI(D4Gq`|M% z*Jt8OY7b8=o;m2%X!@ST`s_7I#qxAaj}FIi-I?8fMgj_4r_}B^^-E(()5+IKbF$}B zc4>Z#0;=xC()#|1Jj{}=?**gKvLCyuEH31-dPfzqfhAljW81(dcxd1p&X=)c;8S!A zJi=!NYFK3cTvZ0o%Xn~`lDQs)jwuhN zbuiWynYqk;%jbmJmZDgOakTHo2VKVxLc1d)X6@$xr26FJphV;%nm!rKooD+_e2}~t zT{dzw>PN|IqC(NlROG0%vBnp%%2%_%9}5D6O{|NwSq_|QTw~pET&A_jb-}OE_yeMG zjKV7ve@jlRaMbAq7EmJ6Wwk5ai&b2qC2$qjGMq=;srDL;-%)J-iBbXkvp83YbS=SI zPWNUw3il1XNhH<~-lk76yPMcRMIjzz?pLlApjasdz>OTEN`{nbU8DaUT+eX6=2tP( z8qG{wF+oYS-NqdMNR+melQ!X`W%0W~U#eTJTqJgS%e$PthnpM~Ta#bKYL0BRS*ja3 zs&kXz)v=x({t3l|VyjszAEWX!78{(s#{6sOub};cwPtN$;#kNzDoT{50-cJw!r%b+ oG0#85RXkuAS`6eSXInXut%=B1QWOFWMIFV}%Oz53(kS58f2L)@ga7~l literal 0 HcmV?d00001 diff --git a/target/classes/cn/dalgen/mybatis/gen/model/dbtable/PrimaryKeys.class b/target/classes/cn/dalgen/mybatis/gen/model/dbtable/PrimaryKeys.class new file mode 100644 index 0000000000000000000000000000000000000000..1c0a80a161704bedcf11b457db034287775dd0b3 GIT binary patch literal 1593 zcmb7E=}r?-6#j0P>B1n$s)8b}ZCOS@aVe<~jES)U5)35%n@(@W!CA<3s_9#4q7nV! z1NczJb7rQ^bchM0$=rLE`{qy(NZvY#3UPciQ%c!7QLIJfAEMb|&6&6$pv;69|kqPxMc^)(tFMV@+M4bZD8b9&~*v&`6oLnue>jb=#D#=JZ;6V0EpkrdD>7XpZL zVwy@+K!N4Uyc8HUWe~wcwV$X|Q{^RU+vk**uK8$ZIL>4x9fq@*8LnyXv|rbqwEHCq zFnEblJ%~F$)z4_S_a$Q4cbSeuCOsIYeCTz3L%z0n2*wjVT;-`%F^2I1)>N!xLq!SY z0v@Y)f=v}q@l3@iu26q3GO-D03KXtH$YsBEA`M!T1;cYR)ALN4Zn`?2ONVWfE!-L! zL)Dd^cYI&(MZKNvCmn9qz(5VYGQ4m!`!tLKLnVm9)~oLYW(jxKJMHbe$G#QF0g^z! zPa)Aaf%JJd>dBEZJlE*@zH|dx$@36(EYkl%k^Va}^rP}YU?h}OlBsxfS4c-yrtejf zUXWhUsn&i#)XtFkj_lX)#RPrJWCbDQ=*1*^MZTEAG)XjZn2m8>kth4AwQtBS{X{N< z<2243AV2*6eY(12LA|sw5|AllJFe}agxR+p5jFF;T=gEE( zw_=YLTZ(hbhA2^PE68It!ATi#QsVk8(Ay|)*6=Nga+_|8xIUblF}K#qIx4mY1$x88DzF+sHQXmbQqLUBK0eV;m31&TMDW zJ^>O41Q#H|7eGS2;eu`AV&a<5G$H=SNk>YDmL{@&&U2oZ-+7+roWK75;~{|a_-GdM zSktk9vpNi{&%o4i4jXFny3V!pYV?MVH}RH^3wT?N-qG-`THDmHrQtn+>7?t$tLFr2 zO*=3<(s!M}?A>k4#EZ>z9CjSv?6ecv_8oIiy*FvL)2uAlINnfrX|Q zI6H%0+lf-20>x%%OaG>fJQZUk%qctp!wLc?YWOma9Zt_q9&>erw3;3E`Z8kJ&nCld zg#MrxY)%wrq+7ALH{ba@5m-BpoxoJ&xm}uN>_|Y+O}>>#`-^SaA0^>Txp_<8k)|&L z*K8$`7r2{8B?_Q;R4j1Fe7Akev6FH0kwlr#wmdhG$v|c5<0g}4x?$+D>>T#OfFIwd zwYeL097VBpoQ>952)z{!BHOv<`HY~a+gn##V?SICY(I?YblXX~VMjyVz(rg#P{1<= zinwgxeKeRQ>xzae2Cm|ofe+9yP{Oi-57E$I8Muxc8k$PDZD0qx0@X?SdRRnd_9BnM zBo-W0Ab)AJ-ynb;-E?>fnlr|HG)i(~#Xz~U2* zMa9A^yxtagLyAH{^$tflK1DnWrii0DGW-L2we~wi^*%DcahAa%-_z6qzQhT>PYkv2 zJYL|8`l&abP}L+OU%w)odau{+AzREnz|>Ee%IvR=&2sxyE>2T4eIHtV>1Py`V1|Mj z3VuOuX`kM+Y5WoifUkIOf6ZNd!${xaC47epzE7E|!)TA0>Req)nd^9&qYO0{af&&} z;&jTKo6kSODRGGhhu)S)+zDqYD;&o6)f0AifH6951J literal 0 HcmV?d00001 diff --git a/target/classes/cn/dalgen/mybatis/gen/model/dbtable/Table.class b/target/classes/cn/dalgen/mybatis/gen/model/dbtable/Table.class new file mode 100644 index 0000000000000000000000000000000000000000..a14f052b6bc17dcada77b0361265d72349f994e5 GIT binary patch literal 5043 zcmbtWTW}lI8UBtXS+=y!#Uu`whNL6}Uy=w2&`W|z;t()6jvJGtF==5fE%GMP%2}-- zY6~s*OS!eQF!Z_HW_X}20Rl{?4?Hnb9(ipZJ3R788R++)T}#KyYDNxvIOphGzW@90 z`{_3y{u971ypqEPEac$gR6mArT84@YRT(@PYBDU!a7G3{i+T=u1UWQte;yCuY#vSg zN`_x&@tYjh;=vpq!f)m5ck<-nEFQ_?Q3Y$#^BjMoV%O_VT_IaPQ<=7_j>6#7Df@oA zP_eyoVK(qxue@8KPxiv|Uf-$O{%M6=u~unRy(zaID69!zH3GL%kR871pLNTg9W;D` zj>nGoOclLC$*z0=x7^5)3UspU$raW4|KYX5rQr*H0y5BjvTVebL`S= z?Y`iEQ*iQV6e5=q}_UHWDNQbbk0Z zboeEaifw<(t$p#`6&h18#GEtB@_#jD$98zfs6w#>qF@HMrYOU}A(OHfrwoFrR_aGM}+`@#Zr?4D%VgU7OE%6PnL! zcbjg_XJW9`yY=ZOdItN|pNjaUBJEdS-7{yo?k6U;G zPg>ZBD=lo1;c6L%F=F9|xXQw1xZJ`OGW-CSvvYOx^`NC}y-q|tmBrH*p26?4c-F#m zc%CJ}!V4%`coBb480`ix%zq0v;-)PAXyGON$-7#ZK*u8OoJs;P=V}%&A2;DQ>8sU zEpPgv9eHm{%`X@1MZ37L)Mo4E$Lvvlq0(+^oHGr(QlBg{9h?cf&ak}3q#u3xCVVn5 z&{HgB3d=qyBJm@0jMpK4#{>Q7k+9{eM7m&Oz_$^=6(k#`T(^-`d~GeP%)H z|2F<-py_)|49**P#`NL1o&QeoTyfqs`aaa?2k1G6R5+!>DKnZnhu*(wfE^r%kl{Fh zG}A6m=t06k-W)d`XIhVU;fCn( zIB)mJ?a{Gw$hN8E^zLmWbh}0v3U5USf-V*k!A!mg%OuhlCo+>r$b2G^pC%LOj}tjfB9#tAB&LMO?nENFIFTTc$ev^(xj2yrN#vmp zL?oz%$juPQ{gqXo!6OHZ<6L)n%ZVk-pE8bh}*cLkXBq47_XxIq$ZjA z8o4a)*z^_2DBOvuh};4Gm#DXd+}L@n>%sB3f&b1F{D)x(t0lwIa>c-hFijj$cP2vA zd6W_?)2JWOSsxo%y)CR>>99mvGOA?OMr`IzXw<`8%_PRt`glBjq6LI?qMhnLOOB`Y zadrPqil23$C`C@xJ<^INGu6{^BA+J^3ALFe$X&@cOUG^Y9}>FIflyeLO`C1OR$_-z zj&gMj$2p2;Okbxv`1-%}^%sUL)7L*|9T(;25|z)ymH)D%@^=&DWU}&^xbpv_@?RT- z%zz17kg5FD*hcJ7`CoALOWeaTu6!n0d6h<9Wei!S^7q0flEOTS5u)k&-nVIAquZ#y t1mzV92~i?$Z*>xRi5_J9*Ch{U4o(WoG~Y literal 0 HcmV?d00001 diff --git a/target/classes/cn/dalgen/mybatis/gen/model/dbtable/UniqueIndex.class b/target/classes/cn/dalgen/mybatis/gen/model/dbtable/UniqueIndex.class new file mode 100644 index 0000000000000000000000000000000000000000..ccca1dae3bde4f5dd19b176d16edc1b9dfe3cd4e GIT binary patch literal 1917 zcmb7F+j7%J82;9Fg{Hme1N5Of{a2DbveS!XJhR$=|J`rD??0^n`S-8C0o=h>1y$Uv;1;Yh zOnf?vRovF*9c_MA!rcl!$Gr+#_(BhBCA5oJFXBsvitT&RQ1;wVF`VhW=09*NQm$v| zl{Q0p+jS&YQ6LyLrrhg2TUrC|IYL^)gFaVoXvK4XAUtc(SG?~Ds}o<)-XJg|db7oc zgj7qAJT4t;TLrFkw0GT=uG(P8*H>OJ6gmXMaJuJ8u@w#bB6zOx^kLuT-U}YM+D;b> zYR?TBR*yw#N4nofqALgDt(M3KgM=i5RX-L$s!7u{k^nN?ILS$dsv}ealf=GOUzrLo zQG0M?@x(E&hLiWq)u*q~Di$VVdayr=>*n=jtMORm5WxU*nr1x+cEG6B9i=r4n=pZ(mVS9H-1P_Y<4Ak75DO`mcpez4ejp z4=u;{9cl@h4t+@<&m&*lYE-+X6hCeT0Y69zVsR9yxE;q1s)|#ST}ll@70fUZx8&OP z%1eet!tMC`2hZeg;3_djVi+YiCfZdZ&<)kj)}if7I|>3J74`8^2qJUE4;+i{b9-;3 zE3`71+o89Fw9SW#2P)ik)n3<;ejqwLq^w>4pHv@x8nlQ^M3V=Da_0%@sJ-~T=u(x1 zQ9q2|5*>*oQs5XDaKhy z_NF)*_XB)LNK`}kn0%Vq?brrN8u1V_ztUO`nw3@nT+J{lrAUd^W%6Ifl@#YY`f6rI zqnT>U$0&)mo0y@05v?uZWQ;i(Y5cB|FVU@6&JuQV%Qc#Pg6lMDwibOgs~KWzOjBLW zP@NeEua1@U@K4Cc6kE+&@erk-G1s8kdz9a!@(#u?SZ>y4$Bx;IqohR{I?#!z3ltpS qF3R+8xP*HYh86{Kjb`f^k*%@FR$LSe4NV>SrSk=%)FdN^8~*_lp}>3q literal 0 HcmV?d00001 diff --git a/target/classes/cn/dalgen/mybatis/gen/model/java/Base.class b/target/classes/cn/dalgen/mybatis/gen/model/java/Base.class new file mode 100644 index 0000000000000000000000000000000000000000..12cc8f50ef4c3dfb17031f4169869868dca1a81f GIT binary patch literal 3571 zcma)8`F9gl6#gbjlW96_Ap#XqC<3)@N~5?UwL*(Xp)E)&Dxf$?rs=ekOi3n|x&h*b z8wzeL?t1h`7sTQZ>hT<0aQlPwc>La*Bu>)l(I5J9-+lMp``vrL`=*!v{`wmL*W<$| zI&g0k_hC;x+ObzG`^0j;iU(BekK#e-Dw0twLP{*@C=U%4W8x$uG~>eD6w*WkCSi#s z8$qrCHm1aKKp5o3Qi#GqF^Y#Ut>U0CoKf+xibqsDs^T#fkE=MO;;@P%DxOerRK=4K zJQcyy3hGmqUMLLfSwlf=a6*4bPgr^`lNfRGW-hZqK`3n$QVJTT^wgxDF-k%xbSxx?lE(w)2krZ-m#mB_1kG8Y92Im#&9v4H1eY&DNzPHrCYo8yeal2Wyl#f zncg*nsazthTNxvl$j&5n$1EhIOkY+)mak7Q7(}UM45$C!+AeDEn2U;5g(|DX?Q@L; z)+RdJ>1{w0?^P)(;dbiIxO-v1+m~25zPB@NbCf>C6#b~z(`nb8g2w&(-Hyxb6oh53 z_K+e~YOUI;al|2hHc-}+JXR2;({*L9u9t@uM40MkNx2AfbS06Tyyvn{6wR|$9ouCq zdDD}!N==TA*u{Lx*kX#7){CZei}q-^2{%XZjD}}%OhW?KYUo5$LyBwp1x>NjY34ZRV(uHg;5so@k(a|&t)DS|WN z2G7rmrAtKYMm&PIG>qcy2;R}~F5V+6EjyRd@IF2uPtBae`ljuoJ1bEkkE5L&+J3d4>yeY{k^-V&5cibc>dEZ98=6}(;DzP2O2_wa; zD^hkgk+JQJWh5wO?HqqBi)Zoy;LvC}V|r6Qug|!#TB=xAIUvne+4)RD=SwqQc2)4c zMt3t0x{KtEDN9c=y=^|@GIxOHYJ5kLWlb9gcZ@0Uox%aKs8CFn3%sO#V8GW+)GQ3! zP9Go9$$30+RMeE6b96JuY?gU*=pWbfBgTQEkxLmHI>byl_Mkm&Mbk~l~4J9gz`vwVIoF=19KN-AyD3*$2V#Z^QqsY#>YRFMha;*;>)e7!v^l>jUG zP3_=!JdA*N8z=?D#L8bj6Y`hCD}VWbK*4oVUWY5hgHYMuh-S)sZ@AtBg`c|4a|nG(ApqeZES24! z%XO8@w_{`Jaxbk#pm1mWON45}-;6p!72%h-RwWO@yC{VSyvY|xT`iD}zCil?fz;Ik z86c2t^8gV&5J37XKyE^idr{eQsEdVTky)sgeoTd?+5PKac3!xFa45OQ9zobam&^Fx1)g6|}g!4?P%? zrmznOkVPIv6mXRPe;&s)KEXkJfk$MmZjek`O#3*!W^pwJD1}6ADx5mU7K>H}@Hw_q z3Sf}ujR^gPp$LZl#HK(imHh6~Nc70yPLQ`XE)!lR(8o(T$yB(hPNj*#fybG~A*{d= z52IQuFj}!g!Vtm9qZJIcvqCK|Em~@6am(Ege1VMk1G&5w$cF^-(L6xJLnnZY`T&{5(pn(j`T$XJcjXPdDEk2%nZ*@f zU;(KdTc%vVl|kGiiBe#0wl^*$OkG#qwua2$xH$YqL8h0aVz^@wDb$n`p u@A<-AL<~P*Iez3@_Y)uPpV5a)q~9;tgI_rdzme;|<1qf<&E34iq4@`eDD+qW literal 0 HcmV?d00001 diff --git a/target/classes/cn/dalgen/mybatis/gen/model/java/DAO.class b/target/classes/cn/dalgen/mybatis/gen/model/java/DAO.class new file mode 100644 index 0000000000000000000000000000000000000000..b80282729d2520c11b8203e224cec6740810229d GIT binary patch literal 966 zcmb7?T}uK%6o%jNWBuB)wCqdEKxllb+s-8)46GqT$%|y#OhV<%?%U%k`Duj)L*Se?W{B7A zzI8R}HLc+dZ+5AYs5>p*ZSbKja<>>5-`XRFBM*)>K^f~7?*pqBqp{U5Bf>m0p(+0$` zMj6985)^-npW%C)6DJpnlh|;@RmnzH#nKCW-_}v818L&S$Q@ELS6q96Ce9(KH<4NZ f;-3e}E(F=a_977fJV=f}@_&Gc!3vNadGy^cq;$e| literal 0 HcmV?d00001 diff --git a/target/classes/cn/dalgen/mybatis/gen/model/java/DO.class b/target/classes/cn/dalgen/mybatis/gen/model/java/DO.class new file mode 100644 index 0000000000000000000000000000000000000000..68275ca508fdc42965dcbfb2815f80d08720c43f GIT binary patch literal 975 zcmb7C%Wl&^6g}fS+$3&VN?Xdalu}57U>0nEL|H)8RYVp=t;B8;4`#~5mJ$cVUx5VT zvET#vD8v~%MGzK&&CGqAd+zi5kFVbV+()yDGA>tf1y?I5;aUy5xb9=m#|?p%7e?D~ zs;2_${ZsW?$ysWw?3-!Y7N{JVC|2ogq6In&?oNLc%TU=!$8!93s8TbPnVf{$%8csJ zSV!LOlB(P>u}QlEg+}vOp!kF^fwjJg_0!pSs3*_V(9*KePe#fftBG;?+*nLs8di9) zJY{ddT(wB2hrjyTXfzi}C#3tA@jv^is4&cP2;6NfFYIgvFI`Y?z@aWhJyug@+#Mxj86`<%wWK&s zVt&@@QJP%~*RvYyH{9nd9lG-o*jbqInTO-A|9NV>3XW4?tC4TYsyLE^;VH@6&F9$T z*_L_B0-o!Te}$TdDhiZ20KTiVJfcnT4_cofTA$&4MB#mgtn;nX3)E4>Ce|D($6_7l zsPXb}o(RVysX3lf>jMh!D0mD5OK?W{TX1O}oR_mn{}#6SI+7lvT*APS-1&l{hm*x( a9mnZ literal 0 HcmV?d00001 diff --git a/target/classes/cn/dalgen/mybatis/gen/model/java/DOMapper.class b/target/classes/cn/dalgen/mybatis/gen/model/java/DOMapper.class new file mode 100644 index 0000000000000000000000000000000000000000..17bd1994b63f2e5b80bc4c2d0d1625a44f4d3c19 GIT binary patch literal 1715 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 O)Nq!RPVGgW{QU!Vo4Nl0 literal 0 HcmV?d00001 diff --git a/target/classes/cn/dalgen/mybatis/gen/model/java/ResultMap.class b/target/classes/cn/dalgen/mybatis/gen/model/java/ResultMap.class new file mode 100644 index 0000000000000000000000000000000000000000..5589e6027bd65f85c28bcd411fa7267edcb48852 GIT binary patch literal 3068 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 bh25m|!&8m+J=%|9fw3BVbnzz~bN>AoNW!mo literal 0 HcmV?d00001 diff --git a/target/classes/cn/dalgen/mybatis/gen/model/java/domapper/DOMapperMethodParam.class b/target/classes/cn/dalgen/mybatis/gen/model/java/domapper/DOMapperMethodParam.class new file mode 100644 index 0000000000000000000000000000000000000000..c0b65894959af4663a1b22f2f24e2022e050f095 GIT binary patch literal 1661 zcmbtTTTc^F5dO~gzOI1CO%Mb@X}7?lfKs_dyd)SdCP0n8ZQD(|WV>6pTN9rBJ3eS4 zU^Fp4`=g9=&MvgHOJd^7%$(V|eDlrh??2yv0$9L?j4otTh+~F}SuWxoAYc<2wp6~4lW5@6+PU$tDlBQA0h9_)) z;=XjI6EH>9FGcl-%*kg+o);tYJcB_d@4-1&GWjna$%D?T z8P@)bP=>+wi`i_LR>^P`jA2B<6Rap0=GH1k5?E6(1v;FbW|lt>O`7J6#`((Z62oj5 zsq`N@s@4KB8tqkEaA_Ax9XO=l>Poe{9rzeas7O#lD@ literal 0 HcmV?d00001 diff --git a/target/classes/cn/dalgen/mybatis/gen/model/repository/CfTableRepository.class b/target/classes/cn/dalgen/mybatis/gen/model/repository/CfTableRepository.class new file mode 100644 index 0000000000000000000000000000000000000000..0b4624f867588914e2562f2d5485d75e62732dcd GIT binary patch literal 23305 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 CRC5&o literal 0 HcmV?d00001 diff --git a/target/classes/cn/dalgen/mybatis/gen/model/repository/db/MySQLTableRepository.class b/target/classes/cn/dalgen/mybatis/gen/model/repository/db/MySQLTableRepository.class new file mode 100644 index 0000000000000000000000000000000000000000..d97064c313906f70c143ff563f772b96d7e7b67d GIT binary patch literal 13551 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 literal 0 HcmV?d00001 diff --git a/target/classes/cn/dalgen/mybatis/gen/model/repository/db/OBTableRepository.class b/target/classes/cn/dalgen/mybatis/gen/model/repository/db/OBTableRepository.class new file mode 100644 index 0000000000000000000000000000000000000000..1e9deda4e1030c014357bb3baf257a110d6e56b4 GIT binary patch literal 8625 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 literal 0 HcmV?d00001 diff --git a/target/classes/cn/dalgen/mybatis/gen/utils/CamelCaseUtils.class b/target/classes/cn/dalgen/mybatis/gen/utils/CamelCaseUtils.class new file mode 100644 index 0000000000000000000000000000000000000000..d14e1547c5309643f774e7e4d3c26178ff575d28 GIT binary patch literal 2574 zcma)8TT@e46#jP3AvcZ~g8?s~wOWM$rmdD<5G=-9G+as~3RJ^Ma)?L63Fe&O{o4Ks z+nKgwAAGfaK&GAPYdif#9jCSZ_DL|I$%D*fXRWo@+Iy|BnX1a3zQg7Nw;7k@X|zN8S&^k0og<_;6JqkUBLzJ~Mt{YDPfB1-8UXmhI@4lh%tB zLt(xd0bgP=lT1vWlIoCv_n2v!&X|DG*Pj+pfdn^s{Y-rsCvMLAYv8MmC-l@+5b52S6LACsR1Kg=ZDD$rxE z2zczQz|N-a6BVl6BlTPMjSB2H=6qGvtxgDo;|nYiYZ5>`E~ z-6_3+L?9xy71Pm+<{hKKt}g4QCD7Hk(3JCtOO#$Nu;9)X+eA23s+4oaX;U)S`Q}uY zfWs1Q4F_>Zp!@&O*WmEM)Nl>gH59SzgQcN_6%98~)?mZYP{FD|^zB*KFoeT0c2(Yd zQ^PHJ%5jWpxQ#nf<;D%%mFhho?rV5}hXUIYsj0Y8cFZNy$di+$B@JU3_2H3*$9SUQ z7)Av;HoLH=XKkaLILXpYyOhao9FXBGEG?1BCX27afQ*^f@VPuNREK3Md(Fr>n@rUv zBv+@Ex z)SKw8w8E>Hu2(Dc;;S0nNY@*VKt&g*PuSbm1sm=L)&nhI_$05)ciAq zXjKFd(sNW$lxO)x0i|W{Ov?*hQ(#J0iU#sHzzuyn8 zA@G9tE08&#LzwFhsMyK;d(eSigs_LwUKfHx*pCk>9cS@L=0D4*c~-c{iVOl#;O-6j z-^535-Dg?b0ZedbAKDmm4)5awp4^E%J&*7nR*s|emVfs!?84ju3m@YX5)tAP@+l(} ze8&B5_`R>8`7k2HKNt`q5>&-s*h)Y-%2hz=>~X>NMMIf&w9DE&Zf#XQjyLe(tKA%s z&q8zfP>b+H%WytLH9FavEEHI%(nIXs;xdEQc~bz^{%z zM{mzlga;z(Iyxjn3Qa+(E?WxO`eR@dTVpI8m?4TOVwy%fE)kG_PYcLru!g3|Gv#PRYjCV%s|yEPJgTs+&>FU_AsnUH$?r|oh28Eb zbG2Drh1IP#fFG@8C;LKy@bcPmrdOTFA8S1@_cOMKBkSl|Lw8NwQ4@ErV?*3k7k4wk znnO=r?A;{pp+kMj5AtH*4zs(9E_U!f+~ F`aic*88ZL? literal 0 HcmV?d00001 diff --git a/target/classes/cn/dalgen/mybatis/gen/utils/CmdUtil.class b/target/classes/cn/dalgen/mybatis/gen/utils/CmdUtil.class new file mode 100644 index 0000000000000000000000000000000000000000..73ac145dcdccd6943f84f2bb898d422e729deb4b GIT binary patch literal 3035 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 HVaNXfA&avP literal 0 HcmV?d00001 diff --git a/target/classes/cn/dalgen/mybatis/gen/utils/ConfigUtil.class b/target/classes/cn/dalgen/mybatis/gen/utils/ConfigUtil.class new file mode 100644 index 0000000000000000000000000000000000000000..e5f424d1883bb440558a4b512275e789a907ab95 GIT binary patch literal 5990 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 mybatis代码生成器,参考蚂蚁金服idalgen针对mybatis重新定义的一套代码生成器,idalgen在蚂蚁内部绝大多数应用都强制使用,优化版代码生成器除具有idalgen类似语法外,额外提供了常用的扩展功能 如List 自动转 Map,Map>等进一步减少体力开发 + +[项目文档](http://git.oschina.net/bangis/mybatis.generator/wikis/pages) + +

+ +
\ No newline at end of file diff --git a/target/classes/dalgen/config/config.xml b/target/classes/dalgen/config/config.xml new file mode 100644 index 0000000..d2933bb --- /dev/null +++ b/target/classes/dalgen/config/config.xml @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/target/classes/dalgen/config/table-config-1.0.dtd b/target/classes/dalgen/config/table-config-1.0.dtd new file mode 100644 index 0000000..fe04c1d --- /dev/null +++ b/target/classes/dalgen/config/table-config-1.0.dtd @@ -0,0 +1,235 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/target/classes/dalgen/configTables/TABLE1.xml b/target/classes/dalgen/configTables/TABLE1.xml new file mode 100644 index 0000000..8b2c6f6 --- /dev/null +++ b/target/classes/dalgen/configTables/TABLE1.xml @@ -0,0 +1,76 @@ + + + + + + + ID,CARD + + + + + sf.ID,sf.CARD + + + + + + + SELECT + LAST_INSERT_ID() + + + + + + + + INSERT INTO table1( + ID + ,CARD + )VALUES + + ( + null + , #{item.card,jdbcType=VARCHAR} + ) + + + + + + + + + + SELECT * + FROM table1 + WHERE + + + +
diff --git a/target/classes/dalgen/ext/mybatis-config.xml.ftl b/target/classes/dalgen/ext/mybatis-config.xml.ftl new file mode 100644 index 0000000..73fca66 --- /dev/null +++ b/target/classes/dalgen/ext/mybatis-config.xml.ftl @@ -0,0 +1,57 @@ +<@pp.dropOutputFile /> +<#assign tmpTables = dalgen.tmpCfTables> +<@pp.changeOutputFile name = "/main/resources/mybatis-config.xml" /> + + +<#assign enumTypes = pp.newWritableSequence()> +<#assign jsonTypes = pp.newWritableSequence()> +<#assign othTypes = pp.newWritableSequence()> +<#--<#list tmpTables as tmpTable> + <#list tmpTable.columns as column> + <#if column.javatype?lower_case?starts_with(dalgen.config.getCustomerProperty("enumPathBase")!null)> + <#if !enumTypes?seq_contains(column.javatype)> + <@pp.add seq=enumTypes value="${column.javatype}" /> + + <#elseif column.javatype?lower_case?starts_with(dalgen.config.getCustomerProperty("jsonPathBase")!null)> + <#if !jsonTypes?seq_contains(column.javatype)> + <@pp.add seq=jsonTypes value="${column.javatype}" /> + + <#elseif !othTypes?seq_contains(column.javatype) && !column.javatype?lower_case?starts_with("com.alibaba.hr.common.util.encrypt")> + <@pp.add seq=othTypes value="${column.javatype}" /> + + +--> + + + + + + +<#-- + + + + + + + +<#list enumTypes as enumType> + + +<#list jsonTypes as jsonType> + + +<#list othTypes as othType> + + +--> + + + + + <#--<#list dalgen.doMappers as doMapper>--> + <#----> + <#----> + + diff --git a/target/classes/dalgen/templates/dalgen/BasePage.java.ftl b/target/classes/dalgen/templates/dalgen/BasePage.java.ftl new file mode 100644 index 0000000..9418be3 --- /dev/null +++ b/target/classes/dalgen/templates/dalgen/BasePage.java.ftl @@ -0,0 +1,284 @@ +<@pp.dropOutputFile /> +<#if dalgen.pagings?? && dalgen.pagings?size gt 0> +<#assign paging =dalgen.pagings?first> + <@pp.changeOutputFile name = "/main/java/${paging.baseClassPath}/BasePage.java" /> +package ${paging.basePackageName}; + +import java.util.List; +import java.util.Map; +import com.google.common.collect.Maps; + +/** + * 用于分页的工具类 + */ +public class BasePage { + + private List datas; //对象记录结果集 + private int total = 0; // 总记录数 + private int limit = 20; // 默认每页显示记录数 + private int pageNos = 1; // 总页数 + private int currPageNo = 1; // 当前页 + + private boolean isFirstPage = false; //是否为第一页 + private boolean isLastPage = false; //是否为最后一页 + private boolean hasPreviousPage = false; //是否有前一页 + private boolean hasNextPage = false; //是否有下一页 + + private int navigatePages = 8; //导航页码数 + private int[] navigatePageNos; //所有导航页号 + + private Map> dataMenus;//数据拥有的菜单 + + + private Map dataDict;//数据字典 + + private void init() { + this.pageNos = (this.total - 1) / this.limit + 1; + + //根据输入可能错误的当前号码进行自动纠正 + if (currPageNo < 1) { + this.currPageNo = 1; + } else if (currPageNo > this.pageNos) { + this.currPageNo = this.pageNos; + } + + //基本参数设定之后进行导航页面的计算 + calcNavigatePageNumbers(); + + //以及页面边界的判定 + judgePageBoudary(); + } + + /** + * 计算导航页 + */ + private void calcNavigatePageNumbers() { + //当总页数小于或等于导航页码数时 + if (pageNos <= navigatePages) { + navigatePageNos = new int[pageNos]; + for (int i = 0; i < pageNos; i++) { + navigatePageNos[i] = i + 1; + } + } else { //当总页数大于导航页码数时 + navigatePageNos = new int[navigatePages]; + int startNum = currPageNo - navigatePages / 2; + int endNum = currPageNo + navigatePages / 2; + + if (startNum < 1) { + startNum = 1; + //(最前navigatePages页 + for (int i = 0; i < navigatePages; i++) { + navigatePageNos[i] = startNum++; + } + } else if (endNum > pageNos) { + endNum = pageNos; + //最后navigatePages页 + for (int i = navigatePages - 1; i >= 0; i--) { + navigatePageNos[i] = endNum--; + } + } else { + //所有中间页 + for (int i = 0; i < navigatePages; i++) { + navigatePageNos[i] = startNum++; + } + } + } + } + + /** + * 判定页面边界 + */ + private void judgePageBoudary() { + isFirstPage = currPageNo == 1; + isLastPage = currPageNo == pageNos && currPageNo != 1; + hasPreviousPage = currPageNo > 1; + hasNextPage = currPageNo < pageNos; + } + + /** + * 得到数据 + * + * @return + */ + public List getDatas() { + return datas; + } + + /** + * 设置数据 + * + * @param datas + */ + public void setDatas(List datas) { + this.datas = datas; + } + + /** + * 得到记录总数 + * + * @return {int} + */ + public int getTotal() { + return total; + } + + /** + * 得到记录总数 + * + * @return {int} + */ + public int getTotalCount() { + return total; + } + + /** + * 设置总记录数 + * + * @param total + */ + public void setTotal(int total) { + this.total = total; + init(); + } + + /** + * 得到每页显示多少条记录 + * + * @return {int} + */ + public int getLimit() { + return limit; + } + + /** + * 设置每页多少记录 + * + * @param limit + */ + public void setLimit(int limit) { + this.limit = limit; + } + + /** + * 设置导航线上几页 + * + * @param navigatePages + */ + public void setNavigatePages(int navigatePages) { + this.navigatePages = navigatePages; + } + + /** + * 得到页面总数 + * + * @return {int} + */ + public int getPageNos() { + return pageNos; + } + + /** + * 得到当前页号 + * + * @return {int} + */ + public int getCurrPageNo() { + return currPageNo; + } + + /** + * 得到当前页号 + * + * @return {int} + */ + public int getCurrentPage() { + return currPageNo; + } + + /** + * 得到所有导航页号 + * + * @return {int[]} + */ + public int[] getNavigatePageNos() { + return navigatePageNos; + } + + public boolean isFirstPage() { + return isFirstPage; + } + + public boolean isLastPage() { + return isLastPage; + } + + public boolean hasPreviousPage() { + return hasPreviousPage; + } + + public boolean hasNextPage() { + return hasNextPage; + } + + /** + * 设置当前行 + * @param currPageNo + */ + public void setCurrPageNo(int currPageNo){ + if(currPageNo==0){ + this.currPageNo =1; + }else { + this.currPageNo = currPageNo; + } + } + + /** + * 得到开始行 + */ + public int getStartRow(){ + return (this.currPageNo-1)*this.limit; + } + + public Map> getDataMenus() { + return dataMenus; + } + + public void setDataMenus(Map> dataMenus) { + this.dataMenus = dataMenus; + } + + public Map getDataDict() { + return dataDict; + } + + public void setDataDict(Map dataDict) { + this.dataDict = dataDict; + } + + public void addDataDict(String key,Object dataDict) { + if(this.dataDict==null){ + this.dataDict = Maps.newHashMap(); + } + this.dataDict.put(key,dataDict); + } + + public String toTString() { + init(); + StringBuffer sb = new StringBuffer(); + sb.append("[").append("total=").append(total).append(",pageNos=").append(pageNos) + .append(",currPageNo=").append(currPageNo).append(",limit=").append(limit) + .append(",isFirstPage=").append(isFirstPage).append(",isLastPage=") + .append(isLastPage).append(",hasPreviousPage=").append(hasPreviousPage) + .append(",hasNextPage=").append(hasNextPage).append(",navigatePageNos="); + int len = navigatePageNos.length; + if (len > 0){ + sb.append(navigatePageNos[0]);} + for (int i = 1; i < len; i++) { + sb.append(" " + navigatePageNos[i]); + } + sb.append(",datas.size=" + (datas!=null?datas.size():0)); + sb.append("]"); + return sb.toString(); + } +} + diff --git a/target/classes/dalgen/templates/dalgen/DAO.java.ftl b/target/classes/dalgen/templates/dalgen/DAO.java.ftl new file mode 100644 index 0000000..28bfc6a --- /dev/null +++ b/target/classes/dalgen/templates/dalgen/DAO.java.ftl @@ -0,0 +1,109 @@ +<@pp.dropOutputFile /> +<#import "../lib/function.ftl" as fun/> +<#list dalgen.daos as dao> + <@pp.changeOutputFile name = "/main/java/${dao.classPath}/${dao.className}.java" /> +package ${dao.packageName}; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Repository; +<#list dao.importLists as import> +import ${import}; + + +/** +* The Table ${dao.tableName!}. +* ${dao.desc!} +*/ +<#if dalgen.config.getExtParam("Repository") == "true">@Repository +public class ${dao.className}{ + + @Autowired + private ${dao.doMapper.className} ${dao.doMapper.className?uncap_first}; + + <#list dao.motheds as method> + /** + * desc:${method.desc!method.name!}.
+ <#list method.params as param> + * @param ${param.param} ${param.param} + + * @return ${fun.methodClass(method)} + */ + public ${fun.methodClass(method)} ${method.name}(<#list method.params as param><#if param_index gt 0>,${param.paramType!} <#assign pagingParam = param.param/>${param.param}){ + <#if !method.name?starts_with("insert")><#list method.params as param><#if param.paramType?starts_with("List<")> + if(${param.param}!=null && ${param.param}.size()>201){throw new RuntimeException("${param.param} 超出200长度限制");} + + <#if method.pagingFlag == "true"> + <#if method.pagingCustomFlag == "true"> + int total = ${dao.doMapper.className?uncap_first}.${method.pagingCntOperation}(<#list method.params as param><#if param_index gt 0>, ${param.param}); + <#else > + int total = ${dao.doMapper.className?uncap_first}.${method.name}Count(<#list method.params as param><#if param_index gt 0>, ${param.param}); + + if(total>0){ + ${pagingParam}.setDatas(${dao.doMapper.className?uncap_first}.${method.name}Result(<#list method.params as param><#if param_index gt 0>, ${param.param})); + } + ${pagingParam}.setTotal(total); + return ${pagingParam}; + <#elseif method.kvMap?? && method.kvMap == "true"> + ${fun.methodClass(method)} result = new LinkedHashMap(); + ${method.returnClass} resultList = ${dao.doMapper.className?uncap_first}.${method.name}(<#list method.params as param><#if param_index gt 0>, ${param.param}); + if(resultList!=null && !resultList.isEmpty()){ + for(${fun.fanType2Type(method.returnClass)} entity:resultList){ + <#if method.mapV??> + result.put(entity.get${method.mapK}(),entity.get${method.mapV}()); + <#else > + result.put(entity.get${method.mapK}(),entity); + + } + } + return result; + <#elseif method.kvMap?? && method.kvMap == "list"> + ${fun.methodClass(method)} result = new LinkedHashMap(); + ${method.returnClass} resultList = ${dao.doMapper.className?uncap_first}.${method.name}(<#list method.params as param><#if param_index gt 0>, ${param.param}); + if(resultList!=null && !resultList.isEmpty()){ + for(${fun.fanType2Type(method.returnClass)} entity:resultList){ + <#if method.mapV??> + List<${method.mapVType}> vList = result.get(entity.get${method.mapK}()); + <#else > + List<${fun.fanType2Type(method.returnClass)}> vList = result.get(entity.get${method.mapK}()); + + if(vList == null){ + vList = new ArrayList(); + result.put(entity.get${method.mapK}(),vList); + } + <#if method.mapV??> + vList.add(entity.get${method.mapV}()); + <#else > + vList.add(entity); + + } + } + return result; + <#elseif method.kvMap?? && method.kvMap == "set"> + ${fun.methodClass(method)} result = new LinkedHashMap(); + ${method.returnClass} resultList = ${dao.doMapper.className?uncap_first}.${method.name}(<#list method.params as param><#if param_index gt 0>, ${param.param}); + if(resultList!=null && !resultList.isEmpty()){ + for(${fun.fanType2Type(method.returnClass)} entity:resultList){ + <#if method.mapV??> + Set<${method.mapVType}> vSet = result.get(entity.get${method.mapK}()); + <#else > + Set<${fun.fanType2Type(method.returnClass)}> vSet = result.get(entity.get${method.mapK}()); + + if(vSet == null){ + vSet = new HashSet(); + result.put(entity.get${method.mapK}(),vSet); + } + <#if method.mapV??> + vSet.add(entity.get${method.mapV}()); + <#else > + vSet.add(entity); + + } + } + return result; + <#else> + return ${dao.doMapper.className?uncap_first}.${method.name}(<#list method.params as param><#if param_index gt 0>, ${param.param}); + + } + +} + diff --git a/target/classes/dalgen/templates/dalgen/DBPreCheckMapper.java.ftl b/target/classes/dalgen/templates/dalgen/DBPreCheckMapper.java.ftl new file mode 100644 index 0000000..7599a49 --- /dev/null +++ b/target/classes/dalgen/templates/dalgen/DBPreCheckMapper.java.ftl @@ -0,0 +1,17 @@ +<@pp.dropOutputFile /> +<#if dalgen.doMappers?size gt 0> +<#assign tmpTables = dalgen.tmpTables> +<#assign doMapper = dalgen.doMappers?first> +<#assign dbName=""/> +<#if !dalgen.getDataSourceSingle()><#assign dbName=dalgen.getDataSourceName()/> +<@pp.changeOutputFile name = "/main/java/${doMapper.classPath}/${dbName}DBPreCheckMapper.java" /> +package ${doMapper.packageName}; +import java.util.List; +/** + * 数据库字段检查 + */ +public interface ${dbName}DBPreCheckMapper{ + + List dbColumnCheck(); +} + \ No newline at end of file diff --git a/target/classes/dalgen/templates/dalgen/DBPreCheckMapper.xml.ftl b/target/classes/dalgen/templates/dalgen/DBPreCheckMapper.xml.ftl new file mode 100644 index 0000000..2895120 --- /dev/null +++ b/target/classes/dalgen/templates/dalgen/DBPreCheckMapper.xml.ftl @@ -0,0 +1,34 @@ +<@pp.dropOutputFile /> +<#if dalgen.xmlMappers?size gt 0> +<#assign tmpTables = dalgen.tmpTables> +<#assign xmlMapper = dalgen.xmlMappers?first> +<#assign dbName=""/> +<#if !dalgen.getDataSourceSingle()><#assign dbName=dalgen.getDataSourceName()/> +<@pp.changeOutputFile name = "/main/resources/${xmlMapper.doMapper.xmlPath}/${dbName}DBPreCheckMapper.xml" /> + + + +<#assign idx = 0> + + + \ No newline at end of file diff --git a/target/classes/dalgen/templates/dalgen/DO.java.ftl b/target/classes/dalgen/templates/dalgen/DO.java.ftl new file mode 100644 index 0000000..f9e08e9 --- /dev/null +++ b/target/classes/dalgen/templates/dalgen/DO.java.ftl @@ -0,0 +1,44 @@ +<@pp.dropOutputFile /> +<#list dalgen.dos as DO> +<#if DO.fieldses?size gt 0> +<@pp.changeOutputFile name = "/main/java/${DO.classPath}/${DO.className}.java" /> +package ${DO.packageName}; + +<#list DO.importLists as import> +<#if !import?ends_with("${DO.className}")> +import ${import}; + + + +/** + * The table ${DO.desc} + */ +public class ${DO.className}{ + + <#list DO.fieldses as fields> + /** + * ${fields.name} ${fields.desc}. + */ + private ${fields.javaType} ${fields.name}; + + <#list DO.fieldses as fields> + + /** + * Set ${fields.name} ${fields.desc}. + */ + public void set${fields.name?cap_first}(${fields.javaType} ${fields.name}){ + this.${fields.name} = ${fields.name}; + } + + /** + * Get ${fields.name} ${fields.desc}. + * + * @return the string + */ + public ${fields.javaType} get${fields.name?cap_first}(){ + return ${fields.name}; + } + +} + + diff --git a/target/classes/dalgen/templates/dalgen/DOMapper.java.ftl b/target/classes/dalgen/templates/dalgen/DOMapper.java.ftl new file mode 100644 index 0000000..3172f78 --- /dev/null +++ b/target/classes/dalgen/templates/dalgen/DOMapper.java.ftl @@ -0,0 +1,29 @@ +<@pp.dropOutputFile /> +<#list dalgen.doMappers as doMapper> +<@pp.changeOutputFile name = "/main/java/${doMapper.classPath}/${doMapper.className}.java" /> +package ${doMapper.packageName}; + +<#list doMapper.importLists as import> +import ${import}; + +import org.apache.ibatis.annotations.Param; + +/** + * 由于需要对分页支持,请直接使用对应的DAO类 + * The Table ${doMapper.tableName!}. + * ${doMapper.desc!} + */ +public interface ${doMapper.className}{ + + <#list doMapper.motheds as method> + /** + * desc:${method.desc!method.name!}.
+ <#list method.params as param> + * @param ${param.param} ${param.param} + + * @return ${method.returnClass!} + */ + ${method.returnClass!} ${method.name}(<#list method.params as param><#if param_index gt 0>,<#if method.params?size == 1 && param.paramType == "String">@Param("${param.param}")<#if method.params?size gt 1>@Param("${param.param}")${param.paramType!} ${param.param}); + +} + diff --git a/target/classes/dalgen/templates/dalgen/Page.java.ftl b/target/classes/dalgen/templates/dalgen/Page.java.ftl new file mode 100644 index 0000000..06a44e2 --- /dev/null +++ b/target/classes/dalgen/templates/dalgen/Page.java.ftl @@ -0,0 +1,40 @@ +<@pp.dropOutputFile /> +<#list dalgen.pagings as paging> + <@pp.changeOutputFile name = "/main/java/${paging.classPath}/${paging.className}.java" /> +package ${paging.packageName}; + +<#list paging.importLists as import> +import ${import}; + + +/** + * The table ${paging.desc!} + */ +public class ${paging.className} extends BasePage<${paging.resultType}>{ + + <#list paging.fieldses as fields> + /** + * ${fields.name} ${fields.desc!}. + */ + private ${fields.javaType} ${fields.name}; + + <#list paging.fieldses as fields> + + /** + * Set ${fields.name} ${fields.desc!}. + */ + public void set${fields.name?cap_first}(${fields.javaType} ${fields.name}){ + this.${fields.name} = ${fields.name}; + } + + /** + * Get ${fields.name} ${fields.desc!}. + * + * @return the string + */ + public ${fields.javaType} get${fields.name?cap_first}(){ + return ${fields.name}; + } + +} + diff --git a/target/classes/dalgen/templates/dalgen/ResultMap.java.ftl b/target/classes/dalgen/templates/dalgen/ResultMap.java.ftl new file mode 100644 index 0000000..d9e9ec1 --- /dev/null +++ b/target/classes/dalgen/templates/dalgen/ResultMap.java.ftl @@ -0,0 +1,114 @@ +<@pp.dropOutputFile /> +<#import "../lib/lib.ftl" as lib/> +<#list dalgen.resultMaps as resultMap> + <@pp.changeOutputFile name = "/main/java/${resultMap.classPath}/${resultMap.className}.java" /> +package ${resultMap.packageName}; + +import java.io.Serializable; +<#list resultMap.importLists as import> +import ${import}; + +<@lib.importByResultMap daos=dalgen.daos resultMap=resultMap/> +<#assign extend = ""> + <#list dalgen.dos as DO> + <#if DO.tableName == resultMap.tableName?upper_case && resultMap.extend == "base"> + <#assign extend = "extends "+DO.className> +import ${DO.packageName}.${DO.className}; + + + + +/** + * The table ${resultMap.desc!resultMap.className} + */ +public class ${resultMap.className} ${extend} implements Serializable { + +private static final long serialVersionUID = -1L; + + <#--属性--> + <#list resultMap.fieldses as fields> + /** + * ${fields.name} ${fields.desc!}. + */ + private ${fields.javaType} ${fields.name}; + + + <#--一对一--> + <#list resultMap.associations as association> + <#assign method = lib.getMethodByMethodName(dalgen.daos,association.tableName?upper_case,association.methodName)> + /** + * ${association.select} ${association.remark!}. + */ + private ${method.returnClass!} ${association.property}; + + + <#--一对多--> + <#list resultMap.collections as collection> + <#assign method = lib.getMethodByMethodName(dalgen.daos,collection.tableName?upper_case,collection.methodName)> + /** + * ${collection.select} ${collection.remark!}. + */ + private ${method.returnClass!} ${collection.property}; + + + <#list resultMap.fieldses as fields> + + /** + * Set ${fields.name} ${fields.desc!}. + */ + public void set${fields.name?cap_first}(${fields.javaType} ${fields.name}){ + this.${fields.name} = ${fields.name}; + } + + /** + * Get ${fields.name} ${fields.desc!}. + * + * @return the string + */ + public ${fields.javaType} get${fields.name?cap_first}(){ + return ${fields.name}; + } + + + +<#--一对一--> + <#list resultMap.associations as association> + <#assign method = lib.getMethodByMethodName(dalgen.daos,association.tableName?upper_case,association.methodName)> + /** + * Set ${association.property}.${association.remark!}. + */ + public void set${association.property?cap_first}(${method.returnClass!} ${association.property}){ + this.${association.property} = ${association.property}; + } + + /** + * Get ${association.property} ${association.remark!}. + * + * @return the ${method.returnClass} + */ + public ${method.returnClass} get${association.property?cap_first}(){ + return ${association.property}; + } + + +<#--一对多--> + <#list resultMap.collections as collection> + <#assign method = lib.getMethodByMethodName(dalgen.daos,collection.tableName?upper_case,collection.methodName)> + /** + * Set ${collection.property}.${collection.remark!}. + */ + public void set${collection.property?cap_first}(${method.returnClass!} ${collection.property}){ + this.${collection.property} = ${collection.property}; + } + + /** + * Get ${collection.property} ${collection.remark!}. + * + * @return the ${method.returnClass} + */ + public ${method.returnClass} get${collection.property?cap_first}(){ + return ${collection.property}; + } + +} + diff --git a/target/classes/dalgen/templates/dalgen/XMLMapper.xml.ftl b/target/classes/dalgen/templates/dalgen/XMLMapper.xml.ftl new file mode 100644 index 0000000..c606d93 --- /dev/null +++ b/target/classes/dalgen/templates/dalgen/XMLMapper.xml.ftl @@ -0,0 +1,91 @@ +<@pp.dropOutputFile /> +<#import "../lib/lib.ftl" as lib/> +<#import "../lib/function.ftl" as fun/> +<#import "../lib/macro.ftl" as m> +<#list dalgen.xmlMappers as xmlMapper> +<@pp.changeOutputFile name = "/main/resources/${xmlMapper.doMapper.xmlPath}/${xmlMapper.doMapper.className}.xml" /> + + + + + <#-- 自定义分页时参数 limit {pageLimit}--> + <#--生成BaseResultMap--> +<#if xmlMapper.table.columnList?size gt 0> + +<#list xmlMapper.table.columnList as column> + <#if column.sqlName?upper_case =="ID"><#else> + + + + + <#--生成自定义ResultMap--> +<#list xmlMapper.resultMaps as resultMap> + <#assign extends = ""> + <#if resultMap.extend == "base"> + <#assign extends = "extends=\"BaseResultMap\""> + + + <#list resultMap.columnList as column> + <#if column.sqlName?upper_case =="ID"><#else> + + <#list resultMap.associations as association> + + + <#list resultMap.collections as collection> + + + + + + <#if xmlMapper.sqlMap?size == 0 > + <#-- baseSql --> +<#if xmlMapper.table.columnList?size gt 0> + + <#list xmlMapper.table.columnList as column><#if column_index gt 0>,${column.sqlName} + + + <#-- baseSql --> + + <#list xmlMapper.table.columnList as column><#if column_index gt 0>,sf.${column.sqlName} + + + <#else><#list xmlMapper.sqlMap?values as sqlXML> + ${sqlXML} + + + + <#-- sql部分 --> + <#list xmlMapper.cfTable.operations as operation> + +<#if operation.multiplicity.code=="paging"><#--分页--> + <#if operation.pagingCntType.code=="pagingCustom"><#--分页--> + + <${lib.operation2Sql(operation.name)} id="${operation.name}Result" ${lib.mapperResult(operation)}${lib.timeout(operation)}> + ${operation.cdata!} + + <#else> + + <${lib.operation2Sql(operation.name)} id="${operation.name}Count" resultType="int"${lib.timeout(operation)}> +${operation.cdataPageCount!} + + + <${lib.operation2Sql(operation.name)} id="${operation.name}Result" ${lib.mapperResult(operation)}${lib.timeout(operation)}> +${operation.cdata!} + <#if operation.pagingCntType.code=="paging" || operation.pagingCntType.code=="pagingExtCnt"> + limit ${"#"}{startRow},${"#"}{limit} + + + + <#else><#--非分页--> + + <${lib.operation2Sql(operation.name)} id="${operation.name}" ${lib.mapperResult(operation)}${lib.timeout(operation)} <#if operation.useGeneratedKeys??>useGeneratedKeys="${operation.useGeneratedKeys}"<#if operation.keyProperty??> keyProperty="${operation.keyProperty}"> +<#if operation.autoGen> +<@m.autoGen operation.name ,xmlMapper.table/> +<#else> +${operation.cdata!} + + + + + + diff --git a/target/classes/dalgen/templates/init/initTableXml.ftl b/target/classes/dalgen/templates/init/initTableXml.ftl new file mode 100644 index 0000000..9dba324 --- /dev/null +++ b/target/classes/dalgen/templates/init/initTableXml.ftl @@ -0,0 +1,122 @@ +<@pp.dropOutputFile /> +<#import "../lib/lib.ftl" as lib/> +<#import "../lib/macro.ftl" as m> +<#list dalgen.tables as table> +<@pp.changeOutputFile name = "/${dalgen.tablesPath}/${table.sqlName}.xml" /> + + remark="${table.remark!}"> + + + <@m.BaseColumnList table/> + + + <@m.Base_SF_Column_List table/> + + + <@m.insertMethod table/> + + + + + + <@m.insertBatchMethod table/> + + +<#if table.primaryKeys??> + + + + DELETE FROM ${table.sqlName?lower_case} + WHERE + <#list table.primaryKeys.columnList as column> + <#if column_index gt 0>AND ${column.sqlName} = ${"#"}{${column.javaName},jdbcType=${column.sqlType}} + + ]]> + + + + SELECT * + FROM ${table.sqlName?lower_case} + WHERE + + <#if column_index gt 0>AND ${column.sqlName} = ${"#"}{${column.javaName},jdbcType=${column.sqlType}} + + ]]> + + +<#list table.uniqueIndexs as uniqueIndex> + + + + + <#list table.columnList as column> + <#if lib.updateIncludeUKColumn(dalgen,column,table.primaryKeys!,uniqueIndex.columnList)><#assign c_idx = c_idx+1> + <#if c_idx gt 1>,${column.sqlName}${lib.space(column.sqlName)} = ${lib.updateVal(column)} + + + WHERE + <#list uniqueIndex.columnList as column> + <#if column_index gt 0>AND ${column.sqlName}${lib.space(column.sqlName)} = ${"#"}{${column.javaName},jdbcType=${column.sqlType}} + + ]]> + + + + + <#if column_index gt 0>AND ${column.sqlName}${lib.space(column.sqlName)} = ${"#"}{${column.javaName},jdbcType=${column.sqlType}} + + ]]> + + + + SELECT * + FROM ${table.sqlName?lower_case} + WHERE + + <#if column_index gt 0>AND ${column.sqlName}${lib.space(column.sqlName)} = ${"#"}{${column.javaName},jdbcType=${column.sqlType}} + + ]]> + + + +<#list table.normalIndexs as normalIndex> + + + SELECT * + FROM ${table.sqlName?lower_case} + WHERE + + <#if column_index gt 0>AND ${column.sqlName}${lib.space(column.sqlName)} = ${"#"}{${column.javaName},jdbcType=${column.sqlType}} + + ]]> + + +
+ diff --git a/target/classes/dalgen/templates/lib/function.ftl b/target/classes/dalgen/templates/lib/function.ftl new file mode 100644 index 0000000..356816d --- /dev/null +++ b/target/classes/dalgen/templates/lib/function.ftl @@ -0,0 +1,119 @@ +<#--获取字段list--> +<#function columnList xmlMappers tableName> + <#list xmlMappers as xmlMapper> + <#if xmlMapper.table.sqlName == tableName> + <#return xmlMapper.table.columnList/> + + + + +<#-- 字段默认值 --> +<#function columnVal column> + <#if column.testVal??><#return column.testVal> + <#if column.javaName == "id"><#return "1"> + <#if column.javaName == "isDel"><#return "0"> + <#if column.javaType == "java.util.Date"><#return "1984-12-24"> + <#if column.javaType == "String"><#return column.javaName?substring(0,1)?cap_first> + <#return "1"> + + +<#function typeHandler column> + <#if column.typeHandler??><#return "typeHandler=\"${column.typeHandler}\"" > + <#return ""> + + + +<#-- test默认值 --> +<#function paramVal param columnList> + <#list columnList as column> + <#if column.javaName == param.param || "old${column.javaName?cap_first}" == param.param> + <#if column.javaType == "java.util.Date"><#return "new Date()"> + <#assign columnVal = "0"> + + <#if column.javaName == "id"><#assign columnVal = "1"> + <#if column.javaName == "isDel"><#assign columnVal = "0"> + <#if column.javaType == "String"><#assign columnVal = column.javaName?substring(0,1)?cap_first> + + <#if column.javaType == "Long"><#return "${columnVal}L"> + <#if column.javaType == "String"><#return "\"${columnVal}\""> + + <#if column.testVal??> + <#if param.paramType?ends_with("Enum")> + <#return "${param.paramType}.${column.testVal}"/> + + <#return "TestParamValUtil.trans(${param.paramType}.class,\"${column.testVal}\")"/> + + <#return columnVal> + + + + <#if param.paramType?ends_with("Enum") && param.testVal??> + <#return "${param.paramType}.${param.testVal}"/> + + + <#if param.paramType == "String"><#return "\"${param.param}\""> + <#if param.paramType == "Long"><#return "1L"> + <#if param.paramType == "Integer"><#return "1"> + <#if param.paramType?starts_with("List")><#return "Lists.newArrayList(\"S\")"> + <#if param.paramType?starts_with("List")><#return "Lists.newArrayList(1L)"> + <#if param.paramType?starts_with("List")><#return "Lists.newArrayList(1)"> + <#if param.paramType?starts_with("List")><#return "Lists.newArrayList(1d)"> + <#if param.paramType?starts_with("List")><#return "Lists.newArrayList()"> + <#return "new ${param.paramType}()"> + + +<#-- 忽略不需要单元测试的类 --> +<#function neadTest methodName> + <#assign ignoreMethods = ["insert","insertBatch","update", "getById"]> + <#if ignoreMethods?seq_contains(methodName)><#return false> + <#if methodName != "insert" && methodName?starts_with("insert")><#return false> +<#return true> + + +<#function getByIdMethod motheds> + <#list motheds as method> + <#if method.name == "getById"><#return method> + + + +<#function fanType2Type fanType> + <#if fanType??> + <#return fanType?substring(fanType?last_index_of("<")+1,fanType?last_index_of(">"))> + <#else > + <#return fanType> + + + +<#function methodClass method> + <#if method.kvMap?? && method.kvMap == "true"> + <#if method.mapVType??> + <#assign valType = method.mapVType> + <#else > + <#assign valType = fanType2Type(method.returnClass)> + + <#return "Map<${method.mapKType},${valType}>"> + <#elseif method.kvMap?? && method.kvMap == "list"> + <#if method.mapVType??> + <#assign valType = method.mapVType> + <#else > + <#assign valType = fanType2Type(method.returnClass)> + + <#return "Map<${method.mapKType},List<${valType}>>"> + <#elseif method.kvMap?? && method.kvMap == "set"> + <#if method.mapVType??> + <#assign valType = method.mapVType> + <#else > + <#assign valType = fanType2Type(method.returnClass)> + + <#return "Map<${method.mapKType},Set<${valType}>>"> + <#else> + <#return method.returnClass> + + + +<#function javaTypeTrun javaType> + <#if javaType?contains("<")> + <#return javaType?substring(0,javaType?index_of("<"))/> + + <#return javaType/> + diff --git a/target/classes/dalgen/templates/lib/lib.ftl b/target/classes/dalgen/templates/lib/lib.ftl new file mode 100644 index 0000000..ce7a9ed --- /dev/null +++ b/target/classes/dalgen/templates/lib/lib.ftl @@ -0,0 +1,151 @@ +<#--空格处理--> +<#function space param> + <#if param?length gt 15><#return ""/> + <#else> + <#return " "?substring(param?length)/> + + + +<#-- operation 2 sql --> +<#function operation2Sql param> + <#if param?starts_with("insert")><#return "insert"/> + <#if param?starts_with("update")><#return "update"/> + <#if param?starts_with("delete")><#return "delete"/> + <#return "select"/> + + +<#-- mapperxml result --> +<#function mapperResult operation> + <#if operation.resultmap??><#return 'resultMap="${operation.resultmap}"'/> + <#if operation.resulttype??><#return 'resultType="${operation.resulttype}"'/> + <#if operation.name?starts_with("insert")><#return ''/> + <#if operation.name?starts_with("update")><#return ''/> + <#if operation.name?starts_with("delete")><#return ''/> + <#return 'resultMap="BaseResultMap"'/> + + +<#function timeout operation> + <#if operation.timeout??><#return ' timeout="${operation.timeout}"'/> + <#return ""/> + + +<#-- insert 时字段处理 --> +<#function insertVal column dalgen> + <#if column.sqlName == "GMT_MODIFIED" || column.sqlName == "GMT_CREATE"><#return "now()"> + <#if column.sqlName?upper_case == "ID"><#return "null"> + <#if column.sqlName?upper_case == "IS_DELETED"><#return "0"> + <#if column.sqlName?upper_case == "REVISION"><#return "0"> + <#return '${"#"}{${column.javaName},jdbcType=${column.sqlType}}'/> + + +<#-- insert 时字段处理 --> +<#function insertBatchVal column dalgen> + <#if column.sqlName == "GMT_MODIFIED" || column.sqlName == "GMT_CREATE"><#return "now()"> + <#if column.sqlName?upper_case == "ID"><#return "null"> + <#if column.sqlName?upper_case == "IS_DELETED"><#return "0"> + <#if column.sqlName?upper_case == "REVISION"><#return "0"> + <#return '${"#"}{item.${column.javaName},jdbcType=${column.sqlType}}'/> + + +<#-- Update 时字段处理 --> +<#function updateVal column> + <#if column.sqlName == "GMT_MODIFIED" || column.sqlName == "GMT_CREATE"><#return "now()"> + <#return '${"#"}{${column.javaName},jdbcType=${column.sqlType}}'/> + + +<#-- update 中需要设置的字段 --> +<#function updateIncludeColumn dalgen column primaryKeys> + <#if column.sqlName == "CREATOR" || column.sqlName == "GMT_CREATE"> + <#return false> + + <#list primaryKeys as pkcolumn> + <#if pkcolumn.sqlName == column.sqlName><#return false> + + <#return true> + + +<#-- update 中需要设置的字段 --> +<#function updateIncludeUKColumn dalgen column primaryKeys uniqueColums> + <#if column.sqlName == "CREATOR" || column.sqlName == "GMT_CREATE"> + <#return false> + + <#if primaryKeys?? && primaryKeys.columnList??> + <#list primaryKeys.columnList as pkcolumn> + <#if pkcolumn.sqlName == column.sqlName><#return false> + + + <#list uniqueColums as pkcolumn> + <#if pkcolumn.sqlName == column.sqlName><#return false> + + <#return true> + + +<#function getMethodByMethodName daos tableName methodName> + <#list daos as dao> + <#if dao.tableName == tableName> + <#list dao.motheds as method> + <#if method.name == methodName> + <#return method> + + + + + + +<#macro importByResultMap daos resultMap> +<#assign imports = []> + <#list daos as dao> + <#list resultMap.associations as association> + <#if dao.tableName == association.tableName> + <#list dao.motheds as method> + <#if method.name == association.methodName> + <#list dao.importLists as import> + <#if import?ends_with(method.returnClass)> + <#if !imports?seq_contains(import)> + <#assign imports = imports+[import]> + + + + + + + + <#list resultMap.collections as collection> + <#if dao.tableName == collection.tableName> + <#list dao.motheds as method> + <#if method.name == collection.methodName> + <#list dao.importLists as import> + <#if isClasz(import,method.returnClass)> + <#if !imports?seq_contains(import)> + <#assign imports = imports+[import]> + + <#if !imports?seq_contains("java.util.List")> + <#assign imports = imports+["java.util.List"]> + + + + + + + + +<#list imports as import> +import ${import}; + + + +<#function genDOMapperNameSpace doMappers tableName> + <#list doMappers as doMapper> + <#if doMapper.tableName == tableName> + <#return doMapper.packageName+"."+doMapper.className> + + + + +<#function isClasz import listF> + <#assign clazz = listF> + <#if listF?contains("<") && import?ends_with(listF?substring(listF?index_of("<")+1,listF?index_of(">")))> + <#return true> + +<#return false> + diff --git a/target/classes/dalgen/templates/lib/macro.ftl b/target/classes/dalgen/templates/lib/macro.ftl new file mode 100644 index 0000000..88d9fd8 --- /dev/null +++ b/target/classes/dalgen/templates/lib/macro.ftl @@ -0,0 +1,82 @@ +<#macro SqlBaseColumnList table id prex> + + <#list table.columnList as column><#if column_index gt 0><#if column_index%5==0>${" \n"} ,${prex?default("")}${column.sqlName} + + + +<#macro BaseColumnList table> + <@SqlBaseColumnList table,"Base_Column_List","" /> + + +<#macro Base_SF_Column_List table> + <@SqlBaseColumnList table,"Base_SF_Column_List","sf." /> + + +<#macro insertMethod table> + <#if dalgen.dbType=="MySQL"> + + SELECT + LAST_INSERT_ID() + + <#elseif dalgen.dbType=="Oracle"> + + select seq_${table.sqlName?lower_case}.nextval from dual + + + + <#if column_index gt 0>,${column.sqlName} + + )VALUES( + <#list table.columnList as column> + <#if column_index gt 0>, ${lib.insertVal(column,dalgen)} + + ) + ]]> + + + +<#macro insertBatchMethod table> + INSERT INTO ${table.sqlName?lower_case}( + <#list table.columnList as column> + <#if column_index gt 0>,${column.sqlName} + + )VALUES + + ( + <#list table.columnList as column> + <#if column_index gt 0>, ${lib.insertBatchVal(column,dalgen)} + + ) + + + +<#macro updateMethod table> + + <#list table.columnList as column> + <#if lib.updateIncludeColumn(dalgen,column,table.primaryKeys.columnList)><#assign c_idx = c_idx+1> + <#if c_idx gt 1>,${column.sqlName}${lib.space(column.sqlName)} = ${lib.updateVal(column)} + + + WHERE + <#list table.primaryKeys.columnList as column> + <#if column_index gt 0>AND ${column.sqlName}${lib.space(column.sqlName)} = ${"#"}{${column.javaName},jdbcType=${column.sqlType}} + + ]]> + + + +<#macro autoGen method table> + <#if method=="insert"> + <@insertMethod table/> + <#elseif method=="insertBatch"> + <@insertBatchMethod table/> + <#elseif method=="update"> + <@updateMethod table/> + + + diff --git a/target/maven-archiver/pom.properties b/target/maven-archiver/pom.properties new file mode 100644 index 0000000..1700c2e --- /dev/null +++ b/target/maven-archiver/pom.properties @@ -0,0 +1,5 @@ +#Generated by Maven +#Wed Jun 24 11:50:45 CST 2020 +version=1.3.1 +groupId=cn.dalgen.plugins +artifactId=mybatis-maven-plugin diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 0000000..0baf764 --- /dev/null +++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -0,0 +1,54 @@ +cn/dalgen/mybatis/gen/datasources/DalgenConnectionDriver.class +cn/dalgen/mybatis/gen/model/java/ResultMap.class +cn/dalgen/mybatis/gen/model/java/DOMapper.class +cn/dalgen/mybatis/gen/exception/DalgenException.class +cn/dalgen/mybatis/gen/model/dbtable/UniqueIndex.class +cn/dalgen/mybatis/gen/model/java/DO.class +cn/dalgen/mybatis/gen/model/dbtable/Column.class +cn/dalgen/mybatis/gen/model/repository/db/MySQLTableRepository.class +cn/dalgen/mybatis/gen/model/repository/TableRepository.class +cn/dalgen/mybatis/gen/enums/TypeMapEnum.class +cn/dalgen/mybatis/gen/utils/StringDalUtil.class +cn/dalgen/mybatis/gen/model/repository/db/OBTableRepository.class +cn/dalgen/mybatis/gen/model/config/CfCollection.class +cn/dalgen/mybatis/gen/model/config/CfAssociation.class +cn/dalgen/mybatis/gen/model/repository/CfTableRepository.class +cn/dalgen/mybatis/gen/model/java/domapper/DOMapperMethodParam.class +cn/dalgen/mybatis/gen/model/dbtable/PrimaryKeys.class +cn/dalgen/mybatis/gen/model/java/DAO.class +cn/dalgen/mybatis/gen/datasources/JdbcConnectionDriver.class +cn/dalgen/mybatis/gen/model/Config.class +cn/dalgen/mybatis/gen/utils/CamelCaseUtils.class +cn/dalgen/mybatis/gen/utils/SysUtil.class +cn/dalgen/mybatis/gen/utils/ConfInit.class +cn/dalgen/mybatis/gen/enums/PagingCntTypeEnum.class +cn/dalgen/mybatis/gen/DalgenMojo.class +cn/dalgen/mybatis/gen/model/java/domapper/DOMapperMethod.class +cn/dalgen/mybatis/gen/model/java/Base.class +cn/dalgen/mybatis/gen/model/db/DataBase.class +cn/dalgen/mybatis/gen/dataloaders/AbstractDalgenLoader.class +cn/dalgen/mybatis/gen/model/Gen.class +cn/dalgen/mybatis/gen/model/repository/IgnoreDTDEntityResolver.class +cn/dalgen/mybatis/gen/model/config/CfResultMap.class +cn/dalgen/mybatis/gen/model/java/ResultMap$1.class +cn/dalgen/mybatis/gen/model/repository/db/OracleTableRepository.class +cn/dalgen/mybatis/gen/model/config/CfOperation.class +cn/dalgen/mybatis/gen/model/java/Filelds.class +cn/dalgen/mybatis/gen/model/java/Paging.class +cn/dalgen/mybatis/gen/common/FileNameSelector.class +cn/dalgen/mybatis/gen/dataloaders/DalgenLoader.class +cn/dalgen/mybatis/gen/model/dbtable/NormalIndex.class +cn/dalgen/mybatis/gen/utils/ConfigUtil.class +cn/dalgen/mybatis/gen/datasources/DBConnectionFactory.class +cn/dalgen/mybatis/gen/model/config/CfTable.class +cn/dalgen/mybatis/gen/model/dbtable/Table$1.class +cn/dalgen/mybatis/gen/enums/ParamTypeEnum.class +cn/dalgen/mybatis/gen/model/java/domapper/DOMapperMethod$1.class +cn/dalgen/mybatis/gen/model/config/CfColumn.class +cn/dalgen/mybatis/gen/dataloaders/DalgenTbLoader.class +cn/dalgen/mybatis/gen/model/java/XmlMapper.class +cn/dalgen/mybatis/gen/utils/CmdUtil.class +cn/dalgen/mybatis/gen/enums/SystemEnum.class +cn/dalgen/mybatis/gen/model/config/DeleteColumn.class +cn/dalgen/mybatis/gen/enums/MultiplicityEnum.class +cn/dalgen/mybatis/gen/model/dbtable/Table.class diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 0000000..af019d6 --- /dev/null +++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,51 @@ +/Users/bangis.wangdf/Documents/workspace/oschina/mybatis.generator/src/main/java/cn/dalgen/mybatis/gen/model/repository/db/OBTableRepository.java +/Users/bangis.wangdf/Documents/workspace/oschina/mybatis.generator/src/main/java/cn/dalgen/mybatis/gen/datasources/DBConnectionFactory.java +/Users/bangis.wangdf/Documents/workspace/oschina/mybatis.generator/src/main/java/cn/dalgen/mybatis/gen/enums/TypeMapEnum.java +/Users/bangis.wangdf/Documents/workspace/oschina/mybatis.generator/src/main/java/cn/dalgen/mybatis/gen/model/config/CfOperation.java +/Users/bangis.wangdf/Documents/workspace/oschina/mybatis.generator/src/main/java/cn/dalgen/mybatis/gen/model/java/DOMapper.java +/Users/bangis.wangdf/Documents/workspace/oschina/mybatis.generator/src/main/java/cn/dalgen/mybatis/gen/model/java/XmlMapper.java +/Users/bangis.wangdf/Documents/workspace/oschina/mybatis.generator/src/main/java/cn/dalgen/mybatis/gen/model/Gen.java +/Users/bangis.wangdf/Documents/workspace/oschina/mybatis.generator/src/main/java/cn/dalgen/mybatis/gen/model/repository/CfTableRepository.java +/Users/bangis.wangdf/Documents/workspace/oschina/mybatis.generator/src/main/java/cn/dalgen/mybatis/gen/utils/ConfInit.java +/Users/bangis.wangdf/Documents/workspace/oschina/mybatis.generator/src/main/java/cn/dalgen/mybatis/gen/enums/SystemEnum.java +/Users/bangis.wangdf/Documents/workspace/oschina/mybatis.generator/src/main/java/cn/dalgen/mybatis/gen/utils/ConfigUtil.java +/Users/bangis.wangdf/Documents/workspace/oschina/mybatis.generator/src/main/java/cn/dalgen/mybatis/gen/model/java/DAO.java +/Users/bangis.wangdf/Documents/workspace/oschina/mybatis.generator/src/main/java/cn/dalgen/mybatis/gen/utils/CmdUtil.java +/Users/bangis.wangdf/Documents/workspace/oschina/mybatis.generator/src/main/java/cn/dalgen/mybatis/gen/model/repository/db/OracleTableRepository.java +/Users/bangis.wangdf/Documents/workspace/oschina/mybatis.generator/src/main/java/cn/dalgen/mybatis/gen/model/repository/db/MySQLTableRepository.java +/Users/bangis.wangdf/Documents/workspace/oschina/mybatis.generator/src/main/java/cn/dalgen/mybatis/gen/model/java/Filelds.java +/Users/bangis.wangdf/Documents/workspace/oschina/mybatis.generator/src/main/java/cn/dalgen/mybatis/gen/model/config/CfResultMap.java +/Users/bangis.wangdf/Documents/workspace/oschina/mybatis.generator/src/main/java/cn/dalgen/mybatis/gen/model/config/DeleteColumn.java +/Users/bangis.wangdf/Documents/workspace/oschina/mybatis.generator/src/main/java/cn/dalgen/mybatis/gen/exception/DalgenException.java +/Users/bangis.wangdf/Documents/workspace/oschina/mybatis.generator/src/main/java/cn/dalgen/mybatis/gen/model/java/Paging.java +/Users/bangis.wangdf/Documents/workspace/oschina/mybatis.generator/src/main/java/cn/dalgen/mybatis/gen/DalgenMojo.java +/Users/bangis.wangdf/Documents/workspace/oschina/mybatis.generator/src/main/java/cn/dalgen/mybatis/gen/model/config/CfCollection.java +/Users/bangis.wangdf/Documents/workspace/oschina/mybatis.generator/src/main/java/cn/dalgen/mybatis/gen/model/repository/IgnoreDTDEntityResolver.java +/Users/bangis.wangdf/Documents/workspace/oschina/mybatis.generator/src/main/java/cn/dalgen/mybatis/gen/model/dbtable/Table.java +/Users/bangis.wangdf/Documents/workspace/oschina/mybatis.generator/src/main/java/cn/dalgen/mybatis/gen/model/config/CfColumn.java +/Users/bangis.wangdf/Documents/workspace/oschina/mybatis.generator/src/main/java/cn/dalgen/mybatis/gen/model/config/CfAssociation.java +/Users/bangis.wangdf/Documents/workspace/oschina/mybatis.generator/src/main/java/cn/dalgen/mybatis/gen/model/db/DataBase.java +/Users/bangis.wangdf/Documents/workspace/oschina/mybatis.generator/src/main/java/cn/dalgen/mybatis/gen/dataloaders/DalgenLoader.java +/Users/bangis.wangdf/Documents/workspace/oschina/mybatis.generator/src/main/java/cn/dalgen/mybatis/gen/model/java/Base.java +/Users/bangis.wangdf/Documents/workspace/oschina/mybatis.generator/src/main/java/cn/dalgen/mybatis/gen/utils/SysUtil.java +/Users/bangis.wangdf/Documents/workspace/oschina/mybatis.generator/src/main/java/cn/dalgen/mybatis/gen/model/dbtable/UniqueIndex.java +/Users/bangis.wangdf/Documents/workspace/oschina/mybatis.generator/src/main/java/cn/dalgen/mybatis/gen/model/java/domapper/DOMapperMethod.java +/Users/bangis.wangdf/Documents/workspace/oschina/mybatis.generator/src/main/java/cn/dalgen/mybatis/gen/datasources/JdbcConnectionDriver.java +/Users/bangis.wangdf/Documents/workspace/oschina/mybatis.generator/src/main/java/cn/dalgen/mybatis/gen/model/java/ResultMap.java +/Users/bangis.wangdf/Documents/workspace/oschina/mybatis.generator/src/main/java/cn/dalgen/mybatis/gen/enums/MultiplicityEnum.java +/Users/bangis.wangdf/Documents/workspace/oschina/mybatis.generator/src/main/java/cn/dalgen/mybatis/gen/model/java/DO.java +/Users/bangis.wangdf/Documents/workspace/oschina/mybatis.generator/src/main/java/cn/dalgen/mybatis/gen/enums/PagingCntTypeEnum.java +/Users/bangis.wangdf/Documents/workspace/oschina/mybatis.generator/src/main/java/cn/dalgen/mybatis/gen/model/Config.java +/Users/bangis.wangdf/Documents/workspace/oschina/mybatis.generator/src/main/java/cn/dalgen/mybatis/gen/dataloaders/DalgenTbLoader.java +/Users/bangis.wangdf/Documents/workspace/oschina/mybatis.generator/src/main/java/cn/dalgen/mybatis/gen/model/config/CfTable.java +/Users/bangis.wangdf/Documents/workspace/oschina/mybatis.generator/src/main/java/cn/dalgen/mybatis/gen/utils/StringDalUtil.java +/Users/bangis.wangdf/Documents/workspace/oschina/mybatis.generator/src/main/java/cn/dalgen/mybatis/gen/common/FileNameSelector.java +/Users/bangis.wangdf/Documents/workspace/oschina/mybatis.generator/src/main/java/cn/dalgen/mybatis/gen/model/repository/TableRepository.java +/Users/bangis.wangdf/Documents/workspace/oschina/mybatis.generator/src/main/java/cn/dalgen/mybatis/gen/model/dbtable/Column.java +/Users/bangis.wangdf/Documents/workspace/oschina/mybatis.generator/src/main/java/cn/dalgen/mybatis/gen/enums/ParamTypeEnum.java +/Users/bangis.wangdf/Documents/workspace/oschina/mybatis.generator/src/main/java/cn/dalgen/mybatis/gen/model/java/domapper/DOMapperMethodParam.java +/Users/bangis.wangdf/Documents/workspace/oschina/mybatis.generator/src/main/java/cn/dalgen/mybatis/gen/model/dbtable/NormalIndex.java +/Users/bangis.wangdf/Documents/workspace/oschina/mybatis.generator/src/main/java/cn/dalgen/mybatis/gen/utils/CamelCaseUtils.java +/Users/bangis.wangdf/Documents/workspace/oschina/mybatis.generator/src/main/java/cn/dalgen/mybatis/gen/dataloaders/AbstractDalgenLoader.java +/Users/bangis.wangdf/Documents/workspace/oschina/mybatis.generator/src/main/java/cn/dalgen/mybatis/gen/datasources/DalgenConnectionDriver.java +/Users/bangis.wangdf/Documents/workspace/oschina/mybatis.generator/src/main/java/cn/dalgen/mybatis/gen/model/dbtable/PrimaryKeys.java diff --git a/target/mybatis-maven-plugin-1.3.1-sources.jar b/target/mybatis-maven-plugin-1.3.1-sources.jar new file mode 100644 index 0000000000000000000000000000000000000000..54df33ad5e999b30875959bc4cba49fc56976b55 GIT binary patch literal 92551 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%0A_vc4uNNleQ0y^bKE*JfyU9o)TMastC7fte{N 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
Qw-~j@Rzbk3n9%JK?|WZIXnZTB?Azu8G|Gc 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 XnnYj*1%Wt&f1#WZi0a2};M4yBL)x=} literal 0 HcmV?d00001 diff --git a/target/mybatis-maven-plugin-1.3.1.jar.asc b/target/mybatis-maven-plugin-1.3.1.jar.asc new file mode 100644 index 0000000..445609e --- /dev/null +++ b/target/mybatis-maven-plugin-1.3.1.jar.asc @@ -0,0 +1,16 @@ +-----BEGIN PGP SIGNATURE----- + +iQIzBAABCgAdFiEEZ5v3LW1h0qYqwX+L3/o7jMXWpNsFAl7yzZYACgkQ3/o7jMXW +pNvo9Q/7B3xiuGv3os32IwPTO9YuQItuJrIONzqCeUr1wtZKsxWXOnersaTt5kvX +fnPwoGwTw9GIm9+Mr3GOKU+T9/d5ngVPsFajHjoNqISZsmx5Uwbk08msmvaA9keA +fypFKMh23Sz1zYeAmmAyulIoVtdGYrWMYYaT5+yNT6aJmx+CkcPDkp5fCLVldzmb +c3iEiO1J5lA+4MhBfwRRyeg3vvARUSLN1+kEyHPB84g1Oyyl+WzIruhtveWdi+Im +SlXDda0mdSrSsmgtz6vP8YpbdjzimNcKek6VopRv0GirA6Jl4Y+b8egrg6iec+tc +Ck1maWTFOMW7D4/zSkZsjJB5+B6DCiXNkiAl/s7QQ83qRoJHHTiZfjO15uhx7i9/ +3v2Sut2pORhpUxR+fmJU/iKClScIHZ4Q/+Q2bxSI9X01HBltU1uwNhzmLF/hEghe +INWdpdg+hA+iA0GiBLzgZN/owLNR5ZbLKrvWkpRuScjIKVXOheQO0YojxBafL4No +P3KmyruMRYP4GxxjkjvzgaasmTPNw5b9cgcoxYg5IXjQY1wZ6VwlzczaVO1urA2H +RUGv3oInI+S7K1zbFd6TfJbSPyvnR0l5nWpm67seAsgYDt269lAiFWOKzzRUhBey +7h+EbeFQYnSf+PadqtJ0xOWbNRH287mfBmSqcVu6WUzBK3ZZp3w= +=Agda +-----END PGP SIGNATURE----- diff --git a/target/mybatis-maven-plugin-1.3.1.pom b/target/mybatis-maven-plugin-1.3.1.pom new file mode 100644 index 0000000..394e43b --- /dev/null +++ b/target/mybatis-maven-plugin-1.3.1.pom @@ -0,0 +1,231 @@ + + + + 4.0.0 + + cn.dalgen.plugins + mybatis-maven-plugin + maven-plugin + + ${project.groupId}:${project.artifactId} + 1.3.1 + + https://gitee.com/bangis/mybatis.generator + mybatis generator mapper.xml mapper.java dao.java do.java paging map list + 2017 + + + org.sonatype.oss + oss-parent + 7 + + + + + The Apache Software License, Version 2.0 + http://www.apache.org/licenses/LICENSE-2.0.txt + repo + + + + scm:git:git@gitee.com:bangis/mybatis.generator.git + scm:git:git@gitee.com:bangis/mybatis.generator.git + https://gitee.com/bangis/mybatis.generator.git + HEAD + + + + + bangis + bangis + bangis@163.com + + + + + GitHub Issues + https://gitee.com/bangis/mybatis.generator.git + + + + releases + https://oss.sonatype.org/service/local/staging/deploy/maven2/ + + + snapshots + https://oss.sonatype.org/content/repositories/snapshots/ + + + + UTF-8 + UTF-8 + + + + + com.google.guava + guava + 18.0 + + + org.apache.maven.plugin-tools + maven-plugin-annotations + 3.2 + provided + + + org.jsoup + jsoup + 1.8.1 + + + com.alibaba + fastjson + 1.2.38 + + + commons-lang + commons-lang + 2.6 + + + commons-beanutils + commons-beanutils + 1.9.2 + + + org.apache.maven + maven-project + 3.0-alpha-2 + + + org.apache.maven + maven-plugin-api + 3.1.0 + + + org.apache.maven.plugin-testing + maven-plugin-testing-harness + 2.0-alpha-1 + test + + + net.sourceforge.fmpp + fmpp + 0.9.15 + + + mysql + mysql-connector-java + 5.1.47 + + + + org.mybatis + mybatis + 3.4.1 + + + dom4j + dom4j + 1.6.1 + + + org.mockito + mockito-all + 1.10.19 + test + + + + + + + + + + + + + + + + + + maven-antrun-plugin + + + compile + + run + + + + + + + + + + + + maven-source-plugin + 2.4 + + + package + + jar-no-fork + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + 1.7 + 1.7 + + + + org.apache.maven.plugins + maven-gpg-plugin + 1.6 + + + sign-artifacts + verify + + sign + + + + + + cn.dalgen.plugins + mybatis-maven-plugin + 1.3.1 + + srcTmp + true + dalgen/template + + + + + + + + + + \ No newline at end of file diff --git a/target/mybatis-maven-plugin-1.3.1.pom.asc b/target/mybatis-maven-plugin-1.3.1.pom.asc new file mode 100644 index 0000000..d51c0a3 --- /dev/null +++ b/target/mybatis-maven-plugin-1.3.1.pom.asc @@ -0,0 +1,16 @@ +-----BEGIN PGP SIGNATURE----- + +iQIzBAABCgAdFiEEZ5v3LW1h0qYqwX+L3/o7jMXWpNsFAl7yzZcACgkQ3/o7jMXW +pNuhJQ/+NlN+aNMpijs+5RlvUhHlfP7mBGEolnvKqzvSFbNRau4/iVFE78lyGpWw +/aORi335o7AiD1/j13TJ6pedCaUTwnJEcxVGovyYIYMsuf5WkYmH2Wvj52xdXANu +lP7shil2dBTVoXWdSWFGIdMW8EmCd4Fi0bUf0w8RSxcZO7/MoHOZsHM48TC4qvef +wTqKv5JVQl0AVolAZ073kRONGaZID8RmqLk38FFgycjHAE8cOtvPyiAa/X6eWl6D +JFm0kvIeiufkHOoGGCC6mn40wymekMcMkayS2ktHeQ4fOC3mSawIFTI0LmwjLIJK +HJOf8Ll9xCX7p48G8uqRfMBW1GFNgJhb8pxwZBZOXxADfu6pYgypJYIk9m9lXBOq +ODfYGd3CNtBcMJsHwApYFle/wAwDvxZNPtmQ3wrNHDjN+IpM2ZswdDP5xxEmXcuL +zcAoPRvQGrrn8n5bfsiiWU87ehiIBaGdeL9fSNTqNqYOE3+pwtElkfXEWC73dAXW +Wy1G++vkacvDD/lSNHd6Lq8bZSLsbpwJm2TENyWvE41ajizcEC7//xmJrp8bKOmV +Jv3XIePHXQXkoNefhLbXc1DbOSGs3wB6CbKoxdTgRkViD45kFvBvwZqijPpLHBLB +vSmTbUKX55WfBwSy7T1yih5gl+NfH9uQoujOHPWwG4IZcn8pELE= +=GjNq +-----END PGP SIGNATURE----- -- Gitee