From 7c18de41c1b9ad6270739fdef1716ce4c2944cda Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 12 Sep 2017 17:48:20 +0800 Subject: [PATCH 01/34] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dmodel=E5=8C=85=E4=B8=8B?= =?UTF-8?q?=E6=B2=A1=E6=9C=89=E6=89=93table=E6=A0=87=E7=AD=BE=E6=97=B6?= =?UTF-8?q?=E6=8A=A5=E9=94=99=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../store/manager/system/SysMysqlCreateTableManagerImpl.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/manager/system/SysMysqlCreateTableManagerImpl.java b/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/manager/system/SysMysqlCreateTableManagerImpl.java index 4a86719..32f73b0 100644 --- a/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/manager/system/SysMysqlCreateTableManagerImpl.java +++ b/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/manager/system/SysMysqlCreateTableManagerImpl.java @@ -119,6 +119,10 @@ public class SysMysqlCreateTableManagerImpl implements SysMysqlCreateTableManage for (Class clas : classes){ Table table = clas.getAnnotation(Table.class); + // 没有打注解不需要创建变 + if(null == table){ + continue; + } // 用于存新增表的字段 List newFieldList = new ArrayList(); -- Gitee From 77c9fd5f7c978409bd4ed7779aa29799ff606c37 Mon Sep 17 00:00:00 2001 From: "chenbin.sun" Date: Wed, 13 Sep 2017 16:25:28 +0800 Subject: [PATCH 02/34] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dmybatis3.1=E7=89=88?= =?UTF-8?q?=E6=9C=ACsql=E6=B3=A8=E5=85=A5=E6=97=B6=E5=90=8C=E5=90=8D?= =?UTF-8?q?=E7=9A=84=E5=B1=9E=E6=80=A7=E5=92=8C=E5=B8=B8=E9=87=8F=E4=BC=9A?= =?UTF-8?q?=E6=B3=A8=E5=85=A5=E5=88=B0=E5=B8=B8=E9=87=8F=E4=B8=AD=E6=8A=A5?= =?UTF-8?q?=E9=94=99=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../store/command/SysMysqlColumns.java | 504 +++++++++--------- .../SysMysqlCreateTableManagerImpl.java | 2 +- .../target/classes/META-INF/MANIFEST.MF | 4 +- .../mybatis-enhance-actable/pom.properties | 4 +- .../mybatis-enhance-actable/pom.xml | 112 ++-- .../mapping/common/BaseMysqlCRUDMapper.xml | 172 +++--- .../system/CreateMysqlTablesMapper.xml | 266 ++++----- 7 files changed, 532 insertions(+), 532 deletions(-) diff --git a/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/command/SysMysqlColumns.java b/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/command/SysMysqlColumns.java index e935cf1..6436cec 100644 --- a/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/command/SysMysqlColumns.java +++ b/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/command/SysMysqlColumns.java @@ -1,252 +1,252 @@ -package com.mybatis.enhance.store.command; - -/** - * 用于查询表中字段结构详细信息 - * - * @author sunchenbin - * @version 2016年6月23日 下午6:10:56 - */ -public class SysMysqlColumns { - - /** - * 字段名 - */ - public static final String COLUMN_NAME = "column_name"; - /** - * 默认值 - */ - public static final String COLUMN_DEFAULT = "column_default"; - /** - * 是否可为null,值:(YES,NO) - */ - public static final String IS_NULLABLE = "is_nullable"; - /** - * 数据类型 - */ - public static final String DATA_TYPE = "data_type"; - /** - * 长度,如果是0的话是null - */ - public static final String NUMERIC_PRECISION = "numeric_precision"; - /** - * 小数点数 - */ - public static final String NUMERIC_SCALE = "numeric_scale"; - /** - * 是否为主键,是的话是PRI - */ - public static final String COLUMN_KEY = "column_key"; - /** - * 是否为自动增长,是的话为auto_increment - */ - public static final String EXTRA = "extra"; - - private String table_catalog; - /** - * 库名 - */ - private String table_schema; - /** - * 表名 - */ - private String table_name; - /** - * 字段名 - */ - private String column_name; - /** - * 字段位置的排序 - */ - private String ordinal_position; - /** - * 字段默认值 - */ - private String column_default; - /** - * 是否可以为null - */ - private String is_nullable; - /** - * 字段类型 - */ - private String data_type; - private String character_maximum_length; - private String character_octet_length; - /** - * 长度 - */ - private String numeric_precision; - /** - * 小数点数 - */ - private String numeric_scale; - private String character_set_name; - private String collation_name; - /** - * 类型加长度拼接的字符串,例如varchar(100) - */ - private String column_type; - /** - * 主键:PRI;唯一键:UNI - */ - private String column_key; - /** - * 是否为自动增长,是的话为auto_increment - */ - private String extra; - private String privileges; - private String column_comment; - - public String getTable_catalog() { - return table_catalog; - } - - public void setTable_catalog(String table_catalog) { - this.table_catalog = table_catalog; - } - - public String getTable_schema() { - return table_schema; - } - - public void setTable_schema(String table_schema) { - this.table_schema = table_schema; - } - - public String getTable_name() { - return table_name; - } - - public void setTable_name(String table_name) { - this.table_name = table_name; - } - - public String getColumn_name() { - return column_name; - } - - public void setColumn_name(String column_name) { - this.column_name = column_name; - } - - public String getOrdinal_position() { - return ordinal_position; - } - - public void setOrdinal_position(String ordinal_position) { - this.ordinal_position = ordinal_position; - } - - public String getColumn_default() { - return column_default; - } - - public void setColumn_default(String column_default) { - this.column_default = column_default; - } - - public String getIs_nullable() { - return is_nullable; - } - - public void setIs_nullable(String is_nullable) { - this.is_nullable = is_nullable; - } - - public String getData_type() { - return data_type; - } - - public void setData_type(String data_type) { - this.data_type = data_type; - } - - public String getCharacter_maximum_length() { - return character_maximum_length; - } - - public void setCharacter_maximum_length(String character_maximum_length) { - this.character_maximum_length = character_maximum_length; - } - - public String getCharacter_octet_length() { - return character_octet_length; - } - - public void setCharacter_octet_length(String character_octet_length) { - this.character_octet_length = character_octet_length; - } - - public String getNumeric_precision() { - return numeric_precision; - } - - public void setNumeric_precision(String numeric_precision) { - this.numeric_precision = numeric_precision; - } - - public String getNumeric_scale() { - return numeric_scale; - } - - public void setNumeric_scale(String numeric_scale) { - this.numeric_scale = numeric_scale; - } - - public String getCharacter_set_name() { - return character_set_name; - } - - public void setCharacter_set_name(String character_set_name) { - this.character_set_name = character_set_name; - } - - public String getCollation_name() { - return collation_name; - } - - public void setCollation_name(String collation_name) { - this.collation_name = collation_name; - } - - public String getColumn_type() { - return column_type; - } - - public void setColumn_type(String column_type) { - this.column_type = column_type; - } - - public String getColumn_key() { - return column_key; - } - - public void setColumn_key(String column_key) { - this.column_key = column_key; - } - - public String getExtra() { - return extra; - } - - public void setExtra(String extra) { - this.extra = extra; - } - - public String getPrivileges() { - return privileges; - } - - public void setPrivileges(String privileges) { - this.privileges = privileges; - } - - public String getColumn_comment() { - return column_comment; - } - - public void setColumn_comment(String column_comment) { - this.column_comment = column_comment; - } - -} +package com.mybatis.enhance.store.command; + +/** + * 用于查询表中字段结构详细信息 + * + * @author sunchenbin + * @version 2016年6月23日 下午6:10:56 + */ +public class SysMysqlColumns { + + /** + * 字段名 + */ + public static final String COLUMN_NAME_KEY = "column_name"; + /** + * 默认值 + */ + public static final String COLUMN_DEFAULT_KEY = "column_default"; + /** + * 是否可为null,值:(YES,NO) + */ + public static final String IS_NULLABLE_KEY = "is_nullable"; + /** + * 数据类型 + */ + public static final String DATA_TYPE_KEY = "data_type"; + /** + * 长度,如果是0的话是null + */ + public static final String NUMERIC_PRECISION_KEY = "numeric_precision"; + /** + * 小数点数 + */ + public static final String NUMERIC_SCALE_KEY = "numeric_scale"; + /** + * 是否为主键,是的话是PRI + */ + public static final String COLUMN_KEY_KEY = "column_key"; + /** + * 是否为自动增长,是的话为auto_increment + */ + public static final String EXTRA_KEY = "extra"; + + private String table_catalog; + /** + * 库名 + */ + private String table_schema; + /** + * 表名 + */ + private String table_name; + /** + * 字段名 + */ + private String column_name; + /** + * 字段位置的排序 + */ + private String ordinal_position; + /** + * 字段默认值 + */ + private String column_default; + /** + * 是否可以为null + */ + private String is_nullable; + /** + * 字段类型 + */ + private String data_type; + private String character_maximum_length; + private String character_octet_length; + /** + * 长度 + */ + private String numeric_precision; + /** + * 小数点数 + */ + private String numeric_scale; + private String character_set_name; + private String collation_name; + /** + * 类型加长度拼接的字符串,例如varchar(100) + */ + private String column_type; + /** + * 主键:PRI;唯一键:UNI + */ + private String column_key; + /** + * 是否为自动增长,是的话为auto_increment + */ + private String extra; + private String privileges; + private String column_comment; + + public String getTable_catalog() { + return table_catalog; + } + + public void setTable_catalog(String table_catalog) { + this.table_catalog = table_catalog; + } + + public String getTable_schema() { + return table_schema; + } + + public void setTable_schema(String table_schema) { + this.table_schema = table_schema; + } + + public String getTable_name() { + return table_name; + } + + public void setTable_name(String table_name) { + this.table_name = table_name; + } + + public String getColumn_name() { + return column_name; + } + + public void setColumn_name(String column_name) { + this.column_name = column_name; + } + + public String getOrdinal_position() { + return ordinal_position; + } + + public void setOrdinal_position(String ordinal_position) { + this.ordinal_position = ordinal_position; + } + + public String getColumn_default() { + return column_default; + } + + public void setColumn_default(String column_default) { + this.column_default = column_default; + } + + public String getIs_nullable() { + return is_nullable; + } + + public void setIs_nullable(String is_nullable) { + this.is_nullable = is_nullable; + } + + public String getData_type() { + return data_type; + } + + public void setData_type(String data_type) { + this.data_type = data_type; + } + + public String getCharacter_maximum_length() { + return character_maximum_length; + } + + public void setCharacter_maximum_length(String character_maximum_length) { + this.character_maximum_length = character_maximum_length; + } + + public String getCharacter_octet_length() { + return character_octet_length; + } + + public void setCharacter_octet_length(String character_octet_length) { + this.character_octet_length = character_octet_length; + } + + public String getNumeric_precision() { + return numeric_precision; + } + + public void setNumeric_precision(String numeric_precision) { + this.numeric_precision = numeric_precision; + } + + public String getNumeric_scale() { + return numeric_scale; + } + + public void setNumeric_scale(String numeric_scale) { + this.numeric_scale = numeric_scale; + } + + public String getCharacter_set_name() { + return character_set_name; + } + + public void setCharacter_set_name(String character_set_name) { + this.character_set_name = character_set_name; + } + + public String getCollation_name() { + return collation_name; + } + + public void setCollation_name(String collation_name) { + this.collation_name = collation_name; + } + + public String getColumn_type() { + return column_type; + } + + public void setColumn_type(String column_type) { + this.column_type = column_type; + } + + public String getColumn_key() { + return column_key; + } + + public void setColumn_key(String column_key) { + this.column_key = column_key; + } + + public String getExtra() { + return extra; + } + + public void setExtra(String extra) { + this.extra = extra; + } + + public String getPrivileges() { + return privileges; + } + + public void setPrivileges(String privileges) { + this.privileges = privileges; + } + + public String getColumn_comment() { + return column_comment; + } + + public void setColumn_comment(String column_comment) { + this.column_comment = column_comment; + } + +} diff --git a/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/manager/system/SysMysqlCreateTableManagerImpl.java b/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/manager/system/SysMysqlCreateTableManagerImpl.java index 32f73b0..44745bb 100644 --- a/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/manager/system/SysMysqlCreateTableManagerImpl.java +++ b/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/manager/system/SysMysqlCreateTableManagerImpl.java @@ -157,7 +157,7 @@ public class SysMysqlCreateTableManagerImpl implements SysMysqlCreateTableManage // 从sysColumns中取出我们需要比较的列的List // 先取出name用来筛选出增加和删除的字段 - List columnNames = ClassTools.getPropertyValueList(tableColumnList, SysMysqlColumns.COLUMN_NAME); + List columnNames = ClassTools.getPropertyValueList(tableColumnList, SysMysqlColumns.COLUMN_NAME_KEY); // 验证对比从model中解析的fieldList与从数据库查出来的columnList // 1. 找出增加的字段 diff --git a/mybatis-enhance-actable/target/classes/META-INF/MANIFEST.MF b/mybatis-enhance-actable/target/classes/META-INF/MANIFEST.MF index edbb949..e8663e6 100644 --- a/mybatis-enhance-actable/target/classes/META-INF/MANIFEST.MF +++ b/mybatis-enhance-actable/target/classes/META-INF/MANIFEST.MF @@ -1,5 +1,5 @@ Manifest-Version: 1.0 -Build-Jdk: 1.7.0_21 -Built-By: ubuntu +Built-By: chenbin.sun +Build-Jdk: 1.8.0_91 Created-By: Maven Integration for Eclipse diff --git a/mybatis-enhance-actable/target/classes/META-INF/maven/com.mybatis.enhance.store/mybatis-enhance-actable/pom.properties b/mybatis-enhance-actable/target/classes/META-INF/maven/com.mybatis.enhance.store/mybatis-enhance-actable/pom.properties index a3f5177..2f0d9d6 100644 --- a/mybatis-enhance-actable/target/classes/META-INF/maven/com.mybatis.enhance.store/mybatis-enhance-actable/pom.properties +++ b/mybatis-enhance-actable/target/classes/META-INF/maven/com.mybatis.enhance.store/mybatis-enhance-actable/pom.properties @@ -1,7 +1,7 @@ #Generated by Maven Integration for Eclipse -#Sun Jul 09 16:11:30 CST 2017 +#Wed Sep 13 16:02:07 CST 2017 version=0.0.1-SNAPSHOT groupId=com.mybatis.enhance.store m2e.projectName=mybatis-enhance-actable -m2e.projectLocation=E\:\\workspace_ACTable\\mybatis-enhance\\mybatis-enhance-actable +m2e.projectLocation=D\:\\Git\\mybatis-enhance\\mybatis-enhance-actable artifactId=mybatis-enhance-actable diff --git a/mybatis-enhance-actable/target/classes/META-INF/maven/com.mybatis.enhance.store/mybatis-enhance-actable/pom.xml b/mybatis-enhance-actable/target/classes/META-INF/maven/com.mybatis.enhance.store/mybatis-enhance-actable/pom.xml index 10c33c0..bc3d4a3 100644 --- a/mybatis-enhance-actable/target/classes/META-INF/maven/com.mybatis.enhance.store/mybatis-enhance-actable/pom.xml +++ b/mybatis-enhance-actable/target/classes/META-INF/maven/com.mybatis.enhance.store/mybatis-enhance-actable/pom.xml @@ -1,57 +1,57 @@ - - 4.0.0 - com.mybatis.enhance.store - mybatis-enhance-actable - 0.0.1-SNAPSHOT - - - 4.1.4.RELEASE - - - - - - - org.springframework - spring-context - ${spring.version} - provided - - - - org.springframework - spring-tx - ${spring.version} - provided - - - - org.slf4j - slf4j-api - 1.7.12 - provided - - - - org.mybatis.scripting - mybatis-velocity - 1.2 - provided - - - - - - - src/main/java - - **/*.properties - **/*.xml - - false - - - - + + 4.0.0 + com.mybatis.enhance.store + mybatis-enhance-actable + 0.0.1-SNAPSHOT + + + 4.1.4.RELEASE + + + + + + + org.springframework + spring-context + ${spring.version} + provided + + + + org.springframework + spring-tx + ${spring.version} + provided + + + + org.slf4j + slf4j-api + 1.7.12 + provided + + + + org.mybatis.scripting + mybatis-velocity + 1.2 + provided + + + + + + + src/main/java + + **/*.properties + **/*.xml + + false + + + + \ No newline at end of file diff --git a/mybatis-enhance-actable/target/classes/com/mybatis/enhance/store/mapping/common/BaseMysqlCRUDMapper.xml b/mybatis-enhance-actable/target/classes/com/mybatis/enhance/store/mapping/common/BaseMysqlCRUDMapper.xml index 7dba3c1..ff0eabd 100644 --- a/mybatis-enhance-actable/target/classes/com/mybatis/enhance/store/mapping/common/BaseMysqlCRUDMapper.xml +++ b/mybatis-enhance-actable/target/classes/com/mybatis/enhance/store/mapping/common/BaseMysqlCRUDMapper.xml @@ -1,86 +1,86 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + diff --git a/mybatis-enhance-actable/target/classes/com/mybatis/enhance/store/mapping/system/CreateMysqlTablesMapper.xml b/mybatis-enhance-actable/target/classes/com/mybatis/enhance/store/mapping/system/CreateMysqlTablesMapper.xml index 1d85149..bb63442 100644 --- a/mybatis-enhance-actable/target/classes/com/mybatis/enhance/store/mapping/system/CreateMysqlTablesMapper.xml +++ b/mybatis-enhance-actable/target/classes/com/mybatis/enhance/store/mapping/system/CreateMysqlTablesMapper.xml @@ -1,133 +1,133 @@ - - - - - - - - `${fields.fieldName}` ${fields.fieldType} - - - `${fields.fieldName}` ${fields.fieldType}(${fields.fieldLength}) - - - `${fields.fieldName}` - ${fields.fieldType}(${fields.fieldLength},${fields.fieldDecimalLength}) - - - NULL - - - NOT NULL - - - AUTO_INCREMENT - - - - - DEFAULT #{fields.fieldDefaultValue} - - - - - DEFAULT #{fields.fieldDefaultValue} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + `${fields.fieldName}` ${fields.fieldType} + + + `${fields.fieldName}` ${fields.fieldType}(${fields.fieldLength}) + + + `${fields.fieldName}` + ${fields.fieldType}(${fields.fieldLength},${fields.fieldDecimalLength}) + + + NULL + + + NOT NULL + + + AUTO_INCREMENT + + + + + DEFAULT #{fields.fieldDefaultValue} + + + + + DEFAULT #{fields.fieldDefaultValue} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -- Gitee From 4ce7f0f0bba16b45fe48ad975edcc2d46e90f3b6 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 19 Sep 2017 13:56:41 +0800 Subject: [PATCH 03/34] msg --- mybatis-enhance-actable/.gitignore | 1 + .../.settings/org.eclipse.core.resources.prefs | 2 ++ 2 files changed, 3 insertions(+) create mode 100644 mybatis-enhance-actable/.gitignore create mode 100644 mybatis-enhance-actable/.settings/org.eclipse.core.resources.prefs diff --git a/mybatis-enhance-actable/.gitignore b/mybatis-enhance-actable/.gitignore new file mode 100644 index 0000000..b83d222 --- /dev/null +++ b/mybatis-enhance-actable/.gitignore @@ -0,0 +1 @@ +/target/ diff --git a/mybatis-enhance-actable/.settings/org.eclipse.core.resources.prefs b/mybatis-enhance-actable/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..99f26c0 --- /dev/null +++ b/mybatis-enhance-actable/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/=UTF-8 -- Gitee From c312c8a06c84ea8b727c6ef30651241d8abbeb8c Mon Sep 17 00:00:00 2001 From: sun5769675 Date: Tue, 19 Sep 2017 14:03:18 +0800 Subject: [PATCH 04/34] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index f46f7fa..78ca310 100644 --- a/README.md +++ b/README.md @@ -81,6 +81,10 @@ A.C.Table是采用了Spring、Mybatis技术的Maven结构,详细介绍如下 5.系统启动后会去自动调用SysMysqlCreateTableManagerImpl.java的createMysqlTable()方法,没错,这就是核心方法了,负责创建、删除、修改表。 +**共通的CUDR功能使用** + 使用方法很简单,大家在manager或者Controller中直接注入BaseMysqlCRUDManager这个接口然后给一个泛型就可以了 + 注意:接口的泛型就是你要操作的表对应的model + **demo代码的地址** 1.码云地址:http://git.oschina.net/sunchenbin/mybatis-enhance-actable-demo -- Gitee From 444a07879a220c08a12230aab30b9258083ee7cd Mon Sep 17 00:00:00 2001 From: sun5769675 Date: Tue, 19 Sep 2017 14:04:31 +0800 Subject: [PATCH 05/34] =?UTF-8?q?=E6=96=87=E6=A1=A3=E4=B8=AD=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E5=AF=B9=E5=85=B1=E9=80=9A=E7=9A=84CUDR=E6=96=B9?= =?UTF-8?q?=E6=B3=95=E7=9A=84=E4=BD=BF=E7=94=A8=E6=8F=8F=E8=BF=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 78ca310..5d4d14e 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # mybatis-enhance-actable-0.0.1 -该项目是从之前写过的一个框架中抽取出来的,本身是对Mybatis做的增强功能,为了能够使习惯了hibernate框架的开发者能够快速的入手Mybatis,我给他取名叫做 “A.C.Table” 本意是自动建表的意思,A.C.Table是一个基于Spring和Mybatis的Maven项目,增强了Mybatis的功能,过配置model注解的方式来创建表,修改表结构,目前仅支持Mysql,后续可能会扩展针对其他数据库的支持。 +该项目是从之前写过的一个框架中抽取出来的,本身是对Mybatis做的增强功能,为了能够使习惯了hibernate框架的开发者能够快速的入手Mybatis,我给他取名叫做 “A.C.Table” 本意是自动建表的意思,A.C.Table是一个基于Spring和Mybatis的Maven项目,增强了Mybatis的功能,过配置model注解的方式来创建表,修改表结构,并且实现了共通的CUDR功能提升开发效率,目前仅支持Mysql,后续可能会扩展针对其他数据库的支持。 A.C.Table是采用了Spring、Mybatis技术的Maven结构,详细介绍如下: @@ -82,8 +82,8 @@ A.C.Table是采用了Spring、Mybatis技术的Maven结构,详细介绍如下 5.系统启动后会去自动调用SysMysqlCreateTableManagerImpl.java的createMysqlTable()方法,没错,这就是核心方法了,负责创建、删除、修改表。 **共通的CUDR功能使用** - 使用方法很简单,大家在manager或者Controller中直接注入BaseMysqlCRUDManager这个接口然后给一个泛型就可以了 - 注意:接口的泛型就是你要操作的表对应的model + 1.使用方法很简单,大家在manager或者Controller中直接注入BaseMysqlCRUDManager这个接口然后给一个泛型就可以了 + 2.注意:接口的泛型就是你要操作的表对应的model **demo代码的地址** -- Gitee From 47ce57abbe26878e1d62fea4c2a619c0e7379168 Mon Sep 17 00:00:00 2001 From: sun5769675 Date: Tue, 19 Sep 2017 14:05:00 +0800 Subject: [PATCH 06/34] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5d4d14e..429b568 100644 --- a/README.md +++ b/README.md @@ -81,7 +81,7 @@ A.C.Table是采用了Spring、Mybatis技术的Maven结构,详细介绍如下 5.系统启动后会去自动调用SysMysqlCreateTableManagerImpl.java的createMysqlTable()方法,没错,这就是核心方法了,负责创建、删除、修改表。 -**共通的CUDR功能使用** + **共通的CUDR功能使用** 1.使用方法很简单,大家在manager或者Controller中直接注入BaseMysqlCRUDManager这个接口然后给一个泛型就可以了 2.注意:接口的泛型就是你要操作的表对应的model -- Gitee From 409182f4acc0584fdaf4ac74cace9b3a35fce2a7 Mon Sep 17 00:00:00 2001 From: sun5769675 Date: Tue, 19 Sep 2017 15:10:16 +0800 Subject: [PATCH 07/34] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 429b568..16e4476 100644 --- a/README.md +++ b/README.md @@ -81,7 +81,7 @@ A.C.Table是采用了Spring、Mybatis技术的Maven结构,详细介绍如下 5.系统启动后会去自动调用SysMysqlCreateTableManagerImpl.java的createMysqlTable()方法,没错,这就是核心方法了,负责创建、删除、修改表。 - **共通的CUDR功能使用** + **共通的CUDR功能使用** 1.使用方法很简单,大家在manager或者Controller中直接注入BaseMysqlCRUDManager这个接口然后给一个泛型就可以了 2.注意:接口的泛型就是你要操作的表对应的model -- Gitee From 180fe362c2de0c31558d80a1e1e7fe75e9420ad3 Mon Sep 17 00:00:00 2001 From: sun5769675 Date: Tue, 19 Sep 2017 15:10:41 +0800 Subject: [PATCH 08/34] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 16e4476..dc3f68a 100644 --- a/README.md +++ b/README.md @@ -82,7 +82,9 @@ A.C.Table是采用了Spring、Mybatis技术的Maven结构,详细介绍如下 5.系统启动后会去自动调用SysMysqlCreateTableManagerImpl.java的createMysqlTable()方法,没错,这就是核心方法了,负责创建、删除、修改表。 **共通的CUDR功能使用** + 1.使用方法很简单,大家在manager或者Controller中直接注入BaseMysqlCRUDManager这个接口然后给一个泛型就可以了 + 2.注意:接口的泛型就是你要操作的表对应的model **demo代码的地址** -- Gitee From e93d7f7cbd567daef40cebd423487429bb2e89c6 Mon Sep 17 00:00:00 2001 From: sun5769675 Date: Tue, 19 Sep 2017 15:11:01 +0800 Subject: [PATCH 09/34] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index dc3f68a..fe2f88a 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,7 @@ A.C.Table是采用了Spring、Mybatis技术的Maven结构,详细介绍如下 2. 在你的web项目上创建个目录比如config下面创建个文件autoCreateTable.properties文件的内容如下: mybatis.table.auto=update + mybatis.model.pack=com.sunchenbin.store.model 本系统提供三种模式: -- Gitee From 65a4d5d94f9b206f75fd298fdcaf941e65e99862 Mon Sep 17 00:00:00 2001 From: "chenbin.sun" Date: Thu, 21 Sep 2017 14:46:43 +0800 Subject: [PATCH 10/34] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=85=AC=E5=85=B1?= =?UTF-8?q?=E7=9A=84CUDR=EF=BC=8C=E4=B8=8D=E9=9C=80=E8=A6=81=E4=BC=A0?= =?UTF-8?q?=E6=B3=9B=E5=9E=8B=EF=BC=8C=E5=8F=AA=E9=9C=80=E8=A6=81=E4=BC=A0?= =?UTF-8?q?=E6=93=8D=E4=BD=9C=E8=A1=A8=E7=9A=84=E5=AF=B9=E8=B1=A1=E5=B0=B1?= =?UTF-8?q?=E5=8F=AF=E4=BB=A5=E5=8E=BB=E8=BF=9B=E8=A1=8CCUDR?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org.eclipse.core.resources.prefs | 2 - .../manager/common/BaseMysqlCRUDManager.java | 11 +- .../common/BaseMysqlCRUDManagerImpl.java | 15 +- .../mybatis-enhance-actable/pom.properties | 4 +- .../mybatis-enhance-actable/pom.xml | 112 ++++---- .../mapping/common/BaseMysqlCRUDMapper.xml | 172 +++++------ .../system/CreateMysqlTablesMapper.xml | 266 +++++++++--------- 7 files changed, 291 insertions(+), 291 deletions(-) delete mode 100644 mybatis-enhance-actable/.settings/org.eclipse.core.resources.prefs diff --git a/mybatis-enhance-actable/.settings/org.eclipse.core.resources.prefs b/mybatis-enhance-actable/.settings/org.eclipse.core.resources.prefs deleted file mode 100644 index 99f26c0..0000000 --- a/mybatis-enhance-actable/.settings/org.eclipse.core.resources.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -encoding/=UTF-8 diff --git a/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/manager/common/BaseMysqlCRUDManager.java b/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/manager/common/BaseMysqlCRUDManager.java index 2d27559..df60fb6 100644 --- a/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/manager/common/BaseMysqlCRUDManager.java +++ b/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/manager/common/BaseMysqlCRUDManager.java @@ -2,23 +2,26 @@ package com.mybatis.enhance.store.manager.common; import java.util.List; -public interface BaseMysqlCRUDManager{ +public interface BaseMysqlCRUDManager{ /** * 保存,如果主键有值则进行更新操作 + * @param * @param t */ - void save(T t); + void save(T t); /** * 根据传入对象非空的条件删除 + * @param * @param t */ - void delete(T t); + void delete(T t); /** * 根据传入对象非空的条件进行查询 + * @param * @param t */ - List query(T t); + List query(T t); } diff --git a/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/manager/common/BaseMysqlCRUDManagerImpl.java b/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/manager/common/BaseMysqlCRUDManagerImpl.java index 4d962fc..9eb8e25 100644 --- a/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/manager/common/BaseMysqlCRUDManagerImpl.java +++ b/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/manager/common/BaseMysqlCRUDManagerImpl.java @@ -18,7 +18,7 @@ import com.mybatis.enhance.store.dao.common.BaseMysqlCRUDMapper; @Transactional @Service("baseMysqlCRUDManager") -public class BaseMysqlCRUDManagerImpl implements BaseMysqlCRUDManager{ +public class BaseMysqlCRUDManagerImpl implements BaseMysqlCRUDManager{ private static final Logger log = LoggerFactory.getLogger(BaseMysqlCRUDManagerImpl.class); @@ -27,7 +27,7 @@ public class BaseMysqlCRUDManagerImpl implements BaseMysqlCRUDManager{ @Autowired private BaseMysqlCRUDMapper baseMysqlCRUDMapper; - public void save(Object obj){ + public void save(T obj){ boolean isSave = true; Table tableName = obj.getClass().getAnnotation(Table.class); if ((tableName == null) || (tableName.name() == null || tableName.name() == "")) { @@ -79,7 +79,7 @@ public class BaseMysqlCRUDManagerImpl implements BaseMysqlCRUDManager{ } } - public void delete(Object obj){ + public void delete(T obj){ // 得到表名 Table tableName = obj.getClass().getAnnotation(Table.class); @@ -113,7 +113,8 @@ public class BaseMysqlCRUDManagerImpl implements BaseMysqlCRUDManager{ baseMysqlCRUDMapper.delete(tableMap); } - public List query(Object obj){ + @SuppressWarnings("unchecked") + public List query(T obj){ // 得到表名 Table tableName = obj.getClass().getAnnotation(Table.class); if ((tableName == null) || (tableName.name() == null || tableName.name() == "")) { @@ -145,10 +146,10 @@ public class BaseMysqlCRUDManagerImpl implements BaseMysqlCRUDManager{ tableMap.put(tableName.name(), dataMap); List> query = baseMysqlCRUDMapper.query(tableMap); - List list = new ArrayList(); + List list = new ArrayList(); try{ for (Map map : query){ - Object newInstance = obj.getClass().newInstance(); + T newInstance = (T) obj.getClass().newInstance(); Field[] declaredFields2 = newInstance.getClass().getDeclaredFields(); for (Field field : declaredFields2){ field.setAccessible(true); @@ -164,10 +165,8 @@ public class BaseMysqlCRUDManagerImpl implements BaseMysqlCRUDManager{ list.add(newInstance); } }catch (InstantiationException e){ - // TODO Auto-generated catch block e.printStackTrace(); }catch (IllegalAccessException e){ - // TODO Auto-generated catch block e.printStackTrace(); } diff --git a/mybatis-enhance-actable/target/classes/META-INF/maven/com.mybatis.enhance.store/mybatis-enhance-actable/pom.properties b/mybatis-enhance-actable/target/classes/META-INF/maven/com.mybatis.enhance.store/mybatis-enhance-actable/pom.properties index 2f0d9d6..6e7b6bc 100644 --- a/mybatis-enhance-actable/target/classes/META-INF/maven/com.mybatis.enhance.store/mybatis-enhance-actable/pom.properties +++ b/mybatis-enhance-actable/target/classes/META-INF/maven/com.mybatis.enhance.store/mybatis-enhance-actable/pom.properties @@ -1,7 +1,7 @@ #Generated by Maven Integration for Eclipse -#Wed Sep 13 16:02:07 CST 2017 +#Thu Sep 21 14:41:08 CST 2017 version=0.0.1-SNAPSHOT groupId=com.mybatis.enhance.store m2e.projectName=mybatis-enhance-actable -m2e.projectLocation=D\:\\Git\\mybatis-enhance\\mybatis-enhance-actable +m2e.projectLocation=E\:\\workspace_actabel\\mybatis-enhance\\mybatis-enhance-actable artifactId=mybatis-enhance-actable diff --git a/mybatis-enhance-actable/target/classes/META-INF/maven/com.mybatis.enhance.store/mybatis-enhance-actable/pom.xml b/mybatis-enhance-actable/target/classes/META-INF/maven/com.mybatis.enhance.store/mybatis-enhance-actable/pom.xml index bc3d4a3..10c33c0 100644 --- a/mybatis-enhance-actable/target/classes/META-INF/maven/com.mybatis.enhance.store/mybatis-enhance-actable/pom.xml +++ b/mybatis-enhance-actable/target/classes/META-INF/maven/com.mybatis.enhance.store/mybatis-enhance-actable/pom.xml @@ -1,57 +1,57 @@ - - 4.0.0 - com.mybatis.enhance.store - mybatis-enhance-actable - 0.0.1-SNAPSHOT - - - 4.1.4.RELEASE - - - - - - - org.springframework - spring-context - ${spring.version} - provided - - - - org.springframework - spring-tx - ${spring.version} - provided - - - - org.slf4j - slf4j-api - 1.7.12 - provided - - - - org.mybatis.scripting - mybatis-velocity - 1.2 - provided - - - - - - - src/main/java - - **/*.properties - **/*.xml - - false - - - - + + 4.0.0 + com.mybatis.enhance.store + mybatis-enhance-actable + 0.0.1-SNAPSHOT + + + 4.1.4.RELEASE + + + + + + + org.springframework + spring-context + ${spring.version} + provided + + + + org.springframework + spring-tx + ${spring.version} + provided + + + + org.slf4j + slf4j-api + 1.7.12 + provided + + + + org.mybatis.scripting + mybatis-velocity + 1.2 + provided + + + + + + + src/main/java + + **/*.properties + **/*.xml + + false + + + + \ No newline at end of file diff --git a/mybatis-enhance-actable/target/classes/com/mybatis/enhance/store/mapping/common/BaseMysqlCRUDMapper.xml b/mybatis-enhance-actable/target/classes/com/mybatis/enhance/store/mapping/common/BaseMysqlCRUDMapper.xml index ff0eabd..7dba3c1 100644 --- a/mybatis-enhance-actable/target/classes/com/mybatis/enhance/store/mapping/common/BaseMysqlCRUDMapper.xml +++ b/mybatis-enhance-actable/target/classes/com/mybatis/enhance/store/mapping/common/BaseMysqlCRUDMapper.xml @@ -1,86 +1,86 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + diff --git a/mybatis-enhance-actable/target/classes/com/mybatis/enhance/store/mapping/system/CreateMysqlTablesMapper.xml b/mybatis-enhance-actable/target/classes/com/mybatis/enhance/store/mapping/system/CreateMysqlTablesMapper.xml index bb63442..1d85149 100644 --- a/mybatis-enhance-actable/target/classes/com/mybatis/enhance/store/mapping/system/CreateMysqlTablesMapper.xml +++ b/mybatis-enhance-actable/target/classes/com/mybatis/enhance/store/mapping/system/CreateMysqlTablesMapper.xml @@ -1,133 +1,133 @@ - - - - - - - - `${fields.fieldName}` ${fields.fieldType} - - - `${fields.fieldName}` ${fields.fieldType}(${fields.fieldLength}) - - - `${fields.fieldName}` - ${fields.fieldType}(${fields.fieldLength},${fields.fieldDecimalLength}) - - - NULL - - - NOT NULL - - - AUTO_INCREMENT - - - - - DEFAULT #{fields.fieldDefaultValue} - - - - - DEFAULT #{fields.fieldDefaultValue} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + `${fields.fieldName}` ${fields.fieldType} + + + `${fields.fieldName}` ${fields.fieldType}(${fields.fieldLength}) + + + `${fields.fieldName}` + ${fields.fieldType}(${fields.fieldLength},${fields.fieldDecimalLength}) + + + NULL + + + NOT NULL + + + AUTO_INCREMENT + + + + + DEFAULT #{fields.fieldDefaultValue} + + + + + DEFAULT #{fields.fieldDefaultValue} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -- Gitee From f11ad3987aa01939340f3239168e92b07c83036a Mon Sep 17 00:00:00 2001 From: sun5769675 Date: Thu, 21 Sep 2017 14:50:33 +0800 Subject: [PATCH 11/34] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=96=87=E6=A1=A3?= =?UTF-8?q?=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index fe2f88a..1817f6e 100644 --- a/README.md +++ b/README.md @@ -84,9 +84,9 @@ A.C.Table是采用了Spring、Mybatis技术的Maven结构,详细介绍如下 **共通的CUDR功能使用** - 1.使用方法很简单,大家在manager或者Controller中直接注入BaseMysqlCRUDManager这个接口然后给一个泛型就可以了 + 1.使用方法很简单,大家在manager或者Controller中直接注入BaseMysqlCRUDManager这个接口就可以了 - 2.注意:接口的泛型就是你要操作的表对应的model + 2.注意:接口调用save、delete等方法时传入的对象必须是modle中用于创建表的对象 **demo代码的地址** -- Gitee From a9436627bc3e6b503d60eb9179561e65969804b6 Mon Sep 17 00:00:00 2001 From: "chenbin.sun" Date: Thu, 21 Sep 2017 14:51:50 +0800 Subject: [PATCH 12/34] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...7\347\224\250\350\257\264\346\230\216.txt" | 47 ++++++++++++++----- 1 file changed, 36 insertions(+), 11 deletions(-) diff --git "a/mybatis-enhance-actable/\344\275\277\347\224\250\350\257\264\346\230\216.txt" "b/mybatis-enhance-actable/\344\275\277\347\224\250\350\257\264\346\230\216.txt" index 5852a96..5fa6e49 100644 --- "a/mybatis-enhance-actable/\344\275\277\347\224\250\350\257\264\346\230\216.txt" +++ "b/mybatis-enhance-actable/\344\275\277\347\224\250\350\257\264\346\230\216.txt" @@ -1,13 +1,22 @@ -######### mybatis增加功能自动创建表################ -1. 该版本修复了以往的一些bug,并且增加了对唯一约束的支持 -2. 从原有的框架中剥离出来,支持任意结构的spring+mybatis的框架使用 -3. 再次声明mybatis-enhance-actable-0.0.1-SNAPSHOT目前仅支持mysql数据库 +# mybatis-enhance-actable-0.0.1 -##使用步骤方法 +该项目是从之前写过的一个框架中抽取出来的,本身是对Mybatis做的增强功能,为了能够使习惯了hibernate框架的开发者能够快速的入手Mybatis,我给他取名叫做 “A.C.Table” 本意是自动建表的意思,A.C.Table是一个基于Spring和Mybatis的Maven项目,增强了Mybatis的功能,过配置model注解的方式来创建表,修改表结构,并且实现了共通的CUDR功能提升开发效率,目前仅支持Mysql,后续可能会扩展针对其他数据库的支持。 + +A.C.Table是采用了Spring、Mybatis技术的Maven结构,详细介绍如下: + + **######### mybatis增加功能自动创建表——A.C.Table版本说明################** +1. 该版本修复了修改主键同时修改其类型引起的error +2. 该版本修复了根据model创建时没有创建父类中的字段的问题(ps:目前只支持扫描一层继承) +3. 该笨笨增加了对唯一约束的支持 +4. 从原有的框架中剥离出来,支持任意结构的spring+mybatis的框架使用 +5. 再次声明A.C.Table目前仅支持mysql数据库 + + **使用步骤方法** 1. 使用该功能的项目需要依赖mybatis-enhance-actable-0.0.1-SNAPSHOT.jar 2. 在你的web项目上创建个目录比如config下面创建个文件autoCreateTable.properties文件的内容如下: mybatis.table.auto=update + mybatis.model.pack=com.sunchenbin.store.model 本系统提供三种模式: @@ -61,14 +70,30 @@ -##代码用途讲解 +**代码用途讲解** + + 1.SysMysqlColumns.java这个对象里面配置的是mysql的数据类型,这里配置的类型越多,意味着创建表时能使用的类型越多 + + 2.LengthCount.java是一个自定义的注解,用于标记在SysMysqlColumns.java里面配置的数据类型上的,标记该类型需要设置几个长度,如datetime/varchar(1)/decimal(5,2),分别是需要设置0个1个2个 + + 3.Column.java也是一个自定义的注解,用于标记model中的字段上,作为创建表的依据如不标记,不会被扫描到,有几个属性用来设置字段名、字段类型、长度等属性的设置,详细请看代码上的注释 + + 4.Table.java也是一个自定义的注解,用于标记在model对象上,有一个属性name,用于设置该model生成表后的表名,如不设置该注解,则该model不会被扫描到 + + 5.系统启动后会去自动调用SysMysqlCreateTableManagerImpl.java的createMysqlTable()方法,没错,这就是核心方法了,负责创建、删除、修改表。 + + **共通的CUDR功能使用** -1.SysMysqlColumns.java这个对象里面配置的是mysql的数据类型,这里配置的类型越多,意味着创建表时能使用的类型越多 + 1.使用方法很简单,大家在manager或者Controller中直接注入BaseMysqlCRUDManager这个接口就可以了 -2.LengthCount.java是一个自定义的注解,用于标记在SysMysqlColumns.java里面配置的数据类型上的,标记该类型需要设置几个长度,如datetime/varchar(1)/decimal(5,2),分别是需要设置0个1个2个 + 2.注意:接口调用save、delete等方法时传入的对象必须是modle中用于创建表的对象 -3.Column.java也是一个自定义的注解,用于标记model中的字段上,作为创建表的依据如不标记,不会被扫描到,有几个属性用来设置字段名、字段类型、长度等属性的设置,详细请看代码上的注释 + **demo代码的地址** + + 1.码云地址:http://git.oschina.net/sunchenbin/mybatis-enhance-actable-demo + + 2.代码下载地址:https://git.oschina.net/sunchenbin/mybatis-enhance-actable-demo.git -4.Table.java也是一个自定义的注解,用于标记在model对象上,有一个属性name,用于设置该model生成表后的表名,如不设置该注解,则该model不会被扫描到 + **之前的旧项目地址** -ok,系统启动后会去自动调用SysMysqlCreateTableManagerImpl.java的createMysqlTable()方法,没错,这就是核心方法了,负责创建、删除、修改表。 \ No newline at end of file + http://git.oschina.net/sunchenbin/Mybatis_BuildTable_V0.2 -- Gitee From 6d904f17536697439640a1ea3384a883e59ed7d3 Mon Sep 17 00:00:00 2001 From: sun5769675 Date: Fri, 22 Sep 2017 14:06:16 +0800 Subject: [PATCH 13/34] =?UTF-8?q?=E6=8F=90=E4=BA=A4model=E5=92=8C=E5=85=AC?= =?UTF-8?q?=E5=85=B1=E7=9A=84CUDR=E4=BD=BF=E7=94=A8=E4=BA=8B=E4=BE=8B?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 80 ++++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 70 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 1817f6e..a78e14c 100644 --- a/README.md +++ b/README.md @@ -82,18 +82,78 @@ A.C.Table是采用了Spring、Mybatis技术的Maven结构,详细介绍如下 5.系统启动后会去自动调用SysMysqlCreateTableManagerImpl.java的createMysqlTable()方法,没错,这就是核心方法了,负责创建、删除、修改表。 - **共通的CUDR功能使用** + **model的写法例子** +``` +@Table(name = "test") +public class Test extends BaseModel{ - 1.使用方法很简单,大家在manager或者Controller中直接注入BaseMysqlCRUDManager这个接口就可以了 + private static final long serialVersionUID = 5199200306752426433L; - 2.注意:接口调用save、delete等方法时传入的对象必须是modle中用于创建表的对象 + @Column(name = "id",type = MySqlTypeConstant.INT,length = 11,isKey = true,isAutoIncrement = true) + private Integer id; + + @Column(name = "name",type = MySqlTypeConstant.VARCHAR,length = 111) + private String name; - **demo代码的地址** - - 1.码云地址:http://git.oschina.net/sunchenbin/mybatis-enhance-actable-demo - - 2.代码下载地址:https://git.oschina.net/sunchenbin/mybatis-enhance-actable-demo.git + @Column(name = "description",type = MySqlTypeConstant.TEXT) + private String description; - **之前的旧项目地址** + @Column(name = "create_time",type = MySqlTypeConstant.DATETIME) + private Date create_time; - http://git.oschina.net/sunchenbin/Mybatis_BuildTable_V0.2 + @Column(name = "update_time",type = MySqlTypeConstant.DATETIME) + private Date update_time; + + @Column(name = "number",type = MySqlTypeConstant.BIGINT,length = 5,isUnique=true) + private Long number; + + @Column(name = "lifecycle",type = MySqlTypeConstant.CHAR,length = 1,isNull=false) + private String lifecycle; + + @Column(name = "dekes",type = MySqlTypeConstant.DOUBLE,length = 5,decimalLength = 2) + private Double dekes; + + // get和set方法这里就不例举了太多 +} +``` + **共通的CUDR功能使用** + + 1.使用方法很简单,大家在manager或者Controller中直接注入BaseMysqlCRUDManager这个接口就可以了 + + 2.注意:接口调用save、delete等方法时传入的对象必须是modle中用于创建表的对象 +代码事例: +``` +@Controller +public class TestController{ + + @Autowired + private TestManager testManager; + + @Autowired + private BaseMysqlCRUDManager baseMysqlCRUDManager; + + /** + * 首页 + */ + @RequestMapping("/testDate") + @ResponseBody + public String testDate(){ + Test2 test2 = new Test2(); + test2.setNumber(3L); + baseMysqlCRUDManager.save(test2); + + Test test = new Test(); + test.setName("aaae333"); + test.setNumber(9L); + test.setDescription("adfsdfe"); + + baseMysqlCRUDManager.delete(test); + baseMysqlCRUDManager.save(test); + int count = testManager.findTestCount(); + System.out.println(count); + List query = baseMysqlCRUDManager.query(test); + String json = JsonUtil.format(query); + return json; + } +} +``` -- Gitee From f6cf3534a4a9050e806b12de438d24e2c0eaeb80 Mon Sep 17 00:00:00 2001 From: "chenbin.sun" Date: Fri, 22 Sep 2017 14:41:16 +0800 Subject: [PATCH 14/34] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=E8=AF=B4=E6=98=8E=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...7\347\224\250\350\257\264\346\230\216.txt" | 80 ++++++++++++++++--- 1 file changed, 70 insertions(+), 10 deletions(-) diff --git "a/mybatis-enhance-actable/\344\275\277\347\224\250\350\257\264\346\230\216.txt" "b/mybatis-enhance-actable/\344\275\277\347\224\250\350\257\264\346\230\216.txt" index 5fa6e49..03a8d0f 100644 --- "a/mybatis-enhance-actable/\344\275\277\347\224\250\350\257\264\346\230\216.txt" +++ "b/mybatis-enhance-actable/\344\275\277\347\224\250\350\257\264\346\230\216.txt" @@ -82,18 +82,78 @@ A.C.Table是采用了Spring、Mybatis技术的Maven结构,详细介绍如下 5.系统启动后会去自动调用SysMysqlCreateTableManagerImpl.java的createMysqlTable()方法,没错,这就是核心方法了,负责创建、删除、修改表。 - **共通的CUDR功能使用** + **model的写法例子** +``` +@Table(name = "test") +public class Test extends BaseModel{ - 1.使用方法很简单,大家在manager或者Controller中直接注入BaseMysqlCRUDManager这个接口就可以了 + private static final long serialVersionUID = 5199200306752426433L; - 2.注意:接口调用save、delete等方法时传入的对象必须是modle中用于创建表的对象 + @Column(name = "id",type = MySqlTypeConstant.INT,length = 11,isKey = true,isAutoIncrement = true) + private Integer id; + + @Column(name = "name",type = MySqlTypeConstant.VARCHAR,length = 111) + private String name; - **demo代码的地址** - - 1.码云地址:http://git.oschina.net/sunchenbin/mybatis-enhance-actable-demo - - 2.代码下载地址:https://git.oschina.net/sunchenbin/mybatis-enhance-actable-demo.git + @Column(name = "description",type = MySqlTypeConstant.TEXT) + private String description; - **之前的旧项目地址** + @Column(name = "create_time",type = MySqlTypeConstant.DATETIME) + private Date create_time; - http://git.oschina.net/sunchenbin/Mybatis_BuildTable_V0.2 + @Column(name = "update_time",type = MySqlTypeConstant.DATETIME) + private Date update_time; + + @Column(name = "number",type = MySqlTypeConstant.BIGINT,length = 5,isUnique=true) + private Long number; + + @Column(name = "lifecycle",type = MySqlTypeConstant.CHAR,length = 1,isNull=false) + private String lifecycle; + + @Column(name = "dekes",type = MySqlTypeConstant.DOUBLE,length = 5,decimalLength = 2) + private Double dekes; + + // get和set方法这里就不例举了太多 +} +``` + **共通的CUDR功能使用** + + 1.使用方法很简单,大家在manager或者Controller中直接注入BaseMysqlCRUDManager这个接口就可以了 + + 2.注意:接口调用save、delete等方法时传入的对象必须是modle中用于创建表的对象 +代码事例: +``` +@Controller +public class TestController{ + + @Autowired + private TestManager testManager; + + @Autowired + private BaseMysqlCRUDManager baseMysqlCRUDManager; + + /** + * 首页 + */ + @RequestMapping("/testDate") + @ResponseBody + public String testDate(){ + Test2 test2 = new Test2(); + test2.setNumber(3L); + baseMysqlCRUDManager.save(test2); + + Test test = new Test(); + test.setName("aaae333"); + test.setNumber(9L); + test.setDescription("adfsdfe"); + + baseMysqlCRUDManager.delete(test); + baseMysqlCRUDManager.save(test); + int count = testManager.findTestCount(); + System.out.println(count); + List query = baseMysqlCRUDManager.query(test); + String json = JsonUtil.format(query); + return json; + } +} +``` -- Gitee From 48f074a72e7f99f477300fa69812b4ac1f9f4901 Mon Sep 17 00:00:00 2001 From: "chenbin.sun" Date: Fri, 22 Sep 2017 17:25:31 +0800 Subject: [PATCH 15/34] =?UTF-8?q?=E9=80=92=E5=BD=92=E6=89=AB=E6=8F=8Fmodel?= =?UTF-8?q?=E7=9A=84=E7=88=B6=E7=B1=BBfield?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SysMysqlCreateTableManagerImpl.java | 35 ++++++++++++++----- 1 file changed, 26 insertions(+), 9 deletions(-) diff --git a/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/manager/system/SysMysqlCreateTableManagerImpl.java b/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/manager/system/SysMysqlCreateTableManagerImpl.java index 44745bb..c7bdb43 100644 --- a/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/manager/system/SysMysqlCreateTableManagerImpl.java +++ b/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/manager/system/SysMysqlCreateTableManagerImpl.java @@ -337,14 +337,14 @@ public class SysMysqlCreateTableManagerImpl implements SysMysqlCreateTableManage continue; } - // 7.验证是否可以为null - if (sysColumn.getIs_nullable().equals("NO")) { + // 7.验证是否可以为null(主键不参与是否为null的更新) + if (sysColumn.getIs_nullable().equals("NO") && !createTableParam.isFieldIsKey()) { if (createTableParam.isFieldIsNull()) { // 一个是可以一个是不可用,所以需要更新该字段 modifyFieldList.add(createTableParam); continue; } - }else if (sysColumn.getIs_nullable().equals("YES")) { + }else if (sysColumn.getIs_nullable().equals("YES") && !createTableParam.isFieldIsKey()) { if (!createTableParam.isFieldIsNull()) { // 一个是可以一个是不可用,所以需要更新该字段 modifyFieldList.add(createTableParam); @@ -446,11 +446,8 @@ public class SysMysqlCreateTableManagerImpl implements SysMysqlCreateTableManage private void tableFieldsConstruct(Map mySqlTypeAndLengthMap,Class clas,List newFieldList){ Field[] fields = clas.getDeclaredFields(); - // 判断是否有父类,如果有拉取父类的field,这里只支持一层继承 - if(clas.getSuperclass()!=null){ - Class clsSup = clas.getSuperclass(); - fields = (Field[]) ArrayUtils.addAll(fields,clsSup.getDeclaredFields()); - } + // 判断是否有父类,如果有拉取父类的field,这里只支持多层继承 + fields = recursionParents(clas, fields); for (Field field : fields){ // 判断方法中是否有指定注解类型的注解 @@ -463,7 +460,12 @@ public class SysMysqlCreateTableManagerImpl implements SysMysqlCreateTableManage param.setFieldType(column.type().toLowerCase()); param.setFieldLength(column.length()); param.setFieldDecimalLength(column.decimalLength()); - param.setFieldIsNull(column.isNull()); + // 主键或唯一键时设置必须不为null + if (column.isKey() || column.isUnique()) { + param.setFieldIsNull(false); + }else{ + param.setFieldIsNull(column.isNull()); + } param.setFieldIsKey(column.isKey()); param.setFieldIsAutoIncrement(column.isAutoIncrement()); param.setFieldDefaultValue(column.defaultValue()); @@ -475,6 +477,21 @@ public class SysMysqlCreateTableManagerImpl implements SysMysqlCreateTableManage } } + /** + * 递归扫描父类的fields + * @param clas + * @param fields + */ + @SuppressWarnings("rawtypes") + private Field[] recursionParents(Class clas, Field[] fields) { + if(clas.getSuperclass()!=null){ + Class clsSup = clas.getSuperclass(); + fields = (Field[]) ArrayUtils.addAll(fields,clsSup.getDeclaredFields()); + fields = recursionParents(clsSup, fields); + } + return fields; + } + /** * 根据传入的map创建或修改表结构 * -- Gitee From 0e223622d47393ece8ab5586f1309bdbf917a11e Mon Sep 17 00:00:00 2001 From: "chenbin.sun" Date: Fri, 22 Sep 2017 19:28:04 +0800 Subject: [PATCH 16/34] =?UTF-8?q?=E4=BC=98=E5=8C=96=EF=BC=8C=E5=85=AC?= =?UTF-8?q?=E5=85=B1=E7=9A=84CUDR=E6=94=AF=E6=8C=81=E5=A4=9A=E5=B1=82?= =?UTF-8?q?=E7=BB=A7=E6=89=BF=E5=AD=97=E6=AE=B5=E7=9A=84CUDR?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/BaseMysqlCRUDManagerImpl.java | 34 +++++++++++++++---- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/manager/common/BaseMysqlCRUDManagerImpl.java b/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/manager/common/BaseMysqlCRUDManagerImpl.java index 9eb8e25..b258ed0 100644 --- a/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/manager/common/BaseMysqlCRUDManagerImpl.java +++ b/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/manager/common/BaseMysqlCRUDManagerImpl.java @@ -6,6 +6,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import org.apache.commons.lang.ArrayUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -34,10 +35,10 @@ public class BaseMysqlCRUDManagerImpl implements BaseMysqlCRUDManager{ log.error("必须使用model中的对象!"); return; } + Field[] declaredFields = getAllFields(obj); Map> tableMap = new HashMap>(); Map dataMap = new HashMap(); Map keyFieldMap = new HashMap(); - Field[] declaredFields = obj.getClass().getDeclaredFields(); for (Field field : declaredFields){ try{ // 私有属性需要设置访问权限 @@ -79,6 +80,14 @@ public class BaseMysqlCRUDManagerImpl implements BaseMysqlCRUDManager{ } } + private Field[] getAllFields(T obj) { + Field[] declaredFields = obj.getClass().getDeclaredFields(); + + // 递归扫描父类的filed + declaredFields = recursionParents(obj.getClass(), declaredFields); + return declaredFields; + } + public void delete(T obj){ // 得到表名 @@ -87,11 +96,9 @@ public class BaseMysqlCRUDManagerImpl implements BaseMysqlCRUDManager{ log.error("必须使用model中的对象!"); return; } + Field[] declaredFields = getAllFields(obj); Map> tableMap = new HashMap>(); Map dataMap = new HashMap(); - - Field[] declaredFields = obj.getClass().getDeclaredFields(); - for (Field field : declaredFields){ // 设置访问权限 field.setAccessible(true); @@ -121,11 +128,9 @@ public class BaseMysqlCRUDManagerImpl implements BaseMysqlCRUDManager{ log.error("必须使用model中的对象!"); return null; } + Field[] declaredFields = getAllFields(obj); Map> tableMap = new HashMap>(); Map dataMap = new HashMap(); - - Field[] declaredFields = obj.getClass().getDeclaredFields(); - for (Field field : declaredFields){ // 设置访问权限 field.setAccessible(true); @@ -172,5 +177,20 @@ public class BaseMysqlCRUDManagerImpl implements BaseMysqlCRUDManager{ return list; } + + /** + * 递归扫描父类的fields + * @param clas + * @param fields + */ + @SuppressWarnings("rawtypes") + private Field[] recursionParents(Class clas, Field[] fields) { + if(clas.getSuperclass()!=null){ + Class clsSup = clas.getSuperclass(); + fields = (Field[]) ArrayUtils.addAll(fields,clsSup.getDeclaredFields()); + fields = recursionParents(clsSup, fields); + } + return fields; + } } -- Gitee From de934cb8ed89d03bfbb3120093f0aaf71428e113 Mon Sep 17 00:00:00 2001 From: sun5769675 Date: Wed, 27 Sep 2017 17:30:04 +0800 Subject: [PATCH 17/34] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index a78e14c..deef01a 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,8 @@ A.C.Table是采用了Spring、Mybatis技术的Maven结构,详细介绍如下 2.4mybatis.model.pack这个配置是用来配置要扫描的用于创建表的对象的包名 3. spring的配置文件中需要做如下配置: - +``` + @@ -69,6 +70,7 @@ A.C.Table是采用了Spring、Mybatis技术的Maven结构,详细介绍如下 +``` **代码用途讲解** -- Gitee From 7317c9c96682135bc921962e0515524843d132bc Mon Sep 17 00:00:00 2001 From: "chenbin.sun" Date: Mon, 16 Oct 2017 15:33:42 +0800 Subject: [PATCH 18/34] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E7=94=A8=E4=BA=8E=E6=94=AF=E6=8C=81=E5=A4=9A=E7=A7=8D=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=BA=93=E5=81=9A=E5=87=86=E5=A4=87=EF=BC=88mybatis.d?= =?UTF-8?q?atabase.type=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../store/manager/handler/StartUpHandler.java | 12 ++++ .../manager/handler/StartUpHandlerImpl.java | 70 +++++++++++++++++++ .../SysMysqlCreateTableManagerImpl.java | 17 ++--- 3 files changed, 89 insertions(+), 10 deletions(-) create mode 100644 mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/manager/handler/StartUpHandler.java create mode 100644 mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/manager/handler/StartUpHandlerImpl.java diff --git a/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/manager/handler/StartUpHandler.java b/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/manager/handler/StartUpHandler.java new file mode 100644 index 0000000..a474bf2 --- /dev/null +++ b/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/manager/handler/StartUpHandler.java @@ -0,0 +1,12 @@ +package com.mybatis.enhance.store.manager.handler; + + +/** + * 启动时执行处理的接口 + * @author chenbin.sun + * + */ +public interface StartUpHandler { + + void startHandler(); +} diff --git a/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/manager/handler/StartUpHandlerImpl.java b/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/manager/handler/StartUpHandlerImpl.java new file mode 100644 index 0000000..a741d2c --- /dev/null +++ b/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/manager/handler/StartUpHandlerImpl.java @@ -0,0 +1,70 @@ +package com.mybatis.enhance.store.manager.handler; + +import javax.annotation.PostConstruct; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import com.mybatis.enhance.store.manager.system.SysMysqlCreateTableManager; + +/** + * 启动时进行处理的实现类 + * @author chenbin.sun + * + */ +@SuppressWarnings("restriction") +@Service +public class StartUpHandlerImpl implements StartUpHandler { + + private static final Logger log = LoggerFactory.getLogger(StartUpHandlerImpl.class); + + /** 数据库类型:mysql */ + public static String MYSQL = "mysql"; + + /** 数据库类型:oracle */ + public static String ORACLE = "oracle"; + + /** 数据库类型:sqlserver */ + public static String SQLSERVER = "sqlserver"; + + /** 数据库类型:postgresql */ + public static String POSTGRESQL = "postgresql"; + + /** + * 数据库类型 + */ + @Value("#{configProperties['mybatis.database.type']}") + private String databaseType = MYSQL; + + @Autowired + private SysMysqlCreateTableManager sysMysqlCreateTableManager; + + @PostConstruct + public void startHandler() { + + // 执行mysql的处理方法 + if (MYSQL.equals(databaseType)) { + + log.info("databaseType=mysql,开始执行mysql的处理方法"); + + sysMysqlCreateTableManager.createMysqlTable(); + }else if (ORACLE.equals(databaseType)) { + + log.info("databaseType=oracle,开始执行oracle的处理方法"); + }else if (SQLSERVER.equals(databaseType)) { + + log.info("databaseType=sqlserver,开始执行sqlserver的处理方法"); + }else if (POSTGRESQL.equals(databaseType)) { + + log.info("databaseType=postgresql,开始执行postgresql的处理方法"); + }else{ + + log.info("没有找到符合条件的处理方法!"); + } + } + + +} diff --git a/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/manager/system/SysMysqlCreateTableManagerImpl.java b/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/manager/system/SysMysqlCreateTableManagerImpl.java index c7bdb43..9fea3bb 100644 --- a/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/manager/system/SysMysqlCreateTableManagerImpl.java +++ b/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/manager/system/SysMysqlCreateTableManagerImpl.java @@ -8,8 +8,6 @@ import java.util.Map; import java.util.Map.Entry; import java.util.Set; -import javax.annotation.PostConstruct; - import org.apache.commons.lang.ArrayUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -42,7 +40,7 @@ public class SysMysqlCreateTableManagerImpl implements SysMysqlCreateTableManage @Autowired private CreateMysqlTablesMapper createMysqlTablesMapper; - + /** * 要扫描的model所在的pack */ @@ -58,9 +56,14 @@ public class SysMysqlCreateTableManagerImpl implements SysMysqlCreateTableManage /** * 读取配置文件的三种状态(创建表、更新表、不做任何事情) */ - @PostConstruct public void createMysqlTable(){ + // 不做任何事情 + if("none".equals(tableAuto)){ + log.info("配置mybatis.table.auto=none,不需要做任何事情"); + return; + } + Map mySqlTypeAndLengthMap = mySqlTypeAndLengthMap(); Set> classes = ClassTools.getClasses(pack); @@ -111,11 +114,6 @@ public class SysMysqlCreateTableManagerImpl implements SysMysqlCreateTableManage Map> removeTableMap, Map> dropKeyTableMap, Map> dropUniqueTableMap){ - if("none".equals(tableAuto)){ - // 不做任何事情 - return; - } - for (Class clas : classes){ Table table = clas.getAnnotation(Table.class); @@ -661,5 +659,4 @@ public class SysMysqlCreateTableManagerImpl implements SysMysqlCreateTableManage } return map; } - } -- Gitee From c08b753b06601e2ace27bcb5b87b5cd2fea93ff1 Mon Sep 17 00:00:00 2001 From: sun5769675 Date: Mon, 16 Oct 2017 15:35:58 +0800 Subject: [PATCH 19/34] =?UTF-8?q?=E5=AF=B9=E6=96=B0=E5=A2=9E=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E9=A1=B9mybatis.database.type=E7=9A=84=E6=8F=8F?= =?UTF-8?q?=E8=BF=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index deef01a..882ccd2 100644 --- a/README.md +++ b/README.md @@ -18,6 +18,8 @@ A.C.Table是采用了Spring、Mybatis技术的Maven结构,详细介绍如下 mybatis.table.auto=update mybatis.model.pack=com.sunchenbin.store.model + + mybatis.database.type=mysql 本系统提供三种模式: @@ -27,7 +29,9 @@ A.C.Table是采用了Spring、Mybatis技术的Maven结构,详细介绍如下 2.3 当mybatis.table.auto=none时,系统不做任何处理。 - 2.4mybatis.model.pack这个配置是用来配置要扫描的用于创建表的对象的包名 + 2.4 mybatis.model.pack这个配置是用来配置要扫描的用于创建表的对象的包名 + + 2.5 mybatis.database.type这个是用来区别数据库的,预计会支持这四种数据库mysql/oracle/sqlserver/postgresql,但目前仅支持mysql 3. spring的配置文件中需要做如下配置: ``` -- Gitee From 0efb244b9da301440148f3242bc9c701aac4b845 Mon Sep 17 00:00:00 2001 From: sun5769675 Date: Mon, 16 Oct 2017 15:38:44 +0800 Subject: [PATCH 20/34] =?UTF-8?q?=E5=AF=B9=E6=96=B0=E5=A2=9E=E9=85=8D?= =?UTF-8?q?=E7=BD=AEmybatis.database.type=E7=9A=84=E6=8F=8F=E8=BF=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 882ccd2..d9d5b44 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ A.C.Table是采用了Spring、Mybatis技术的Maven结构,详细介绍如下 mybatis.model.pack=com.sunchenbin.store.model - mybatis.database.type=mysql + mybatis.database.type=mysql 本系统提供三种模式: @@ -31,7 +31,7 @@ A.C.Table是采用了Spring、Mybatis技术的Maven结构,详细介绍如下 2.4 mybatis.model.pack这个配置是用来配置要扫描的用于创建表的对象的包名 - 2.5 mybatis.database.type这个是用来区别数据库的,预计会支持这四种数据库mysql/oracle/sqlserver/postgresql,但目前仅支持mysql + 2.5 mybatis.database.type这个是用来区别数据库的,预计会支持这四种数据库mysql/oracle/sqlserver/postgresql,但目前仅支持mysql 3. spring的配置文件中需要做如下配置: ``` -- Gitee From bbc1fd68fe3a3c8ae8b96a0f50c316a059cb7ab1 Mon Sep 17 00:00:00 2001 From: "chenbin.sun" Date: Mon, 30 Oct 2017 20:32:17 +0800 Subject: [PATCH 21/34] =?UTF-8?q?=E5=AF=B9=E5=8C=85=E5=90=8D=E8=BF=9B?= =?UTF-8?q?=E8=A1=8C=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mybatis-enhance-actable/pom.xml | 2 +- .../mybatis/actable}/annotation/Column.java | 2 +- .../actable}/annotation/LengthCount.java | 2 +- .../mybatis/actable}/annotation/Table.java | 2 +- .../mybatis/actable}/command/BaseModel.java | 2 +- .../actable}/command/CreateTableParam.java | 2 +- .../actable}/command/SysMysqlColumns.java | 2 +- .../actable}/constants/MySqlTypeConstant.java | 4 +- .../actable/constants/OracleTypeConstant.java | 32 + .../dao/common/BaseMysqlCRUDMapper.java | 2 +- .../dao/system/CreateMysqlTablesMapper.java | 4 +- .../manager/common/BaseMysqlCRUDManager.java | 2 +- .../common/BaseMysqlCRUDManagerImpl.java | 8 +- .../manager/handler/StartUpHandler.java | 2 +- .../manager/handler/StartUpHandlerImpl.java | 4 +- .../system/SysMysqlCreateTableManager.java | 2 +- .../SysMysqlCreateTableManagerImpl.java | 18 +- .../system/SysOracleCreateTableManager.java | 13 + .../SysOracleCreateTableManagerImpl.java | 662 ++++++++++++++++++ .../mapping/common/BaseMysqlCRUDMapper.xml | 2 +- .../system/CreateMysqlTablesMapper.xml | 4 +- .../mybatis/actable}/utils/ClassTools.java | 2 +- .../system/CreateMysqlTablesMapper.xml | 133 ---- .../mybatis-enhance-actable/pom.properties | 7 - .../mybatis-enhance-actable/pom.xml | 57 -- .../mapping/common/BaseMysqlCRUDMapper.xml | 86 --- ...7\347\224\250\350\257\264\346\230\216.txt" | 10 +- 27 files changed, 746 insertions(+), 322 deletions(-) rename mybatis-enhance-actable/src/main/java/com/{mybatis/enhance/store => gitee/sunchenbin/mybatis/actable}/annotation/Column.java (96%) rename mybatis-enhance-actable/src/main/java/com/{mybatis/enhance/store => gitee/sunchenbin/mybatis/actable}/annotation/LengthCount.java (94%) rename mybatis-enhance-actable/src/main/java/com/{mybatis/enhance/store => gitee/sunchenbin/mybatis/actable}/annotation/Table.java (92%) rename mybatis-enhance-actable/src/main/java/com/{mybatis/enhance/store => gitee/sunchenbin/mybatis/actable}/command/BaseModel.java (94%) rename mybatis-enhance-actable/src/main/java/com/{mybatis/enhance/store => gitee/sunchenbin/mybatis/actable}/command/CreateTableParam.java (97%) rename mybatis-enhance-actable/src/main/java/com/{mybatis/enhance/store => gitee/sunchenbin/mybatis/actable}/command/SysMysqlColumns.java (94%) rename mybatis-enhance-actable/src/main/java/com/{mybatis/enhance/store => gitee/sunchenbin/mybatis/actable}/constants/MySqlTypeConstant.java (88%) create mode 100644 mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/constants/OracleTypeConstant.java rename mybatis-enhance-actable/src/main/java/com/{mybatis/enhance/store => gitee/sunchenbin/mybatis/actable}/dao/common/BaseMysqlCRUDMapper.java (92%) rename mybatis-enhance-actable/src/main/java/com/{mybatis/enhance/store => gitee/sunchenbin/mybatis/actable}/dao/system/CreateMysqlTablesMapper.java (92%) rename mybatis-enhance-actable/src/main/java/com/{mybatis/enhance/store => gitee/sunchenbin/mybatis/actable}/manager/common/BaseMysqlCRUDManager.java (86%) rename mybatis-enhance-actable/src/main/java/com/{mybatis/enhance/store => gitee/sunchenbin/mybatis/actable}/manager/common/BaseMysqlCRUDManagerImpl.java (95%) rename mybatis-enhance-actable/src/main/java/com/{mybatis/enhance/store => gitee/sunchenbin/mybatis/actable}/manager/handler/StartUpHandler.java (63%) rename mybatis-enhance-actable/src/main/java/com/{mybatis/enhance/store => gitee/sunchenbin/mybatis/actable}/manager/handler/StartUpHandlerImpl.java (88%) rename mybatis-enhance-actable/src/main/java/com/{mybatis/enhance/store => gitee/sunchenbin/mybatis/actable}/manager/system/SysMysqlCreateTableManager.java (72%) rename mybatis-enhance-actable/src/main/java/com/{mybatis/enhance/store => gitee/sunchenbin/mybatis/actable}/manager/system/SysMysqlCreateTableManagerImpl.java (97%) create mode 100644 mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/manager/system/SysOracleCreateTableManager.java create mode 100644 mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/manager/system/SysOracleCreateTableManagerImpl.java rename mybatis-enhance-actable/src/main/java/com/{mybatis/enhance/store => gitee/sunchenbin/mybatis/actable}/mapping/common/BaseMysqlCRUDMapper.xml (95%) rename mybatis-enhance-actable/{target/classes/com/mybatis/enhance/store => src/main/java/com/gitee/sunchenbin/mybatis/actable}/mapping/system/CreateMysqlTablesMapper.xml (94%) rename mybatis-enhance-actable/src/main/java/com/{mybatis/enhance/store => gitee/sunchenbin/mybatis/actable}/utils/ClassTools.java (99%) delete mode 100644 mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/mapping/system/CreateMysqlTablesMapper.xml delete mode 100644 mybatis-enhance-actable/target/classes/META-INF/maven/com.mybatis.enhance.store/mybatis-enhance-actable/pom.properties delete mode 100644 mybatis-enhance-actable/target/classes/META-INF/maven/com.mybatis.enhance.store/mybatis-enhance-actable/pom.xml delete mode 100644 mybatis-enhance-actable/target/classes/com/mybatis/enhance/store/mapping/common/BaseMysqlCRUDMapper.xml diff --git a/mybatis-enhance-actable/pom.xml b/mybatis-enhance-actable/pom.xml index 10c33c0..56aae60 100644 --- a/mybatis-enhance-actable/pom.xml +++ b/mybatis-enhance-actable/pom.xml @@ -1,7 +1,7 @@ 4.0.0 - com.mybatis.enhance.store + com.gitee.sunchenbin.mybatis.actable mybatis-enhance-actable 0.0.1-SNAPSHOT diff --git a/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/annotation/Column.java b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/annotation/Column.java similarity index 96% rename from mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/annotation/Column.java rename to mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/annotation/Column.java index 99856b2..248c5f7 100644 --- a/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/annotation/Column.java +++ b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/annotation/Column.java @@ -1,4 +1,4 @@ -package com.mybatis.enhance.store.annotation; +package com.gitee.sunchenbin.mybatis.actable.annotation; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; diff --git a/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/annotation/LengthCount.java b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/annotation/LengthCount.java similarity index 94% rename from mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/annotation/LengthCount.java rename to mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/annotation/LengthCount.java index 93c0e4f..cf0ffad 100644 --- a/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/annotation/LengthCount.java +++ b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/annotation/LengthCount.java @@ -1,4 +1,4 @@ -package com.mybatis.enhance.store.annotation; +package com.gitee.sunchenbin.mybatis.actable.annotation; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; diff --git a/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/annotation/Table.java b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/annotation/Table.java similarity index 92% rename from mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/annotation/Table.java rename to mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/annotation/Table.java index b288503..a89b45c 100644 --- a/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/annotation/Table.java +++ b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/annotation/Table.java @@ -1,4 +1,4 @@ -package com.mybatis.enhance.store.annotation; +package com.gitee.sunchenbin.mybatis.actable.annotation; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; diff --git a/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/command/BaseModel.java b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/command/BaseModel.java similarity index 94% rename from mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/command/BaseModel.java rename to mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/command/BaseModel.java index efe8cf9..b598a9f 100644 --- a/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/command/BaseModel.java +++ b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/command/BaseModel.java @@ -1,4 +1,4 @@ -package com.mybatis.enhance.store.command; +package com.gitee.sunchenbin.mybatis.actable.command; import java.io.Serializable; diff --git a/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/command/CreateTableParam.java b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/command/CreateTableParam.java similarity index 97% rename from mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/command/CreateTableParam.java rename to mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/command/CreateTableParam.java index ea52bbd..f3c3704 100644 --- a/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/command/CreateTableParam.java +++ b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/command/CreateTableParam.java @@ -1,4 +1,4 @@ -package com.mybatis.enhance.store.command; +package com.gitee.sunchenbin.mybatis.actable.command; /** * 用于存放创建表的字段信息 diff --git a/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/command/SysMysqlColumns.java b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/command/SysMysqlColumns.java similarity index 94% rename from mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/command/SysMysqlColumns.java rename to mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/command/SysMysqlColumns.java index 6436cec..a494492 100644 --- a/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/command/SysMysqlColumns.java +++ b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/command/SysMysqlColumns.java @@ -1,4 +1,4 @@ -package com.mybatis.enhance.store.command; +package com.gitee.sunchenbin.mybatis.actable.command; /** * 用于查询表中字段结构详细信息 diff --git a/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/constants/MySqlTypeConstant.java b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/constants/MySqlTypeConstant.java similarity index 88% rename from mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/constants/MySqlTypeConstant.java rename to mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/constants/MySqlTypeConstant.java index 8aa1d6f..10c14d8 100644 --- a/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/constants/MySqlTypeConstant.java +++ b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/constants/MySqlTypeConstant.java @@ -1,6 +1,6 @@ -package com.mybatis.enhance.store.constants; +package com.gitee.sunchenbin.mybatis.actable.constants; -import com.mybatis.enhance.store.annotation.LengthCount; +import com.gitee.sunchenbin.mybatis.actable.annotation.LengthCount; /** diff --git a/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/constants/OracleTypeConstant.java b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/constants/OracleTypeConstant.java new file mode 100644 index 0000000..33a7f73 --- /dev/null +++ b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/constants/OracleTypeConstant.java @@ -0,0 +1,32 @@ +package com.gitee.sunchenbin.mybatis.actable.constants; + +import com.gitee.sunchenbin.mybatis.actable.annotation.LengthCount; + + +/** + * 用于配置Oracle数据库中类型,并且该类型需要设置几个长度 + * 这里配置多少个类型决定了,创建表能使用多少类型 + * 例如:varchar2(1) + * number(5,2) + * date + * + * @author sunchenbin + * @version 2016年6月23日 下午5:59:33 + */ +public class OracleTypeConstant { + + @LengthCount(LengthCount=2) + public static final String NUMBER = "number"; + + @LengthCount + public static final String VARCHAR2 = "varchar2"; + + @LengthCount(LengthCount=0) + public static final String CLOB = "clob"; + + @LengthCount(LengthCount=0) + public static final String DATE = "date"; + + @LengthCount + public static final String CHAR = "char"; +} diff --git a/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/dao/common/BaseMysqlCRUDMapper.java b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/dao/common/BaseMysqlCRUDMapper.java similarity index 92% rename from mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/dao/common/BaseMysqlCRUDMapper.java rename to mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/dao/common/BaseMysqlCRUDMapper.java index a42e0fb..1409044 100644 --- a/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/dao/common/BaseMysqlCRUDMapper.java +++ b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/dao/common/BaseMysqlCRUDMapper.java @@ -1,4 +1,4 @@ -package com.mybatis.enhance.store.dao.common; +package com.gitee.sunchenbin.mybatis.actable.dao.common; import java.util.List; import java.util.Map; diff --git a/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/dao/system/CreateMysqlTablesMapper.java b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/dao/system/CreateMysqlTablesMapper.java similarity index 92% rename from mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/dao/system/CreateMysqlTablesMapper.java rename to mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/dao/system/CreateMysqlTablesMapper.java index 80f8050..0dd0974 100644 --- a/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/dao/system/CreateMysqlTablesMapper.java +++ b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/dao/system/CreateMysqlTablesMapper.java @@ -1,11 +1,11 @@ -package com.mybatis.enhance.store.dao.system; +package com.gitee.sunchenbin.mybatis.actable.dao.system; import java.util.List; import java.util.Map; import org.apache.ibatis.annotations.Param; -import com.mybatis.enhance.store.command.SysMysqlColumns; +import com.gitee.sunchenbin.mybatis.actable.command.SysMysqlColumns; /** diff --git a/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/manager/common/BaseMysqlCRUDManager.java b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/manager/common/BaseMysqlCRUDManager.java similarity index 86% rename from mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/manager/common/BaseMysqlCRUDManager.java rename to mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/manager/common/BaseMysqlCRUDManager.java index df60fb6..7186a36 100644 --- a/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/manager/common/BaseMysqlCRUDManager.java +++ b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/manager/common/BaseMysqlCRUDManager.java @@ -1,4 +1,4 @@ -package com.mybatis.enhance.store.manager.common; +package com.gitee.sunchenbin.mybatis.actable.manager.common; import java.util.List; diff --git a/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/manager/common/BaseMysqlCRUDManagerImpl.java b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/manager/common/BaseMysqlCRUDManagerImpl.java similarity index 95% rename from mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/manager/common/BaseMysqlCRUDManagerImpl.java rename to mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/manager/common/BaseMysqlCRUDManagerImpl.java index b258ed0..8807be5 100644 --- a/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/manager/common/BaseMysqlCRUDManagerImpl.java +++ b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/manager/common/BaseMysqlCRUDManagerImpl.java @@ -1,4 +1,4 @@ -package com.mybatis.enhance.store.manager.common; +package com.gitee.sunchenbin.mybatis.actable.manager.common; import java.lang.reflect.Field; import java.util.ArrayList; @@ -13,9 +13,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import com.mybatis.enhance.store.annotation.Column; -import com.mybatis.enhance.store.annotation.Table; -import com.mybatis.enhance.store.dao.common.BaseMysqlCRUDMapper; +import com.gitee.sunchenbin.mybatis.actable.annotation.Column; +import com.gitee.sunchenbin.mybatis.actable.annotation.Table; +import com.gitee.sunchenbin.mybatis.actable.dao.common.BaseMysqlCRUDMapper; @Transactional @Service("baseMysqlCRUDManager") diff --git a/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/manager/handler/StartUpHandler.java b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/manager/handler/StartUpHandler.java similarity index 63% rename from mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/manager/handler/StartUpHandler.java rename to mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/manager/handler/StartUpHandler.java index a474bf2..bba875e 100644 --- a/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/manager/handler/StartUpHandler.java +++ b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/manager/handler/StartUpHandler.java @@ -1,4 +1,4 @@ -package com.mybatis.enhance.store.manager.handler; +package com.gitee.sunchenbin.mybatis.actable.manager.handler; /** diff --git a/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/manager/handler/StartUpHandlerImpl.java b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/manager/handler/StartUpHandlerImpl.java similarity index 88% rename from mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/manager/handler/StartUpHandlerImpl.java rename to mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/manager/handler/StartUpHandlerImpl.java index a741d2c..8a8dbab 100644 --- a/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/manager/handler/StartUpHandlerImpl.java +++ b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/manager/handler/StartUpHandlerImpl.java @@ -1,4 +1,4 @@ -package com.mybatis.enhance.store.manager.handler; +package com.gitee.sunchenbin.mybatis.actable.manager.handler; import javax.annotation.PostConstruct; @@ -8,7 +8,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; -import com.mybatis.enhance.store.manager.system.SysMysqlCreateTableManager; +import com.gitee.sunchenbin.mybatis.actable.manager.system.SysMysqlCreateTableManager; /** * 启动时进行处理的实现类 diff --git a/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/manager/system/SysMysqlCreateTableManager.java b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/manager/system/SysMysqlCreateTableManager.java similarity index 72% rename from mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/manager/system/SysMysqlCreateTableManager.java rename to mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/manager/system/SysMysqlCreateTableManager.java index 2115446..d71dca3 100644 --- a/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/manager/system/SysMysqlCreateTableManager.java +++ b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/manager/system/SysMysqlCreateTableManager.java @@ -1,4 +1,4 @@ -package com.mybatis.enhance.store.manager.system; +package com.gitee.sunchenbin.mybatis.actable.manager.system; /** diff --git a/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/manager/system/SysMysqlCreateTableManagerImpl.java b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/manager/system/SysMysqlCreateTableManagerImpl.java similarity index 97% rename from mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/manager/system/SysMysqlCreateTableManagerImpl.java rename to mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/manager/system/SysMysqlCreateTableManagerImpl.java index 9fea3bb..887e7fa 100644 --- a/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/manager/system/SysMysqlCreateTableManagerImpl.java +++ b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/manager/system/SysMysqlCreateTableManagerImpl.java @@ -1,4 +1,4 @@ -package com.mybatis.enhance.store.manager.system; +package com.gitee.sunchenbin.mybatis.actable.manager.system; import java.lang.reflect.Field; import java.util.ArrayList; @@ -16,14 +16,14 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import com.mybatis.enhance.store.annotation.Column; -import com.mybatis.enhance.store.annotation.LengthCount; -import com.mybatis.enhance.store.annotation.Table; -import com.mybatis.enhance.store.command.CreateTableParam; -import com.mybatis.enhance.store.command.SysMysqlColumns; -import com.mybatis.enhance.store.constants.MySqlTypeConstant; -import com.mybatis.enhance.store.dao.system.CreateMysqlTablesMapper; -import com.mybatis.enhance.store.utils.ClassTools; +import com.gitee.sunchenbin.mybatis.actable.annotation.Column; +import com.gitee.sunchenbin.mybatis.actable.annotation.LengthCount; +import com.gitee.sunchenbin.mybatis.actable.annotation.Table; +import com.gitee.sunchenbin.mybatis.actable.command.CreateTableParam; +import com.gitee.sunchenbin.mybatis.actable.command.SysMysqlColumns; +import com.gitee.sunchenbin.mybatis.actable.constants.MySqlTypeConstant; +import com.gitee.sunchenbin.mybatis.actable.dao.system.CreateMysqlTablesMapper; +import com.gitee.sunchenbin.mybatis.actable.utils.ClassTools; /** * 项目启动时自动扫描配置的目录中的model,根据配置的规则自动创建或更新表 diff --git a/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/manager/system/SysOracleCreateTableManager.java b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/manager/system/SysOracleCreateTableManager.java new file mode 100644 index 0000000..fccac5f --- /dev/null +++ b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/manager/system/SysOracleCreateTableManager.java @@ -0,0 +1,13 @@ +package com.gitee.sunchenbin.mybatis.actable.manager.system; + + +/** + * + * @author sunchenbin + * @version 2016年6月23日 下午6:07:21 + */ +public interface SysOracleCreateTableManager { + + public void createOracleTable(); + +} diff --git a/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/manager/system/SysOracleCreateTableManagerImpl.java b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/manager/system/SysOracleCreateTableManagerImpl.java new file mode 100644 index 0000000..980caf1 --- /dev/null +++ b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/manager/system/SysOracleCreateTableManagerImpl.java @@ -0,0 +1,662 @@ +package com.gitee.sunchenbin.mybatis.actable.manager.system; + +import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Set; + +import org.apache.commons.lang.ArrayUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.gitee.sunchenbin.mybatis.actable.annotation.Column; +import com.gitee.sunchenbin.mybatis.actable.annotation.LengthCount; +import com.gitee.sunchenbin.mybatis.actable.annotation.Table; +import com.gitee.sunchenbin.mybatis.actable.command.CreateTableParam; +import com.gitee.sunchenbin.mybatis.actable.command.SysMysqlColumns; +import com.gitee.sunchenbin.mybatis.actable.constants.OracleTypeConstant; +import com.gitee.sunchenbin.mybatis.actable.dao.system.CreateMysqlTablesMapper; +import com.gitee.sunchenbin.mybatis.actable.utils.ClassTools; + +/** + * 项目启动时自动扫描配置的目录中的model,根据配置的规则自动创建或更新表 + * 该逻辑只适用于mysql,其他数据库尚且需要另外扩展,因为sql的语法不同 + * + * @author sunchenbin + * @version 2016年6月23日 下午5:58:12 + */ +@Transactional +@Service("sysOracleCreateTableManager") +public class SysOracleCreateTableManagerImpl implements SysOracleCreateTableManager{ + + private static final Logger log = LoggerFactory.getLogger(SysOracleCreateTableManagerImpl.class); + + @Autowired + private CreateMysqlTablesMapper createMysqlTablesMapper; + + /** + * 要扫描的model所在的pack + */ + @Value("#{configProperties['mybatis.model.pack']}") + private String pack; + + /** + * 自动创建模式:update表示更新,create表示删除原表重新创建 + */ + @Value("#{configProperties['mybatis.table.auto']}") + private String tableAuto; + + /** + * 读取配置文件的三种状态(创建表、更新表、不做任何事情) + */ + public void createOracleTable(){ + + // 不做任何事情 + if("none".equals(tableAuto)){ + log.info("配置mybatis.table.auto=none,不需要做任何事情"); + return; + } + + Map oracleTypeAndLengthMap = oracleTypeAndLengthMap(); + + Set> classes = ClassTools.getClasses(pack); + + // 用于存需要创建的表名+结构 + Map> newTableMap = new HashMap>(); + + // 用于存需要更新字段类型等的表名+结构 + Map> modifyTableMap = new HashMap>(); + + // 用于存需要增加字段的表名+结构 + Map> addTableMap = new HashMap>(); + + // 用于存需要删除字段的表名+结构 + Map> removeTableMap = new HashMap>(); + + // 用于存需要删除主键的表名+结构 + Map> dropKeyTableMap = new HashMap>(); + + // 用于存需要删除唯一约束的表名+结构 + Map> dropUniqueTableMap = new HashMap>(); + + // 构建出全部表的增删改的map + allTableMapConstruct(oracleTypeAndLengthMap, classes, newTableMap, modifyTableMap, addTableMap, removeTableMap, dropKeyTableMap,dropUniqueTableMap); + + // 根据传入的map,分别去创建或修改表结构 + createOrModifyTableConstruct(newTableMap, modifyTableMap, addTableMap, removeTableMap, dropKeyTableMap,dropUniqueTableMap); + } + + /** + * 构建出全部表的增删改的map + * + * @param oracleTypeAndLengthMap + * @param classes + * @param newTableMap + * @param modifyTableMap + * @param addTableMap + * @param removeTableMap + * @param dropKeyTableMap + * @param dropUniqueTableMap + */ + private void allTableMapConstruct( + Map oracleTypeAndLengthMap, + Set> classes, + Map> newTableMap, + Map> modifyTableMap, + Map> addTableMap, + Map> removeTableMap, + Map> dropKeyTableMap, + Map> dropUniqueTableMap){ + for (Class clas : classes){ + + Table table = clas.getAnnotation(Table.class); + // 没有打注解不需要创建变 + if(null == table){ + continue; + } + + // 用于存新增表的字段 + List newFieldList = new ArrayList(); + // 用于存删除的字段 + List removeFieldList = new ArrayList(); + // 用于存新增的字段 + List addFieldList = new ArrayList(); + // 用于存修改的字段 + List modifyFieldList = new ArrayList(); + // 用于存删除主键的字段 + List dropKeyFieldList = new ArrayList(); + // 用于存删除唯一约束的字段 + List dropUniqueFieldList = new ArrayList(); + + // 迭代出所有model的所有fields存到newFieldList中 + tableFieldsConstruct(oracleTypeAndLengthMap, clas, newFieldList); + + // 如果配置文件配置的是create,表示将所有的表删掉重新创建 + if("create".equals(tableAuto)){ + createMysqlTablesMapper.dorpTableByName(table.name()); + } + + // 先查该表是否以存在 + int exist = createMysqlTablesMapper.findTableCountByTableName(table.name()); + + // 不存在时 + if (exist == 0) { + newTableMap.put(table.name(), newFieldList); + }else{ + // 已存在时理论上做修改的操作,这里查出该表的结构 + List tableColumnList = createMysqlTablesMapper.findTableEnsembleByTableName(table.name()); + + // 从sysColumns中取出我们需要比较的列的List + // 先取出name用来筛选出增加和删除的字段 + List columnNames = ClassTools.getPropertyValueList(tableColumnList, SysMysqlColumns.COLUMN_NAME_KEY); + + // 验证对比从model中解析的fieldList与从数据库查出来的columnList + // 1. 找出增加的字段 + // 2. 找出删除的字段 + // 3. 找出更新的字段 + buildAddAndRemoveAndModifyFields( + oracleTypeAndLengthMap, + modifyTableMap, + addTableMap, + removeTableMap, + dropKeyTableMap, + dropUniqueTableMap, + table, + newFieldList, + removeFieldList, + addFieldList, + modifyFieldList, + dropKeyFieldList, + dropUniqueFieldList, + tableColumnList, + columnNames); + + } + } + } + + /** + * 构建增加的删除的修改的字段 + * + * @param mySqlTypeAndLengthMap + * @param modifyTableMap + * @param addTableMap + * @param removeTableMap + * @param dropKeyTableMap + * @param dropUniqueTableMap + * @param table + * @param newFieldList + * @param removeFieldList + * @param addFieldList + * @param modifyFieldList + * @param dropKeyFieldList + * @param dropUniqueFieldList + * @param tableColumnList + * @param columnNames + */ + private void buildAddAndRemoveAndModifyFields( + Map mySqlTypeAndLengthMap, + Map> modifyTableMap, + Map> addTableMap, + Map> removeTableMap, + Map> dropKeyTableMap, + Map> dropUniqueTableMap, + Table table, + List newFieldList, + List removeFieldList, + List addFieldList, + List modifyFieldList, + List dropKeyFieldList, + List dropUniqueFieldList, + List tableColumnList, + List columnNames){ + // 1. 找出增加的字段 + // 根据数据库中表的结构和model中表的结构对比找出新增的字段 + buildNewFields(addTableMap, table, newFieldList, addFieldList, columnNames); + + // 将fieldList转成Map类型,字段名作为主键 + Map fieldMap = new HashMap(); + for (Object obj : newFieldList){ + CreateTableParam createTableParam = (CreateTableParam) obj; + fieldMap.put(createTableParam.getFieldName(), createTableParam); + } + + // 2. 找出删除的字段 + buildRemoveFields(removeTableMap, table, removeFieldList, columnNames, fieldMap); + + // 3. 找出更新的字段 + buildModifyFields( + mySqlTypeAndLengthMap, + modifyTableMap, + dropKeyTableMap, + dropUniqueTableMap, + table, + modifyFieldList, + dropKeyFieldList, + dropUniqueFieldList, + tableColumnList, + fieldMap); + } + + /** + * 根据数据库中表的结构和model中表的结构对比找出修改类型默认值等属性的字段 + * + * @param mySqlTypeAndLengthMap + * @param modifyTableMap + * @param dropKeyTableMap + * @param dropUniqueTableMap + * @param table + * @param modifyFieldList + * @param dropKeyFieldList + * @param dropUniqueFieldList + * @param tableColumnList + * @param fieldMap + */ + private void buildModifyFields( + Map mySqlTypeAndLengthMap, + Map> modifyTableMap, + Map> dropKeyTableMap, + Map> dropUniqueTableMap, + Table table, + List modifyFieldList, + List dropKeyFieldList, + List dropUniqueFieldList, + List tableColumnList, + Map fieldMap){ + for (SysMysqlColumns sysColumn : tableColumnList){ + // 数据库中有该字段时 + CreateTableParam createTableParam = fieldMap.get(sysColumn.getColumn_name()); + if (createTableParam != null) { + // 检查是否要删除已有主键和是否要删除已有唯一约束的代码必须放在其他检查的最前面 + // 原本是主键,现在不是了,那么要去做删除主键的操作 + if ("PRI".equals(sysColumn.getColumn_key()) && !createTableParam.isFieldIsKey()) { + dropKeyFieldList.add(createTableParam); + } + + // 原本是唯一,现在不是了,那么要去做删除唯一的操作 + if ("UNI".equals(sysColumn.getColumn_key()) && !createTableParam.isFieldIsUnique()) { + dropUniqueFieldList.add(createTableParam); + } + + // 验证是否有更新 + // 1.验证类型 + if (!sysColumn.getData_type().toLowerCase().equals(createTableParam.getFieldType().toLowerCase())) { + modifyFieldList.add(createTableParam); + continue; + } + // 2.验证长度 + // 3.验证小数点位数 + int length = (Integer) mySqlTypeAndLengthMap.get(createTableParam.getFieldType().toLowerCase()); + String typeAndLength = createTableParam.getFieldType().toLowerCase(); + if (length == 1) { + // 拼接出类型加长度,比如varchar(1) + typeAndLength = typeAndLength + "(" + createTableParam.getFieldLength() + ")"; + }else if (length == 2) { + // 拼接出类型加长度,比如varchar(1) + typeAndLength = typeAndLength + "(" + createTableParam.getFieldLength() + "," + createTableParam.getFieldDecimalLength() + + ")"; + } + // 判断类型+长度是否相同 + if (!sysColumn.getColumn_type().toLowerCase().equals(typeAndLength)) { + modifyFieldList.add(createTableParam); + continue; + } + + // 4.验证主键 + if (!"PRI".equals(sysColumn.getColumn_key()) && createTableParam.isFieldIsKey()) { + // 原本不是主键,现在变成了主键,那么要去做更新 + modifyFieldList.add(createTableParam); + continue; + } + + // 5.验证自增 + if ("auto_increment".equals(sysColumn.getExtra()) && !createTableParam.isFieldIsAutoIncrement()) { + modifyFieldList.add(createTableParam); + continue; + } + + // 6.验证默认值 + if (sysColumn.getColumn_default() == null || sysColumn.getColumn_default().equals("")) { + // 数据库默认值是null,model中注解设置的默认值不为NULL时,那么需要更新该字段 + if (!"NULL".equals(createTableParam.getFieldDefaultValue())) { + modifyFieldList.add(createTableParam); + continue; + } + }else if (!sysColumn.getColumn_default().equals(createTableParam.getFieldDefaultValue())) { + // 两者不相等时,需要更新该字段 + modifyFieldList.add(createTableParam); + continue; + } + + // 7.验证是否可以为null(主键不参与是否为null的更新) + if (sysColumn.getIs_nullable().equals("NO") && !createTableParam.isFieldIsKey()) { + if (createTableParam.isFieldIsNull()) { + // 一个是可以一个是不可用,所以需要更新该字段 + modifyFieldList.add(createTableParam); + continue; + } + }else if (sysColumn.getIs_nullable().equals("YES") && !createTableParam.isFieldIsKey()) { + if (!createTableParam.isFieldIsNull()) { + // 一个是可以一个是不可用,所以需要更新该字段 + modifyFieldList.add(createTableParam); + continue; + } + } + + // 8.验证是否唯一 + if (!"UNI".equals(sysColumn.getColumn_key()) && createTableParam.isFieldIsUnique()) { + // 原本不是唯一,现在变成了唯一,那么要去做更新 + modifyFieldList.add(createTableParam); + continue; + } + + } + } + + if (modifyFieldList.size() > 0) { + modifyTableMap.put(table.name(), modifyFieldList); + } + + if (dropKeyFieldList.size() > 0) { + dropKeyTableMap.put(table.name(), dropKeyFieldList); + } + + if (dropUniqueFieldList.size() > 0) { + dropUniqueTableMap.put(table.name(), dropUniqueFieldList); + } + } + + /** + * 根据数据库中表的结构和model中表的结构对比找出删除的字段 + * + * @param removeTableMap + * @param table + * @param removeFieldList + * @param columnNames + * 数据库中的结构 + * @param fieldMap + * model中的字段,字段名为key + */ + private void buildRemoveFields( + Map> removeTableMap, + Table table, + List removeFieldList, + List columnNames, + Map fieldMap){ + for (String fieldNm : columnNames){ + // 判断该字段在新的model结构中是否存在 + if (fieldMap.get(fieldNm) == null) { + // 不存在,做删除处理 + removeFieldList.add(fieldNm); + } + } + if (removeFieldList.size() > 0) { + removeTableMap.put(table.name(), removeFieldList); + } + } + + /** + * 根据数据库中表的结构和model中表的结构对比找出新增的字段 + * + * @param addTableMap + * @param table + * @param newFieldList + * model中的结构 + * @param addFieldList + * @param columnNames + * 数据库中的结构 + */ + private void buildNewFields( + Map> addTableMap, + Table table, + List newFieldList, + List addFieldList, + List columnNames){ + for (Object obj : newFieldList){ + CreateTableParam createTableParam = (CreateTableParam) obj; + // 循环新的model中的字段,判断是否在数据库中已经存在 + if (!columnNames.contains(createTableParam.getFieldName())) { + // 不存在,表示要在数据库中增加该字段 + addFieldList.add(obj); + } + } + if (addFieldList.size() > 0) { + addTableMap.put(table.name(), addFieldList); + } + } + + /** + * 迭代出所有model的所有fields存到newFieldList中 + * + * @param mySqlTypeAndLengthMap + * mysql数据类型和对应几个长度的map + * @param clas + * 准备做为创建表依据的class + * @param newFieldList + */ + private void tableFieldsConstruct(Map mySqlTypeAndLengthMap,Class clas,List newFieldList){ + Field[] fields = clas.getDeclaredFields(); + + // 判断是否有父类,如果有拉取父类的field,这里只支持多层继承 + fields = recursionParents(clas, fields); + + for (Field field : fields){ + // 判断方法中是否有指定注解类型的注解 + boolean hasAnnotation = field.isAnnotationPresent(Column.class); + if (hasAnnotation) { + // 根据注解类型返回方法的指定类型注解 + Column column = field.getAnnotation(Column.class); + CreateTableParam param = new CreateTableParam(); + param.setFieldName(column.name()); + param.setFieldType(column.type().toLowerCase()); + param.setFieldLength(column.length()); + param.setFieldDecimalLength(column.decimalLength()); + // 主键或唯一键时设置必须不为null + if (column.isKey() || column.isUnique()) { + param.setFieldIsNull(false); + }else{ + param.setFieldIsNull(column.isNull()); + } + param.setFieldIsKey(column.isKey()); + param.setFieldIsAutoIncrement(column.isAutoIncrement()); + param.setFieldDefaultValue(column.defaultValue()); + param.setFieldIsUnique(column.isUnique()); + int length = (Integer) mySqlTypeAndLengthMap.get(column.type().toLowerCase()); + param.setFileTypeLength(length); + newFieldList.add(param); + } + } + } + + /** + * 递归扫描父类的fields + * @param clas + * @param fields + */ + @SuppressWarnings("rawtypes") + private Field[] recursionParents(Class clas, Field[] fields) { + if(clas.getSuperclass()!=null){ + Class clsSup = clas.getSuperclass(); + fields = (Field[]) ArrayUtils.addAll(fields,clsSup.getDeclaredFields()); + fields = recursionParents(clsSup, fields); + } + return fields; + } + + /** + * 根据传入的map创建或修改表结构 + * + * @param newTableMap + * @param modifyTableMap + * @param addTableMap + * @param removeTableMap + * @param dropKeyTableMap + */ + private void createOrModifyTableConstruct( + Map> newTableMap, + Map> modifyTableMap, + Map> addTableMap, + Map> removeTableMap, + Map> dropKeyTableMap, + Map> dropUniqueTableMap){ + // 1. 创建表 + createTableByMap(newTableMap); + // 2. 删除要变更主键的表的原来的字段的主键 + dropFieldsKeyByMap(dropKeyTableMap); + // 3. 删除要变更唯一约束的表的原来的字段的唯一约束 + dropFieldsUniqueByMap(dropUniqueTableMap); + // 4. 添加新的字段 + addFieldsByMap(addTableMap); + // 5. 删除字段 + removeFieldsByMap(removeTableMap); + // 6. 修改字段类型等 + modifyFieldsByMap(modifyTableMap); + + } + + /** + * 根据map结构修改表中的字段类型等 + * + * @param modifyTableMap + */ + private void modifyFieldsByMap(Map> modifyTableMap){ + // 做修改字段操作 + if (modifyTableMap.size() > 0) { + for (Entry> entry : modifyTableMap.entrySet()){ + for (Object obj : entry.getValue()){ + Map map = new HashMap(); + map.put(entry.getKey(), obj); + CreateTableParam fieldProperties = (CreateTableParam) obj; + log.info("开始修改表" + entry.getKey() + "中的字段" + fieldProperties.getFieldName()); + createMysqlTablesMapper.modifyTableField(map); + log.info("完成修改表" + entry.getKey() + "中的字段" + fieldProperties.getFieldName()); + } + } + } + } + + /** + * 根据map结构删除表中的字段 + * + * @param removeTableMap + */ + private void removeFieldsByMap(Map> removeTableMap){ + // 做删除字段操作 + if (removeTableMap.size() > 0) { + for (Entry> entry : removeTableMap.entrySet()){ + for (Object obj : entry.getValue()){ + Map map = new HashMap(); + map.put(entry.getKey(), obj); + String fieldName = (String) obj; + log.info("开始删除表" + entry.getKey() + "中的字段" + fieldName); + createMysqlTablesMapper.removeTableField(map); + log.info("完成删除表" + entry.getKey() + "中的字段" + fieldName); + } + } + } + } + + /** + * 根据map结构对表中添加新的字段 + * + * @param addTableMap + */ + private void addFieldsByMap(Map> addTableMap){ + // 做增加字段操作 + if (addTableMap.size() > 0) { + for (Entry> entry : addTableMap.entrySet()){ + for (Object obj : entry.getValue()){ + Map map = new HashMap(); + map.put(entry.getKey(), obj); + CreateTableParam fieldProperties = (CreateTableParam) obj; + log.info("开始为表" + entry.getKey() + "增加字段" + fieldProperties.getFieldName()); + createMysqlTablesMapper.addTableField(map); + log.info("完成为表" + entry.getKey() + "增加字段" + fieldProperties.getFieldName()); + } + } + } + } + + /** + * 根据map结构删除要变更表中字段的主键 + * + * @param dropKeyTableMap + */ + private void dropFieldsKeyByMap(Map> dropKeyTableMap){ + // 先去做删除主键的操作,这步操作必须在增加和修改字段之前! + if (dropKeyTableMap.size() > 0) { + for (Entry> entry : dropKeyTableMap.entrySet()){ + for (Object obj : entry.getValue()){ + Map map = new HashMap(); + map.put(entry.getKey(), obj); + CreateTableParam fieldProperties = (CreateTableParam) obj; + log.info("开始为表" + entry.getKey() + "删除主键" + fieldProperties.getFieldName()); + createMysqlTablesMapper.dropKeyTableField(map); + log.info("完成为表" + entry.getKey() + "删除主键" + fieldProperties.getFieldName()); + } + } + } + } + + /** + * 根据map结构删除要变更表中字段的唯一约束 + * + * @param dropUniqueTableMap + */ + private void dropFieldsUniqueByMap(Map> dropUniqueTableMap){ + // 先去做删除唯一约束的操作,这步操作必须在增加和修改字段之前! + if (dropUniqueTableMap.size() > 0) { + for (Entry> entry : dropUniqueTableMap.entrySet()){ + for (Object obj : entry.getValue()){ + Map map = new HashMap(); + map.put(entry.getKey(), obj); + CreateTableParam fieldProperties = (CreateTableParam) obj; + log.info("开始为表" + entry.getKey() + "删除唯一约束" + fieldProperties.getFieldName()); + createMysqlTablesMapper.dropUniqueTableField(map); + log.info("完成为表" + entry.getKey() + "删除唯一约束" + fieldProperties.getFieldName()); + log.info("开始修改表" + entry.getKey() + "中的字段" + fieldProperties.getFieldName()); + createMysqlTablesMapper.modifyTableField(map); + log.info("完成修改表" + entry.getKey() + "中的字段" + fieldProperties.getFieldName()); + } + } + } + } + + /** + * 根据map结构创建表 + * + * @param newTableMap + */ + private void createTableByMap(Map> newTableMap){ + // 做创建表操作 + if (newTableMap.size() > 0) { + for (Entry> entry : newTableMap.entrySet()){ + Map> map = new HashMap>(); + map.put(entry.getKey(), entry.getValue()); + log.info("开始创建表:" + entry.getKey()); + createMysqlTablesMapper.createTable(map); + log.info("完成创建表:" + entry.getKey()); + } + } + } + + /** + * 获取Oracle的类型,以及类型需要设置几个长度,这里构建成map的样式 构建Map(字段名(小写),需要设置几个长度(0表示不需要设置,1表示需要设置一个,2表示需要设置两个)) + */ + public Map oracleTypeAndLengthMap(){ + Field[] fields = OracleTypeConstant.class.getDeclaredFields(); + Map map = new HashMap(); + for (Field field : fields){ + LengthCount lengthCount = field.getAnnotation(LengthCount.class); + map.put(field.getName().toLowerCase(), lengthCount.LengthCount()); + } + return map; + } +} diff --git a/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/mapping/common/BaseMysqlCRUDMapper.xml b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/mapping/common/BaseMysqlCRUDMapper.xml similarity index 95% rename from mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/mapping/common/BaseMysqlCRUDMapper.xml rename to mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/mapping/common/BaseMysqlCRUDMapper.xml index 7dba3c1..b652263 100644 --- a/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/mapping/common/BaseMysqlCRUDMapper.xml +++ b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/mapping/common/BaseMysqlCRUDMapper.xml @@ -1,6 +1,6 @@ - + - select * from information_schema.columns where table_name = #{tableName} diff --git a/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/utils/ClassTools.java b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/utils/ClassTools.java similarity index 99% rename from mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/utils/ClassTools.java rename to mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/utils/ClassTools.java index e31c667..c4c00af 100644 --- a/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/utils/ClassTools.java +++ b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/utils/ClassTools.java @@ -1,4 +1,4 @@ -package com.mybatis.enhance.store.utils; +package com.gitee.sunchenbin.mybatis.actable.utils; import java.io.File; import java.io.FileFilter; diff --git a/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/mapping/system/CreateMysqlTablesMapper.xml b/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/mapping/system/CreateMysqlTablesMapper.xml deleted file mode 100644 index 1d85149..0000000 --- a/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/mapping/system/CreateMysqlTablesMapper.xml +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - `${fields.fieldName}` ${fields.fieldType} - - - `${fields.fieldName}` ${fields.fieldType}(${fields.fieldLength}) - - - `${fields.fieldName}` - ${fields.fieldType}(${fields.fieldLength},${fields.fieldDecimalLength}) - - - NULL - - - NOT NULL - - - AUTO_INCREMENT - - - - - DEFAULT #{fields.fieldDefaultValue} - - - - - DEFAULT #{fields.fieldDefaultValue} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/mybatis-enhance-actable/target/classes/META-INF/maven/com.mybatis.enhance.store/mybatis-enhance-actable/pom.properties b/mybatis-enhance-actable/target/classes/META-INF/maven/com.mybatis.enhance.store/mybatis-enhance-actable/pom.properties deleted file mode 100644 index 6e7b6bc..0000000 --- a/mybatis-enhance-actable/target/classes/META-INF/maven/com.mybatis.enhance.store/mybatis-enhance-actable/pom.properties +++ /dev/null @@ -1,7 +0,0 @@ -#Generated by Maven Integration for Eclipse -#Thu Sep 21 14:41:08 CST 2017 -version=0.0.1-SNAPSHOT -groupId=com.mybatis.enhance.store -m2e.projectName=mybatis-enhance-actable -m2e.projectLocation=E\:\\workspace_actabel\\mybatis-enhance\\mybatis-enhance-actable -artifactId=mybatis-enhance-actable diff --git a/mybatis-enhance-actable/target/classes/META-INF/maven/com.mybatis.enhance.store/mybatis-enhance-actable/pom.xml b/mybatis-enhance-actable/target/classes/META-INF/maven/com.mybatis.enhance.store/mybatis-enhance-actable/pom.xml deleted file mode 100644 index 10c33c0..0000000 --- a/mybatis-enhance-actable/target/classes/META-INF/maven/com.mybatis.enhance.store/mybatis-enhance-actable/pom.xml +++ /dev/null @@ -1,57 +0,0 @@ - - 4.0.0 - com.mybatis.enhance.store - mybatis-enhance-actable - 0.0.1-SNAPSHOT - - - 4.1.4.RELEASE - - - - - - - org.springframework - spring-context - ${spring.version} - provided - - - - org.springframework - spring-tx - ${spring.version} - provided - - - - org.slf4j - slf4j-api - 1.7.12 - provided - - - - org.mybatis.scripting - mybatis-velocity - 1.2 - provided - - - - - - - src/main/java - - **/*.properties - **/*.xml - - false - - - - - \ No newline at end of file diff --git a/mybatis-enhance-actable/target/classes/com/mybatis/enhance/store/mapping/common/BaseMysqlCRUDMapper.xml b/mybatis-enhance-actable/target/classes/com/mybatis/enhance/store/mapping/common/BaseMysqlCRUDMapper.xml deleted file mode 100644 index 7dba3c1..0000000 --- a/mybatis-enhance-actable/target/classes/com/mybatis/enhance/store/mapping/common/BaseMysqlCRUDMapper.xml +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - - - - - - - - - - diff --git "a/mybatis-enhance-actable/\344\275\277\347\224\250\350\257\264\346\230\216.txt" "b/mybatis-enhance-actable/\344\275\277\347\224\250\350\257\264\346\230\216.txt" index 03a8d0f..b5b8bdb 100644 --- "a/mybatis-enhance-actable/\344\275\277\347\224\250\350\257\264\346\230\216.txt" +++ "b/mybatis-enhance-actable/\344\275\277\347\224\250\350\257\264\346\230\216.txt" @@ -31,7 +31,7 @@ A.C.Table是采用了Spring、Mybatis技术的Maven结构,详细介绍如下 3. spring的配置文件中需要做如下配置: - + @@ -46,8 +46,8 @@ A.C.Table是采用了Spring、Mybatis技术的Maven结构,详细介绍如下 - 1. classpath*:com/mybatis/enhance/store/mapping/*/*.xml - 2. com.mybatis.enhance.store.dao.* + 1. classpath*:com/gitee/sunchenbin/mybatis/actable/mapping/*/*.xml + 2. com.gitee.sunchenbin.mybatis.actable.dao.* 举例这两个配置配置的详细位置 @@ -58,7 +58,7 @@ A.C.Table是采用了Spring、Mybatis技术的Maven结构,详细介绍如下 classpath*:com/sunchenbin/store/mapping/*/*.xml - classpath*:com/mybatis/enhance/store/mapping/*/*.xml + classpath*:com/gitee/sunchenbin/mybatis/actable/mapping/*/*.xml @@ -66,7 +66,7 @@ A.C.Table是采用了Spring、Mybatis技术的Maven结构,详细介绍如下 - + -- Gitee From deaf686148e7eeb8034e3a4883f4fbfb00529614 Mon Sep 17 00:00:00 2001 From: sun5769675 Date: Mon, 30 Oct 2017 20:34:52 +0800 Subject: [PATCH 22/34] =?UTF-8?q?=E5=9B=A0=E4=B8=BA=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E4=BA=86=E5=8C=85=E5=90=8D=EF=BC=8C=E6=89=80=E4=BB=A5=E8=BF=99?= =?UTF-8?q?=E9=87=8C=E8=B0=83=E6=95=B4=E4=B8=8B=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index d9d5b44..dde06d2 100644 --- a/README.md +++ b/README.md @@ -36,7 +36,7 @@ A.C.Table是采用了Spring、Mybatis技术的Maven结构,详细介绍如下 3. spring的配置文件中需要做如下配置: ``` - + @@ -51,8 +51,8 @@ A.C.Table是采用了Spring、Mybatis技术的Maven结构,详细介绍如下 - 1. classpath*:com/mybatis/enhance/store/mapping/*/*.xml - 2. com.mybatis.enhance.store.dao.* + 1. classpath*:com/gitee/sunchenbin/mybatis/actable/mapping/*/*.xml + 2. com.gitee.sunchenbin.mybatis.actable.dao.* 举例这两个配置配置的详细位置 @@ -63,7 +63,7 @@ A.C.Table是采用了Spring、Mybatis技术的Maven结构,详细介绍如下 classpath*:com/sunchenbin/store/mapping/*/*.xml - classpath*:com/mybatis/enhance/store/mapping/*/*.xml + classpath*:com/gitee/sunchenbin/mybatis/actable/mapping/*/*.xml @@ -71,7 +71,7 @@ A.C.Table是采用了Spring、Mybatis技术的Maven结构,详细介绍如下 - + ``` -- Gitee From 7f350f78957ed6926bcc409fcd2abd927e1158ff Mon Sep 17 00:00:00 2001 From: "chenbin.sun" Date: Tue, 31 Oct 2017 11:28:48 +0800 Subject: [PATCH 23/34] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=86=E4=B8=80?= =?UTF-8?q?=E4=BA=9B=E6=8F=8F=E8=BF=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mybatis-enhance-actable/pom.xml | 88 +++++++++++++++++++ ...7\347\224\250\350\257\264\346\230\216.txt" | 1 + 2 files changed, 89 insertions(+) diff --git a/mybatis-enhance-actable/pom.xml b/mybatis-enhance-actable/pom.xml index 56aae60..58ed5e4 100644 --- a/mybatis-enhance-actable/pom.xml +++ b/mybatis-enhance-actable/pom.xml @@ -54,4 +54,92 @@ + + + com.gitee.sunchenbin.mybatis.actable:mybatis-enhance-actable + A.CTable is a Maven project based on Spring and Mybatis, which enhances the function of Mybatis + https://gitee.com/sunchenbin/mybatis-enhance + + + The Apache License, Version 2.0 + http://www.apache.org/licenses/LICENSE-2.0.txt + + + + + + sunchenbin + 458757617@qq.com + + + + + scm:git@gitee.com:sunchenbin/mybatis-enhance.git + scm:git@gitee.com:sunchenbin/mybatis-enhance.git + https://gitee.com/sunchenbin/mybatis-enhance + + + + + release + + + + oss + https://oss.sonatype.org/content/repositories/snapshots/ + + + + oss + https://oss.sonatype.org/service/local/staging/deploy/maven2/ + + + + + + + org.apache.maven.plugins + maven-source-plugin + 2.2.1 + + + package + + jar-no-fork + + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + 2.9.1 + + + package + + jar + + + + + + org.apache.maven.plugins + maven-gpg-plugin + 1.5 + + + sign-artifacts + verify + + sign + + + + + + + + \ No newline at end of file diff --git "a/mybatis-enhance-actable/\344\275\277\347\224\250\350\257\264\346\230\216.txt" "b/mybatis-enhance-actable/\344\275\277\347\224\250\350\257\264\346\230\216.txt" index b5b8bdb..03fdfee 100644 --- "a/mybatis-enhance-actable/\344\275\277\347\224\250\350\257\264\346\230\216.txt" +++ "b/mybatis-enhance-actable/\344\275\277\347\224\250\350\257\264\346\230\216.txt" @@ -10,6 +10,7 @@ A.C.Table是采用了Spring、Mybatis技术的Maven结构,详细介绍如下 3. 该笨笨增加了对唯一约束的支持 4. 从原有的框架中剥离出来,支持任意结构的spring+mybatis的框架使用 5. 再次声明A.C.Table目前仅支持mysql数据库 +6. 使用了jdk1.7 **使用步骤方法** 1. 使用该功能的项目需要依赖mybatis-enhance-actable-0.0.1-SNAPSHOT.jar -- Gitee From cf778c4d911a9f74cacc21170d7afe09bcf22478 Mon Sep 17 00:00:00 2001 From: "chenbin.sun" Date: Fri, 3 Nov 2017 18:46:39 +0800 Subject: [PATCH 24/34] =?UTF-8?q?javadoc=E4=BF=AE=E6=94=B9=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mybatis-enhance-actable/pom.xml | 198 +++--- .../mybatis/actable/annotation/Column.java | 18 +- .../actable/annotation/LengthCount.java | 2 +- .../mybatis/actable/annotation/Table.java | 2 +- .../dao/common/BaseMysqlCRUDMapper.java | 9 +- .../dao/system/CreateMysqlTablesMapper.java | 22 +- .../manager/common/BaseMysqlCRUDManager.java | 12 +- .../manager/handler/StartUpHandler.java | 3 + .../SysMysqlCreateTableManagerImpl.java | 301 ++++----- .../SysOracleCreateTableManagerImpl.java | 595 +----------------- .../mybatis/actable/utils/ClassTools.java | 4 +- 11 files changed, 316 insertions(+), 850 deletions(-) diff --git a/mybatis-enhance-actable/pom.xml b/mybatis-enhance-actable/pom.xml index 58ed5e4..0d1d51c 100644 --- a/mybatis-enhance-actable/pom.xml +++ b/mybatis-enhance-actable/pom.xml @@ -1,5 +1,11 @@ + + org.sonatype.oss + oss-parent + 7 + + 4.0.0 com.gitee.sunchenbin.mybatis.actable mybatis-enhance-actable @@ -40,9 +46,10 @@ provided - + + - + src/main/java @@ -52,94 +59,135 @@ false - - + + + + org.apache.maven.plugins + maven-source-plugin + 2.2.1 + + + attach-sources + package + + jar-no-fork + + + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + 2.9.1 + + UTF-8 + UTF-8 + + + + attach-javadocs + package + + jar + + + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.0 + + 1.6 + 1.6 + true + true + UTF-8 + true + + + + + org.apache.maven.plugins + maven-surefire-plugin + + + /usr/local/lib + + + + + + org.apache.maven.plugins + maven-release-plugin + 2.5.1 + + + com.gitee.sunchenbin.mybatis.actable:mybatis-enhance-actable A.CTable is a Maven project based on Spring and Mybatis, which enhances the function of Mybatis https://gitee.com/sunchenbin/mybatis-enhance + - - The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - - + + The Apache Software License, Version 2.0 + http://www.apache.org/licenses/LICENSE-2.0.txt + actable + + sunchenbin 458757617@qq.com + sunchenbin + https://gitee.com/sunchenbin/mybatis-enhance - scm:git@gitee.com:sunchenbin/mybatis-enhance.git - scm:git@gitee.com:sunchenbin/mybatis-enhance.git + scm:git:git@gitee.com:sunchenbin/mybatis-enhance.git + scm:git:git@gitee.com:sunchenbin/mybatis-enhance.git https://gitee.com/sunchenbin/mybatis-enhance + HEAD - - - - release - - - - oss - https://oss.sonatype.org/content/repositories/snapshots/ - - - - oss - https://oss.sonatype.org/service/local/staging/deploy/maven2/ - - - - - - - org.apache.maven.plugins - maven-source-plugin - 2.2.1 - - - package - - jar-no-fork - - - - - - - org.apache.maven.plugins - maven-javadoc-plugin - 2.9.1 - - - package - - jar - - - - - - org.apache.maven.plugins - maven-gpg-plugin - 1.5 - - - sign-artifacts - verify - - sign - - - - - - - - + + + + + oss + OSS Snapshots Repository + + https://oss.sonatype.org/content/repositories/snapshots/ + + + oss + OSS Staging Repository + + https://oss.sonatype.org/service/local/staging/deploy/maven2/ + + + + \ No newline at end of file diff --git a/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/annotation/Column.java b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/annotation/Column.java index 248c5f7..7a26865 100644 --- a/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/annotation/Column.java +++ b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/annotation/Column.java @@ -26,63 +26,63 @@ public @interface Column{ /** * 字段名 * - * @return + * @return 字段名 */ public String name(); /** * 字段类型 * - * @return + * @return 字段类型 */ public String type(); /** * 字段长度,默认是255 * - * @return + * @return 字段长度,默认是255 */ public int length() default 255; /** * 小数点长度,默认是0 * - * @return + * @return 小数点长度,默认是0 */ public int decimalLength() default 0; /** * 是否为可以为null,true是可以,false是不可以,默认为true * - * @return + * @return 是否为可以为null,true是可以,false是不可以,默认为true */ public boolean isNull() default true; /** * 是否是主键,默认false * - * @return + * @return 是否是主键,默认false */ public boolean isKey() default false; /** * 是否自动递增,默认false 只有主键才能使用 * - * @return + * @return 是否自动递增,默认false 只有主键才能使用 */ public boolean isAutoIncrement() default false; /** * 默认值,默认为null * - * @return + * @return 默认值,默认为null */ public String defaultValue() default "NULL"; /** * 是否是唯一,默认false * - * @return + * @return 是否是唯一,默认false */ public boolean isUnique() default false; } diff --git a/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/annotation/LengthCount.java b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/annotation/LengthCount.java index cf0ffad..2157ebd 100644 --- a/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/annotation/LengthCount.java +++ b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/annotation/LengthCount.java @@ -27,7 +27,7 @@ public @interface LengthCount{ /** * 默认是1,0表示不需要设置,1表示需要设置一个,2表示需要设置两个 * - * @return + * @return 默认是1,0表示不需要设置,1表示需要设置一个,2表示需要设置两个 */ public int LengthCount() default 1; } diff --git a/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/annotation/Table.java b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/annotation/Table.java index a89b45c..2a62b75 100644 --- a/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/annotation/Table.java +++ b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/annotation/Table.java @@ -26,7 +26,7 @@ public @interface Table { /** * 表名 - * @return + * @return 表名 */ public String name(); } diff --git a/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/dao/common/BaseMysqlCRUDMapper.java b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/dao/common/BaseMysqlCRUDMapper.java index 1409044..48e2466 100644 --- a/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/dao/common/BaseMysqlCRUDMapper.java +++ b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/dao/common/BaseMysqlCRUDMapper.java @@ -15,26 +15,25 @@ public interface BaseMysqlCRUDMapper { /** * 保存 - * @param tableMap + * @param tableMap 表结构的map */ public void save(@Param("tableMap") Map> tableMap); /** * 更新 - * @param tableMap + * @param tableMap 表结构的map */ public void update(@Param("tableMap") Map> tableMap); /** * 删除 - * @param tableMap + * @param tableMap 表结构的map */ public void delete(@Param("tableMap") Map> tableMap); /** * 查询 - * @param - * @param tableMap + * @param tableMap 表结构的map */ public List> query(@Param("tableMap") Map> tableMap); diff --git a/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/dao/system/CreateMysqlTablesMapper.java b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/dao/system/CreateMysqlTablesMapper.java index 0dd0974..32f65d0 100644 --- a/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/dao/system/CreateMysqlTablesMapper.java +++ b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/dao/system/CreateMysqlTablesMapper.java @@ -17,57 +17,57 @@ public interface CreateMysqlTablesMapper { /** * 根据结构注解解析出来的信息创建表 - * @param tableMap + * @param tableMap 表结构的map */ public void createTable(@Param("tableMap") Map> tableMap); /** * 根据表名查询表在库中是否存在,存在返回1,不存在返回0 - * @param tableName - * @return + * @param tableName 表结构的map + * @return 存在返回1,不存在返回0 */ public int findTableCountByTableName(@Param("tableName") String tableName); /** * 根据表名查询库中该表的字段结构等信息 - * @param tableName - * @return + * @param tableName 表结构的map + * @return 表的字段结构等信息 */ public List findTableEnsembleByTableName(@Param("tableName") String tableName); /** * 增加字段 - * @param tableMap + * @param tableMap 表结构的map */ public void addTableField(@Param("tableMap") Map tableMap); /** * 删除字段 - * @param tableMap + * @param tableMap 表结构的map */ public void removeTableField(@Param("tableMap") Map tableMap); /** * 修改字段 - * @param tableMap + * @param tableMap 表结构的map */ public void modifyTableField(@Param("tableMap") Map tableMap); /** * 删除主键约束,附带修改其他字段属性功能 - * @param tableMap + * @param tableMap 表结构的map */ public void dropKeyTableField(@Param("tableMap") Map tableMap); /** * 删除唯一约束字段,不带修改其他字段属性的功能 - * @param tableMap + * @param tableMap 表结构的map */ public void dropUniqueTableField(@Param("tableMap") Map tableMap); /** * 根据表名删除表 - * @param tableName + * @param tableName 表结构的map */ public void dorpTableByName(@Param("tableName") String tableName); } diff --git a/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/manager/common/BaseMysqlCRUDManager.java b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/manager/common/BaseMysqlCRUDManager.java index 7186a36..8f5b857 100644 --- a/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/manager/common/BaseMysqlCRUDManager.java +++ b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/manager/common/BaseMysqlCRUDManager.java @@ -6,22 +6,22 @@ public interface BaseMysqlCRUDManager{ /** * 保存,如果主键有值则进行更新操作 - * @param - * @param t + * @param model类型 + * @param t 要保存的model类型数据 */ void save(T t); /** * 根据传入对象非空的条件删除 - * @param - * @param t + * @param model类型 + * @param t 要删除的model类型数据 */ void delete(T t); /** * 根据传入对象非空的条件进行查询 - * @param - * @param t + * @param model类型 + * @param t 要查询的model类型数据 */ List query(T t); } diff --git a/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/manager/handler/StartUpHandler.java b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/manager/handler/StartUpHandler.java index bba875e..acbfc8a 100644 --- a/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/manager/handler/StartUpHandler.java +++ b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/manager/handler/StartUpHandler.java @@ -8,5 +8,8 @@ package com.gitee.sunchenbin.mybatis.actable.manager.handler; */ public interface StartUpHandler { + /** + * 建表开始 + */ void startHandler(); } diff --git a/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/manager/system/SysMysqlCreateTableManagerImpl.java b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/manager/system/SysMysqlCreateTableManagerImpl.java index 887e7fa..bee7582 100644 --- a/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/manager/system/SysMysqlCreateTableManagerImpl.java +++ b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/manager/system/SysMysqlCreateTableManagerImpl.java @@ -26,27 +26,26 @@ import com.gitee.sunchenbin.mybatis.actable.dao.system.CreateMysqlTablesMapper; import com.gitee.sunchenbin.mybatis.actable.utils.ClassTools; /** - * 项目启动时自动扫描配置的目录中的model,根据配置的规则自动创建或更新表 - * 该逻辑只适用于mysql,其他数据库尚且需要另外扩展,因为sql的语法不同 + * 项目启动时自动扫描配置的目录中的model,根据配置的规则自动创建或更新表 该逻辑只适用于mysql,其他数据库尚且需要另外扩展,因为sql的语法不同 * * @author sunchenbin * @version 2016年6月23日 下午5:58:12 */ @Transactional @Service("sysMysqlCreateTableManager") -public class SysMysqlCreateTableManagerImpl implements SysMysqlCreateTableManager{ +public class SysMysqlCreateTableManagerImpl implements SysMysqlCreateTableManager { - private static final Logger log = LoggerFactory.getLogger(SysMysqlCreateTableManagerImpl.class); + private static final Logger log = LoggerFactory.getLogger(SysMysqlCreateTableManagerImpl.class); @Autowired - private CreateMysqlTablesMapper createMysqlTablesMapper; + private CreateMysqlTablesMapper createMysqlTablesMapper; /** * 要扫描的model所在的pack */ - @Value("#{configProperties['mybatis.model.pack']}") + @Value("#{configProperties['mybatis.model.pack']}") private String pack; - + /** * 自动创建模式:update表示更新,create表示删除原表重新创建 */ @@ -56,16 +55,18 @@ public class SysMysqlCreateTableManagerImpl implements SysMysqlCreateTableManage /** * 读取配置文件的三种状态(创建表、更新表、不做任何事情) */ - public void createMysqlTable(){ - + public void createMysqlTable() { + // 不做任何事情 - if("none".equals(tableAuto)){ + if ("none".equals(tableAuto)) { log.info("配置mybatis.table.auto=none,不需要做任何事情"); return; } - + + // 获取Mysql的类型,以及类型需要设置几个长度 Map mySqlTypeAndLengthMap = mySqlTypeAndLengthMap(); + // 从包package中获取所有的Class Set> classes = ClassTools.getClasses(pack); // 用于存需要创建的表名+结构 @@ -82,43 +83,48 @@ public class SysMysqlCreateTableManagerImpl implements SysMysqlCreateTableManage // 用于存需要删除主键的表名+结构 Map> dropKeyTableMap = new HashMap>(); - + // 用于存需要删除唯一约束的表名+结构 Map> dropUniqueTableMap = new HashMap>(); - + // 构建出全部表的增删改的map - allTableMapConstruct(mySqlTypeAndLengthMap, classes, newTableMap, modifyTableMap, addTableMap, removeTableMap, dropKeyTableMap,dropUniqueTableMap); + allTableMapConstruct(mySqlTypeAndLengthMap, classes, newTableMap, modifyTableMap, addTableMap, removeTableMap, + dropKeyTableMap, dropUniqueTableMap); // 根据传入的map,分别去创建或修改表结构 - createOrModifyTableConstruct(newTableMap, modifyTableMap, addTableMap, removeTableMap, dropKeyTableMap,dropUniqueTableMap); + createOrModifyTableConstruct(newTableMap, modifyTableMap, addTableMap, removeTableMap, dropKeyTableMap, + dropUniqueTableMap); } /** * 构建出全部表的增删改的map * * @param mySqlTypeAndLengthMap + * 获取Mysql的类型,以及类型需要设置几个长度 * @param classes + * 从包package中获取所有的Class * @param newTableMap + * 用于存需要创建的表名+结构 * @param modifyTableMap + * 用于存需要更新字段类型等的表名+结构 * @param addTableMap + * 用于存需要增加字段的表名+结构 * @param removeTableMap + * 用于存需要删除字段的表名+结构 * @param dropKeyTableMap + * 用于存需要删除主键的表名+结构 * @param dropUniqueTableMap + * 用于存需要删除唯一约束的表名+结构 */ - private void allTableMapConstruct( - Map mySqlTypeAndLengthMap, - Set> classes, - Map> newTableMap, - Map> modifyTableMap, - Map> addTableMap, - Map> removeTableMap, - Map> dropKeyTableMap, - Map> dropUniqueTableMap){ - for (Class clas : classes){ + private void allTableMapConstruct(Map mySqlTypeAndLengthMap, Set> classes, + Map> newTableMap, Map> modifyTableMap, + Map> addTableMap, Map> removeTableMap, + Map> dropKeyTableMap, Map> dropUniqueTableMap) { + for (Class clas : classes) { Table table = clas.getAnnotation(Table.class); // 没有打注解不需要创建变 - if(null == table){ + if (null == table) { continue; } @@ -137,9 +143,9 @@ public class SysMysqlCreateTableManagerImpl implements SysMysqlCreateTableManage // 迭代出所有model的所有fields存到newFieldList中 tableFieldsConstruct(mySqlTypeAndLengthMap, clas, newFieldList); - + // 如果配置文件配置的是create,表示将所有的表删掉重新创建 - if("create".equals(tableAuto)){ + if ("create".equals(tableAuto)) { createMysqlTablesMapper.dorpTableByName(table.name()); } @@ -149,34 +155,23 @@ public class SysMysqlCreateTableManagerImpl implements SysMysqlCreateTableManage // 不存在时 if (exist == 0) { newTableMap.put(table.name(), newFieldList); - }else{ + } else { // 已存在时理论上做修改的操作,这里查出该表的结构 - List tableColumnList = createMysqlTablesMapper.findTableEnsembleByTableName(table.name()); + List tableColumnList = createMysqlTablesMapper + .findTableEnsembleByTableName(table.name()); // 从sysColumns中取出我们需要比较的列的List // 先取出name用来筛选出增加和删除的字段 - List columnNames = ClassTools.getPropertyValueList(tableColumnList, SysMysqlColumns.COLUMN_NAME_KEY); + List columnNames = ClassTools.getPropertyValueList(tableColumnList, + SysMysqlColumns.COLUMN_NAME_KEY); // 验证对比从model中解析的fieldList与从数据库查出来的columnList // 1. 找出增加的字段 // 2. 找出删除的字段 // 3. 找出更新的字段 - buildAddAndRemoveAndModifyFields( - mySqlTypeAndLengthMap, - modifyTableMap, - addTableMap, - removeTableMap, - dropKeyTableMap, - dropUniqueTableMap, - table, - newFieldList, - removeFieldList, - addFieldList, - modifyFieldList, - dropKeyFieldList, - dropUniqueFieldList, - tableColumnList, - columnNames); + buildAddAndRemoveAndModifyFields(mySqlTypeAndLengthMap, modifyTableMap, addTableMap, removeTableMap, + dropKeyTableMap, dropUniqueTableMap, table, newFieldList, removeFieldList, addFieldList, + modifyFieldList, dropKeyFieldList, dropUniqueFieldList, tableColumnList, columnNames); } } @@ -186,44 +181,50 @@ public class SysMysqlCreateTableManagerImpl implements SysMysqlCreateTableManage * 构建增加的删除的修改的字段 * * @param mySqlTypeAndLengthMap + * 获取Mysql的类型,以及类型需要设置几个长度 * @param modifyTableMap + * 用于存需要更新字段类型等的表名+结构 * @param addTableMap + * 用于存需要增加字段的表名+结构 * @param removeTableMap + * 用于存需要删除字段的表名+结构 * @param dropKeyTableMap + * 用于存需要删除主键的表名+结构 * @param dropUniqueTableMap + * 用于存需要删除唯一约束的表名+结构 * @param table + * 表 * @param newFieldList + * 用于存新增表的字段 * @param removeFieldList + * 用于存删除的字段 * @param addFieldList + * 用于存新增的字段 * @param modifyFieldList + * 用于存修改的字段 * @param dropKeyFieldList + * 用于存删除主键的字段 * @param dropUniqueFieldList + * 用于存删除唯一约束的字段 * @param tableColumnList + * 已存在时理论上做修改的操作,这里查出该表的结构 * @param columnNames + * 从sysColumns中取出我们需要比较的列的List */ - private void buildAddAndRemoveAndModifyFields( - Map mySqlTypeAndLengthMap, - Map> modifyTableMap, - Map> addTableMap, - Map> removeTableMap, - Map> dropKeyTableMap, - Map> dropUniqueTableMap, - Table table, - List newFieldList, - List removeFieldList, - List addFieldList, - List modifyFieldList, - List dropKeyFieldList, - List dropUniqueFieldList, - List tableColumnList, - List columnNames){ + private void buildAddAndRemoveAndModifyFields(Map mySqlTypeAndLengthMap, + Map> modifyTableMap, Map> addTableMap, + Map> removeTableMap, Map> dropKeyTableMap, + Map> dropUniqueTableMap, Table table, List newFieldList, + List removeFieldList, List addFieldList, List modifyFieldList, + List dropKeyFieldList, List dropUniqueFieldList, List tableColumnList, + List columnNames) { // 1. 找出增加的字段 // 根据数据库中表的结构和model中表的结构对比找出新增的字段 buildNewFields(addTableMap, table, newFieldList, addFieldList, columnNames); // 将fieldList转成Map类型,字段名作为主键 Map fieldMap = new HashMap(); - for (Object obj : newFieldList){ + for (Object obj : newFieldList) { CreateTableParam createTableParam = (CreateTableParam) obj; fieldMap.put(createTableParam.getFieldName(), createTableParam); } @@ -232,45 +233,39 @@ public class SysMysqlCreateTableManagerImpl implements SysMysqlCreateTableManage buildRemoveFields(removeTableMap, table, removeFieldList, columnNames, fieldMap); // 3. 找出更新的字段 - buildModifyFields( - mySqlTypeAndLengthMap, - modifyTableMap, - dropKeyTableMap, - dropUniqueTableMap, - table, - modifyFieldList, - dropKeyFieldList, - dropUniqueFieldList, - tableColumnList, - fieldMap); + buildModifyFields(mySqlTypeAndLengthMap, modifyTableMap, dropKeyTableMap, dropUniqueTableMap, table, + modifyFieldList, dropKeyFieldList, dropUniqueFieldList, tableColumnList, fieldMap); } /** * 根据数据库中表的结构和model中表的结构对比找出修改类型默认值等属性的字段 * * @param mySqlTypeAndLengthMap + * 获取Mysql的类型,以及类型需要设置几个长度 * @param modifyTableMap + * 用于存需要更新字段类型等的表名+结构 * @param dropKeyTableMap + * 用于存需要删除主键的表名+结构 * @param dropUniqueTableMap + * 用于存需要删除唯一约束的表名+结构 * @param table + * 表 * @param modifyFieldList + * 用于存修改的字段 * @param dropKeyFieldList + * 用于存删除主键的字段 * @param dropUniqueFieldList + * 用于存删除唯一约束的字段 * @param tableColumnList + * 已存在时理论上做修改的操作,这里查出该表的结构 * @param fieldMap + * 从sysColumns中取出我们需要比较的列的List */ - private void buildModifyFields( - Map mySqlTypeAndLengthMap, - Map> modifyTableMap, - Map> dropKeyTableMap, - Map> dropUniqueTableMap, - Table table, - List modifyFieldList, - List dropKeyFieldList, - List dropUniqueFieldList, - List tableColumnList, - Map fieldMap){ - for (SysMysqlColumns sysColumn : tableColumnList){ + private void buildModifyFields(Map mySqlTypeAndLengthMap, Map> modifyTableMap, + Map> dropKeyTableMap, Map> dropUniqueTableMap, Table table, + List modifyFieldList, List dropKeyFieldList, List dropUniqueFieldList, + List tableColumnList, Map fieldMap) { + for (SysMysqlColumns sysColumn : tableColumnList) { // 数据库中有该字段时 CreateTableParam createTableParam = fieldMap.get(sysColumn.getColumn_name()); if (createTableParam != null) { @@ -279,12 +274,12 @@ public class SysMysqlCreateTableManagerImpl implements SysMysqlCreateTableManage if ("PRI".equals(sysColumn.getColumn_key()) && !createTableParam.isFieldIsKey()) { dropKeyFieldList.add(createTableParam); } - + // 原本是唯一,现在不是了,那么要去做删除唯一的操作 if ("UNI".equals(sysColumn.getColumn_key()) && !createTableParam.isFieldIsUnique()) { dropUniqueFieldList.add(createTableParam); } - + // 验证是否有更新 // 1.验证类型 if (!sysColumn.getData_type().toLowerCase().equals(createTableParam.getFieldType().toLowerCase())) { @@ -298,10 +293,10 @@ public class SysMysqlCreateTableManagerImpl implements SysMysqlCreateTableManage if (length == 1) { // 拼接出类型加长度,比如varchar(1) typeAndLength = typeAndLength + "(" + createTableParam.getFieldLength() + ")"; - }else if (length == 2) { + } else if (length == 2) { // 拼接出类型加长度,比如varchar(1) - typeAndLength = typeAndLength + "(" + createTableParam.getFieldLength() + "," + createTableParam.getFieldDecimalLength() - + ")"; + typeAndLength = typeAndLength + "(" + createTableParam.getFieldLength() + "," + + createTableParam.getFieldDecimalLength() + ")"; } // 判断类型+长度是否相同 if (!sysColumn.getColumn_type().toLowerCase().equals(typeAndLength)) { @@ -329,7 +324,7 @@ public class SysMysqlCreateTableManagerImpl implements SysMysqlCreateTableManage modifyFieldList.add(createTableParam); continue; } - }else if (!sysColumn.getColumn_default().equals(createTableParam.getFieldDefaultValue())) { + } else if (!sysColumn.getColumn_default().equals(createTableParam.getFieldDefaultValue())) { // 两者不相等时,需要更新该字段 modifyFieldList.add(createTableParam); continue; @@ -342,14 +337,14 @@ public class SysMysqlCreateTableManagerImpl implements SysMysqlCreateTableManage modifyFieldList.add(createTableParam); continue; } - }else if (sysColumn.getIs_nullable().equals("YES") && !createTableParam.isFieldIsKey()) { + } else if (sysColumn.getIs_nullable().equals("YES") && !createTableParam.isFieldIsKey()) { if (!createTableParam.isFieldIsNull()) { // 一个是可以一个是不可用,所以需要更新该字段 modifyFieldList.add(createTableParam); continue; } } - + // 8.验证是否唯一 if (!"UNI".equals(sysColumn.getColumn_key()) && createTableParam.isFieldIsUnique()) { // 原本不是唯一,现在变成了唯一,那么要去做更新 @@ -367,7 +362,7 @@ public class SysMysqlCreateTableManagerImpl implements SysMysqlCreateTableManage if (dropKeyFieldList.size() > 0) { dropKeyTableMap.put(table.name(), dropKeyFieldList); } - + if (dropUniqueFieldList.size() > 0) { dropUniqueTableMap.put(table.name(), dropUniqueFieldList); } @@ -377,20 +372,19 @@ public class SysMysqlCreateTableManagerImpl implements SysMysqlCreateTableManage * 根据数据库中表的结构和model中表的结构对比找出删除的字段 * * @param removeTableMap + * 用于存需要删除字段的表名+结构 * @param table + * 表 * @param removeFieldList + * 用于存删除的字段 * @param columnNames * 数据库中的结构 * @param fieldMap * model中的字段,字段名为key */ - private void buildRemoveFields( - Map> removeTableMap, - Table table, - List removeFieldList, - List columnNames, - Map fieldMap){ - for (String fieldNm : columnNames){ + private void buildRemoveFields(Map> removeTableMap, Table table, List removeFieldList, + List columnNames, Map fieldMap) { + for (String fieldNm : columnNames) { // 判断该字段在新的model结构中是否存在 if (fieldMap.get(fieldNm) == null) { // 不存在,做删除处理 @@ -406,20 +400,19 @@ public class SysMysqlCreateTableManagerImpl implements SysMysqlCreateTableManage * 根据数据库中表的结构和model中表的结构对比找出新增的字段 * * @param addTableMap + * 用于存需要增加字段的表名+结构 * @param table + * 表 * @param newFieldList * model中的结构 * @param addFieldList + * 用于存新增的字段 * @param columnNames * 数据库中的结构 */ - private void buildNewFields( - Map> addTableMap, - Table table, - List newFieldList, - List addFieldList, - List columnNames){ - for (Object obj : newFieldList){ + private void buildNewFields(Map> addTableMap, Table table, List newFieldList, + List addFieldList, List columnNames) { + for (Object obj : newFieldList) { CreateTableParam createTableParam = (CreateTableParam) obj; // 循环新的model中的字段,判断是否在数据库中已经存在 if (!columnNames.contains(createTableParam.getFieldName())) { @@ -440,14 +433,16 @@ public class SysMysqlCreateTableManagerImpl implements SysMysqlCreateTableManage * @param clas * 准备做为创建表依据的class * @param newFieldList + * 用于存新增表的字段 */ - private void tableFieldsConstruct(Map mySqlTypeAndLengthMap,Class clas,List newFieldList){ + private void tableFieldsConstruct(Map mySqlTypeAndLengthMap, Class clas, + List newFieldList) { Field[] fields = clas.getDeclaredFields(); - + // 判断是否有父类,如果有拉取父类的field,这里只支持多层继承 fields = recursionParents(clas, fields); - - for (Field field : fields){ + + for (Field field : fields) { // 判断方法中是否有指定注解类型的注解 boolean hasAnnotation = field.isAnnotationPresent(Column.class); if (hasAnnotation) { @@ -461,7 +456,7 @@ public class SysMysqlCreateTableManagerImpl implements SysMysqlCreateTableManage // 主键或唯一键时设置必须不为null if (column.isKey() || column.isUnique()) { param.setFieldIsNull(false); - }else{ + } else { param.setFieldIsNull(column.isNull()); } param.setFieldIsKey(column.isKey()); @@ -477,14 +472,17 @@ public class SysMysqlCreateTableManagerImpl implements SysMysqlCreateTableManage /** * 递归扫描父类的fields + * * @param clas + * 类 * @param fields + * 属性 */ @SuppressWarnings("rawtypes") private Field[] recursionParents(Class clas, Field[] fields) { - if(clas.getSuperclass()!=null){ + if (clas.getSuperclass() != null) { Class clsSup = clas.getSuperclass(); - fields = (Field[]) ArrayUtils.addAll(fields,clsSup.getDeclaredFields()); + fields = (Field[]) ArrayUtils.addAll(fields, clsSup.getDeclaredFields()); fields = recursionParents(clsSup, fields); } return fields; @@ -494,18 +492,22 @@ public class SysMysqlCreateTableManagerImpl implements SysMysqlCreateTableManage * 根据传入的map创建或修改表结构 * * @param newTableMap + * 用于存需要创建的表名+结构 * @param modifyTableMap + * 用于存需要更新字段类型等的表名+结构 * @param addTableMap + * 用于存需要增加字段的表名+结构 * @param removeTableMap + * 用于存需要删除字段的表名+结构 * @param dropKeyTableMap + * 用于存需要删除主键的表名+结构 + * @param dropUniqueTableMap + * 用于存需要删除唯一约束的表名+结构 */ - private void createOrModifyTableConstruct( - Map> newTableMap, - Map> modifyTableMap, - Map> addTableMap, - Map> removeTableMap, - Map> dropKeyTableMap, - Map> dropUniqueTableMap){ + private void createOrModifyTableConstruct(Map> newTableMap, + Map> modifyTableMap, Map> addTableMap, + Map> removeTableMap, Map> dropKeyTableMap, + Map> dropUniqueTableMap) { // 1. 创建表 createTableByMap(newTableMap); // 2. 删除要变更主键的表的原来的字段的主键 @@ -518,19 +520,20 @@ public class SysMysqlCreateTableManagerImpl implements SysMysqlCreateTableManage removeFieldsByMap(removeTableMap); // 6. 修改字段类型等 modifyFieldsByMap(modifyTableMap); - + } /** * 根据map结构修改表中的字段类型等 * * @param modifyTableMap + * 用于存需要更新字段类型等的表名+结构 */ - private void modifyFieldsByMap(Map> modifyTableMap){ + private void modifyFieldsByMap(Map> modifyTableMap) { // 做修改字段操作 if (modifyTableMap.size() > 0) { - for (Entry> entry : modifyTableMap.entrySet()){ - for (Object obj : entry.getValue()){ + for (Entry> entry : modifyTableMap.entrySet()) { + for (Object obj : entry.getValue()) { Map map = new HashMap(); map.put(entry.getKey(), obj); CreateTableParam fieldProperties = (CreateTableParam) obj; @@ -546,12 +549,13 @@ public class SysMysqlCreateTableManagerImpl implements SysMysqlCreateTableManage * 根据map结构删除表中的字段 * * @param removeTableMap + * 用于存需要删除字段的表名+结构 */ - private void removeFieldsByMap(Map> removeTableMap){ + private void removeFieldsByMap(Map> removeTableMap) { // 做删除字段操作 if (removeTableMap.size() > 0) { - for (Entry> entry : removeTableMap.entrySet()){ - for (Object obj : entry.getValue()){ + for (Entry> entry : removeTableMap.entrySet()) { + for (Object obj : entry.getValue()) { Map map = new HashMap(); map.put(entry.getKey(), obj); String fieldName = (String) obj; @@ -567,12 +571,13 @@ public class SysMysqlCreateTableManagerImpl implements SysMysqlCreateTableManage * 根据map结构对表中添加新的字段 * * @param addTableMap + * 用于存需要增加字段的表名+结构 */ - private void addFieldsByMap(Map> addTableMap){ + private void addFieldsByMap(Map> addTableMap) { // 做增加字段操作 if (addTableMap.size() > 0) { - for (Entry> entry : addTableMap.entrySet()){ - for (Object obj : entry.getValue()){ + for (Entry> entry : addTableMap.entrySet()) { + for (Object obj : entry.getValue()) { Map map = new HashMap(); map.put(entry.getKey(), obj); CreateTableParam fieldProperties = (CreateTableParam) obj; @@ -588,12 +593,13 @@ public class SysMysqlCreateTableManagerImpl implements SysMysqlCreateTableManage * 根据map结构删除要变更表中字段的主键 * * @param dropKeyTableMap + * 用于存需要删除主键的表名+结构 */ - private void dropFieldsKeyByMap(Map> dropKeyTableMap){ + private void dropFieldsKeyByMap(Map> dropKeyTableMap) { // 先去做删除主键的操作,这步操作必须在增加和修改字段之前! if (dropKeyTableMap.size() > 0) { - for (Entry> entry : dropKeyTableMap.entrySet()){ - for (Object obj : entry.getValue()){ + for (Entry> entry : dropKeyTableMap.entrySet()) { + for (Object obj : entry.getValue()) { Map map = new HashMap(); map.put(entry.getKey(), obj); CreateTableParam fieldProperties = (CreateTableParam) obj; @@ -604,17 +610,18 @@ public class SysMysqlCreateTableManagerImpl implements SysMysqlCreateTableManage } } } - + /** * 根据map结构删除要变更表中字段的唯一约束 * * @param dropUniqueTableMap + * 用于存需要删除唯一约束的表名+结构 */ - private void dropFieldsUniqueByMap(Map> dropUniqueTableMap){ + private void dropFieldsUniqueByMap(Map> dropUniqueTableMap) { // 先去做删除唯一约束的操作,这步操作必须在增加和修改字段之前! if (dropUniqueTableMap.size() > 0) { - for (Entry> entry : dropUniqueTableMap.entrySet()){ - for (Object obj : entry.getValue()){ + for (Entry> entry : dropUniqueTableMap.entrySet()) { + for (Object obj : entry.getValue()) { Map map = new HashMap(); map.put(entry.getKey(), obj); CreateTableParam fieldProperties = (CreateTableParam) obj; @@ -633,11 +640,12 @@ public class SysMysqlCreateTableManagerImpl implements SysMysqlCreateTableManage * 根据map结构创建表 * * @param newTableMap + * 用于存需要创建的表名+结构 */ - private void createTableByMap(Map> newTableMap){ + private void createTableByMap(Map> newTableMap) { // 做创建表操作 if (newTableMap.size() > 0) { - for (Entry> entry : newTableMap.entrySet()){ + for (Entry> entry : newTableMap.entrySet()) { Map> map = new HashMap>(); map.put(entry.getKey(), entry.getValue()); log.info("开始创建表:" + entry.getKey()); @@ -648,12 +656,13 @@ public class SysMysqlCreateTableManagerImpl implements SysMysqlCreateTableManage } /** - * 获取Mysql的类型,以及类型需要设置几个长度,这里构建成map的样式 构建Map(字段名(小写),需要设置几个长度(0表示不需要设置,1表示需要设置一个,2表示需要设置两个)) + * 获取Mysql的类型,以及类型需要设置几个长度,这里构建成map的样式 + * 构建Map(字段名(小写),需要设置几个长度(0表示不需要设置,1表示需要设置一个,2表示需要设置两个)) */ - public Map mySqlTypeAndLengthMap(){ + public Map mySqlTypeAndLengthMap() { Field[] fields = MySqlTypeConstant.class.getDeclaredFields(); Map map = new HashMap(); - for (Field field : fields){ + for (Field field : fields) { LengthCount lengthCount = field.getAnnotation(LengthCount.class); map.put(field.getName().toLowerCase(), lengthCount.LengthCount()); } diff --git a/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/manager/system/SysOracleCreateTableManagerImpl.java b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/manager/system/SysOracleCreateTableManagerImpl.java index 980caf1..f4dc3d3 100644 --- a/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/manager/system/SysOracleCreateTableManagerImpl.java +++ b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/manager/system/SysOracleCreateTableManagerImpl.java @@ -64,599 +64,6 @@ public class SysOracleCreateTableManagerImpl implements SysOracleCreateTableMana return; } - Map oracleTypeAndLengthMap = oracleTypeAndLengthMap(); - - Set> classes = ClassTools.getClasses(pack); - - // 用于存需要创建的表名+结构 - Map> newTableMap = new HashMap>(); - - // 用于存需要更新字段类型等的表名+结构 - Map> modifyTableMap = new HashMap>(); - - // 用于存需要增加字段的表名+结构 - Map> addTableMap = new HashMap>(); - - // 用于存需要删除字段的表名+结构 - Map> removeTableMap = new HashMap>(); - - // 用于存需要删除主键的表名+结构 - Map> dropKeyTableMap = new HashMap>(); - - // 用于存需要删除唯一约束的表名+结构 - Map> dropUniqueTableMap = new HashMap>(); - - // 构建出全部表的增删改的map - allTableMapConstruct(oracleTypeAndLengthMap, classes, newTableMap, modifyTableMap, addTableMap, removeTableMap, dropKeyTableMap,dropUniqueTableMap); - - // 根据传入的map,分别去创建或修改表结构 - createOrModifyTableConstruct(newTableMap, modifyTableMap, addTableMap, removeTableMap, dropKeyTableMap,dropUniqueTableMap); - } - - /** - * 构建出全部表的增删改的map - * - * @param oracleTypeAndLengthMap - * @param classes - * @param newTableMap - * @param modifyTableMap - * @param addTableMap - * @param removeTableMap - * @param dropKeyTableMap - * @param dropUniqueTableMap - */ - private void allTableMapConstruct( - Map oracleTypeAndLengthMap, - Set> classes, - Map> newTableMap, - Map> modifyTableMap, - Map> addTableMap, - Map> removeTableMap, - Map> dropKeyTableMap, - Map> dropUniqueTableMap){ - for (Class clas : classes){ - - Table table = clas.getAnnotation(Table.class); - // 没有打注解不需要创建变 - if(null == table){ - continue; - } - - // 用于存新增表的字段 - List newFieldList = new ArrayList(); - // 用于存删除的字段 - List removeFieldList = new ArrayList(); - // 用于存新增的字段 - List addFieldList = new ArrayList(); - // 用于存修改的字段 - List modifyFieldList = new ArrayList(); - // 用于存删除主键的字段 - List dropKeyFieldList = new ArrayList(); - // 用于存删除唯一约束的字段 - List dropUniqueFieldList = new ArrayList(); - - // 迭代出所有model的所有fields存到newFieldList中 - tableFieldsConstruct(oracleTypeAndLengthMap, clas, newFieldList); - - // 如果配置文件配置的是create,表示将所有的表删掉重新创建 - if("create".equals(tableAuto)){ - createMysqlTablesMapper.dorpTableByName(table.name()); - } - - // 先查该表是否以存在 - int exist = createMysqlTablesMapper.findTableCountByTableName(table.name()); - - // 不存在时 - if (exist == 0) { - newTableMap.put(table.name(), newFieldList); - }else{ - // 已存在时理论上做修改的操作,这里查出该表的结构 - List tableColumnList = createMysqlTablesMapper.findTableEnsembleByTableName(table.name()); - - // 从sysColumns中取出我们需要比较的列的List - // 先取出name用来筛选出增加和删除的字段 - List columnNames = ClassTools.getPropertyValueList(tableColumnList, SysMysqlColumns.COLUMN_NAME_KEY); - - // 验证对比从model中解析的fieldList与从数据库查出来的columnList - // 1. 找出增加的字段 - // 2. 找出删除的字段 - // 3. 找出更新的字段 - buildAddAndRemoveAndModifyFields( - oracleTypeAndLengthMap, - modifyTableMap, - addTableMap, - removeTableMap, - dropKeyTableMap, - dropUniqueTableMap, - table, - newFieldList, - removeFieldList, - addFieldList, - modifyFieldList, - dropKeyFieldList, - dropUniqueFieldList, - tableColumnList, - columnNames); - - } - } - } - - /** - * 构建增加的删除的修改的字段 - * - * @param mySqlTypeAndLengthMap - * @param modifyTableMap - * @param addTableMap - * @param removeTableMap - * @param dropKeyTableMap - * @param dropUniqueTableMap - * @param table - * @param newFieldList - * @param removeFieldList - * @param addFieldList - * @param modifyFieldList - * @param dropKeyFieldList - * @param dropUniqueFieldList - * @param tableColumnList - * @param columnNames - */ - private void buildAddAndRemoveAndModifyFields( - Map mySqlTypeAndLengthMap, - Map> modifyTableMap, - Map> addTableMap, - Map> removeTableMap, - Map> dropKeyTableMap, - Map> dropUniqueTableMap, - Table table, - List newFieldList, - List removeFieldList, - List addFieldList, - List modifyFieldList, - List dropKeyFieldList, - List dropUniqueFieldList, - List tableColumnList, - List columnNames){ - // 1. 找出增加的字段 - // 根据数据库中表的结构和model中表的结构对比找出新增的字段 - buildNewFields(addTableMap, table, newFieldList, addFieldList, columnNames); - - // 将fieldList转成Map类型,字段名作为主键 - Map fieldMap = new HashMap(); - for (Object obj : newFieldList){ - CreateTableParam createTableParam = (CreateTableParam) obj; - fieldMap.put(createTableParam.getFieldName(), createTableParam); - } - - // 2. 找出删除的字段 - buildRemoveFields(removeTableMap, table, removeFieldList, columnNames, fieldMap); - - // 3. 找出更新的字段 - buildModifyFields( - mySqlTypeAndLengthMap, - modifyTableMap, - dropKeyTableMap, - dropUniqueTableMap, - table, - modifyFieldList, - dropKeyFieldList, - dropUniqueFieldList, - tableColumnList, - fieldMap); - } - - /** - * 根据数据库中表的结构和model中表的结构对比找出修改类型默认值等属性的字段 - * - * @param mySqlTypeAndLengthMap - * @param modifyTableMap - * @param dropKeyTableMap - * @param dropUniqueTableMap - * @param table - * @param modifyFieldList - * @param dropKeyFieldList - * @param dropUniqueFieldList - * @param tableColumnList - * @param fieldMap - */ - private void buildModifyFields( - Map mySqlTypeAndLengthMap, - Map> modifyTableMap, - Map> dropKeyTableMap, - Map> dropUniqueTableMap, - Table table, - List modifyFieldList, - List dropKeyFieldList, - List dropUniqueFieldList, - List tableColumnList, - Map fieldMap){ - for (SysMysqlColumns sysColumn : tableColumnList){ - // 数据库中有该字段时 - CreateTableParam createTableParam = fieldMap.get(sysColumn.getColumn_name()); - if (createTableParam != null) { - // 检查是否要删除已有主键和是否要删除已有唯一约束的代码必须放在其他检查的最前面 - // 原本是主键,现在不是了,那么要去做删除主键的操作 - if ("PRI".equals(sysColumn.getColumn_key()) && !createTableParam.isFieldIsKey()) { - dropKeyFieldList.add(createTableParam); - } - - // 原本是唯一,现在不是了,那么要去做删除唯一的操作 - if ("UNI".equals(sysColumn.getColumn_key()) && !createTableParam.isFieldIsUnique()) { - dropUniqueFieldList.add(createTableParam); - } - - // 验证是否有更新 - // 1.验证类型 - if (!sysColumn.getData_type().toLowerCase().equals(createTableParam.getFieldType().toLowerCase())) { - modifyFieldList.add(createTableParam); - continue; - } - // 2.验证长度 - // 3.验证小数点位数 - int length = (Integer) mySqlTypeAndLengthMap.get(createTableParam.getFieldType().toLowerCase()); - String typeAndLength = createTableParam.getFieldType().toLowerCase(); - if (length == 1) { - // 拼接出类型加长度,比如varchar(1) - typeAndLength = typeAndLength + "(" + createTableParam.getFieldLength() + ")"; - }else if (length == 2) { - // 拼接出类型加长度,比如varchar(1) - typeAndLength = typeAndLength + "(" + createTableParam.getFieldLength() + "," + createTableParam.getFieldDecimalLength() - + ")"; - } - // 判断类型+长度是否相同 - if (!sysColumn.getColumn_type().toLowerCase().equals(typeAndLength)) { - modifyFieldList.add(createTableParam); - continue; - } - - // 4.验证主键 - if (!"PRI".equals(sysColumn.getColumn_key()) && createTableParam.isFieldIsKey()) { - // 原本不是主键,现在变成了主键,那么要去做更新 - modifyFieldList.add(createTableParam); - continue; - } - - // 5.验证自增 - if ("auto_increment".equals(sysColumn.getExtra()) && !createTableParam.isFieldIsAutoIncrement()) { - modifyFieldList.add(createTableParam); - continue; - } - - // 6.验证默认值 - if (sysColumn.getColumn_default() == null || sysColumn.getColumn_default().equals("")) { - // 数据库默认值是null,model中注解设置的默认值不为NULL时,那么需要更新该字段 - if (!"NULL".equals(createTableParam.getFieldDefaultValue())) { - modifyFieldList.add(createTableParam); - continue; - } - }else if (!sysColumn.getColumn_default().equals(createTableParam.getFieldDefaultValue())) { - // 两者不相等时,需要更新该字段 - modifyFieldList.add(createTableParam); - continue; - } - - // 7.验证是否可以为null(主键不参与是否为null的更新) - if (sysColumn.getIs_nullable().equals("NO") && !createTableParam.isFieldIsKey()) { - if (createTableParam.isFieldIsNull()) { - // 一个是可以一个是不可用,所以需要更新该字段 - modifyFieldList.add(createTableParam); - continue; - } - }else if (sysColumn.getIs_nullable().equals("YES") && !createTableParam.isFieldIsKey()) { - if (!createTableParam.isFieldIsNull()) { - // 一个是可以一个是不可用,所以需要更新该字段 - modifyFieldList.add(createTableParam); - continue; - } - } - - // 8.验证是否唯一 - if (!"UNI".equals(sysColumn.getColumn_key()) && createTableParam.isFieldIsUnique()) { - // 原本不是唯一,现在变成了唯一,那么要去做更新 - modifyFieldList.add(createTableParam); - continue; - } - - } - } - - if (modifyFieldList.size() > 0) { - modifyTableMap.put(table.name(), modifyFieldList); - } - - if (dropKeyFieldList.size() > 0) { - dropKeyTableMap.put(table.name(), dropKeyFieldList); - } - - if (dropUniqueFieldList.size() > 0) { - dropUniqueTableMap.put(table.name(), dropUniqueFieldList); - } - } - - /** - * 根据数据库中表的结构和model中表的结构对比找出删除的字段 - * - * @param removeTableMap - * @param table - * @param removeFieldList - * @param columnNames - * 数据库中的结构 - * @param fieldMap - * model中的字段,字段名为key - */ - private void buildRemoveFields( - Map> removeTableMap, - Table table, - List removeFieldList, - List columnNames, - Map fieldMap){ - for (String fieldNm : columnNames){ - // 判断该字段在新的model结构中是否存在 - if (fieldMap.get(fieldNm) == null) { - // 不存在,做删除处理 - removeFieldList.add(fieldNm); - } - } - if (removeFieldList.size() > 0) { - removeTableMap.put(table.name(), removeFieldList); - } - } - - /** - * 根据数据库中表的结构和model中表的结构对比找出新增的字段 - * - * @param addTableMap - * @param table - * @param newFieldList - * model中的结构 - * @param addFieldList - * @param columnNames - * 数据库中的结构 - */ - private void buildNewFields( - Map> addTableMap, - Table table, - List newFieldList, - List addFieldList, - List columnNames){ - for (Object obj : newFieldList){ - CreateTableParam createTableParam = (CreateTableParam) obj; - // 循环新的model中的字段,判断是否在数据库中已经存在 - if (!columnNames.contains(createTableParam.getFieldName())) { - // 不存在,表示要在数据库中增加该字段 - addFieldList.add(obj); - } - } - if (addFieldList.size() > 0) { - addTableMap.put(table.name(), addFieldList); - } - } - - /** - * 迭代出所有model的所有fields存到newFieldList中 - * - * @param mySqlTypeAndLengthMap - * mysql数据类型和对应几个长度的map - * @param clas - * 准备做为创建表依据的class - * @param newFieldList - */ - private void tableFieldsConstruct(Map mySqlTypeAndLengthMap,Class clas,List newFieldList){ - Field[] fields = clas.getDeclaredFields(); - - // 判断是否有父类,如果有拉取父类的field,这里只支持多层继承 - fields = recursionParents(clas, fields); - - for (Field field : fields){ - // 判断方法中是否有指定注解类型的注解 - boolean hasAnnotation = field.isAnnotationPresent(Column.class); - if (hasAnnotation) { - // 根据注解类型返回方法的指定类型注解 - Column column = field.getAnnotation(Column.class); - CreateTableParam param = new CreateTableParam(); - param.setFieldName(column.name()); - param.setFieldType(column.type().toLowerCase()); - param.setFieldLength(column.length()); - param.setFieldDecimalLength(column.decimalLength()); - // 主键或唯一键时设置必须不为null - if (column.isKey() || column.isUnique()) { - param.setFieldIsNull(false); - }else{ - param.setFieldIsNull(column.isNull()); - } - param.setFieldIsKey(column.isKey()); - param.setFieldIsAutoIncrement(column.isAutoIncrement()); - param.setFieldDefaultValue(column.defaultValue()); - param.setFieldIsUnique(column.isUnique()); - int length = (Integer) mySqlTypeAndLengthMap.get(column.type().toLowerCase()); - param.setFileTypeLength(length); - newFieldList.add(param); - } - } - } - - /** - * 递归扫描父类的fields - * @param clas - * @param fields - */ - @SuppressWarnings("rawtypes") - private Field[] recursionParents(Class clas, Field[] fields) { - if(clas.getSuperclass()!=null){ - Class clsSup = clas.getSuperclass(); - fields = (Field[]) ArrayUtils.addAll(fields,clsSup.getDeclaredFields()); - fields = recursionParents(clsSup, fields); - } - return fields; - } - - /** - * 根据传入的map创建或修改表结构 - * - * @param newTableMap - * @param modifyTableMap - * @param addTableMap - * @param removeTableMap - * @param dropKeyTableMap - */ - private void createOrModifyTableConstruct( - Map> newTableMap, - Map> modifyTableMap, - Map> addTableMap, - Map> removeTableMap, - Map> dropKeyTableMap, - Map> dropUniqueTableMap){ - // 1. 创建表 - createTableByMap(newTableMap); - // 2. 删除要变更主键的表的原来的字段的主键 - dropFieldsKeyByMap(dropKeyTableMap); - // 3. 删除要变更唯一约束的表的原来的字段的唯一约束 - dropFieldsUniqueByMap(dropUniqueTableMap); - // 4. 添加新的字段 - addFieldsByMap(addTableMap); - // 5. 删除字段 - removeFieldsByMap(removeTableMap); - // 6. 修改字段类型等 - modifyFieldsByMap(modifyTableMap); - - } - - /** - * 根据map结构修改表中的字段类型等 - * - * @param modifyTableMap - */ - private void modifyFieldsByMap(Map> modifyTableMap){ - // 做修改字段操作 - if (modifyTableMap.size() > 0) { - for (Entry> entry : modifyTableMap.entrySet()){ - for (Object obj : entry.getValue()){ - Map map = new HashMap(); - map.put(entry.getKey(), obj); - CreateTableParam fieldProperties = (CreateTableParam) obj; - log.info("开始修改表" + entry.getKey() + "中的字段" + fieldProperties.getFieldName()); - createMysqlTablesMapper.modifyTableField(map); - log.info("完成修改表" + entry.getKey() + "中的字段" + fieldProperties.getFieldName()); - } - } - } - } - - /** - * 根据map结构删除表中的字段 - * - * @param removeTableMap - */ - private void removeFieldsByMap(Map> removeTableMap){ - // 做删除字段操作 - if (removeTableMap.size() > 0) { - for (Entry> entry : removeTableMap.entrySet()){ - for (Object obj : entry.getValue()){ - Map map = new HashMap(); - map.put(entry.getKey(), obj); - String fieldName = (String) obj; - log.info("开始删除表" + entry.getKey() + "中的字段" + fieldName); - createMysqlTablesMapper.removeTableField(map); - log.info("完成删除表" + entry.getKey() + "中的字段" + fieldName); - } - } - } - } - - /** - * 根据map结构对表中添加新的字段 - * - * @param addTableMap - */ - private void addFieldsByMap(Map> addTableMap){ - // 做增加字段操作 - if (addTableMap.size() > 0) { - for (Entry> entry : addTableMap.entrySet()){ - for (Object obj : entry.getValue()){ - Map map = new HashMap(); - map.put(entry.getKey(), obj); - CreateTableParam fieldProperties = (CreateTableParam) obj; - log.info("开始为表" + entry.getKey() + "增加字段" + fieldProperties.getFieldName()); - createMysqlTablesMapper.addTableField(map); - log.info("完成为表" + entry.getKey() + "增加字段" + fieldProperties.getFieldName()); - } - } - } - } - - /** - * 根据map结构删除要变更表中字段的主键 - * - * @param dropKeyTableMap - */ - private void dropFieldsKeyByMap(Map> dropKeyTableMap){ - // 先去做删除主键的操作,这步操作必须在增加和修改字段之前! - if (dropKeyTableMap.size() > 0) { - for (Entry> entry : dropKeyTableMap.entrySet()){ - for (Object obj : entry.getValue()){ - Map map = new HashMap(); - map.put(entry.getKey(), obj); - CreateTableParam fieldProperties = (CreateTableParam) obj; - log.info("开始为表" + entry.getKey() + "删除主键" + fieldProperties.getFieldName()); - createMysqlTablesMapper.dropKeyTableField(map); - log.info("完成为表" + entry.getKey() + "删除主键" + fieldProperties.getFieldName()); - } - } - } - } - - /** - * 根据map结构删除要变更表中字段的唯一约束 - * - * @param dropUniqueTableMap - */ - private void dropFieldsUniqueByMap(Map> dropUniqueTableMap){ - // 先去做删除唯一约束的操作,这步操作必须在增加和修改字段之前! - if (dropUniqueTableMap.size() > 0) { - for (Entry> entry : dropUniqueTableMap.entrySet()){ - for (Object obj : entry.getValue()){ - Map map = new HashMap(); - map.put(entry.getKey(), obj); - CreateTableParam fieldProperties = (CreateTableParam) obj; - log.info("开始为表" + entry.getKey() + "删除唯一约束" + fieldProperties.getFieldName()); - createMysqlTablesMapper.dropUniqueTableField(map); - log.info("完成为表" + entry.getKey() + "删除唯一约束" + fieldProperties.getFieldName()); - log.info("开始修改表" + entry.getKey() + "中的字段" + fieldProperties.getFieldName()); - createMysqlTablesMapper.modifyTableField(map); - log.info("完成修改表" + entry.getKey() + "中的字段" + fieldProperties.getFieldName()); - } - } - } - } - - /** - * 根据map结构创建表 - * - * @param newTableMap - */ - private void createTableByMap(Map> newTableMap){ - // 做创建表操作 - if (newTableMap.size() > 0) { - for (Entry> entry : newTableMap.entrySet()){ - Map> map = new HashMap>(); - map.put(entry.getKey(), entry.getValue()); - log.info("开始创建表:" + entry.getKey()); - createMysqlTablesMapper.createTable(map); - log.info("完成创建表:" + entry.getKey()); - } - } - } - - /** - * 获取Oracle的类型,以及类型需要设置几个长度,这里构建成map的样式 构建Map(字段名(小写),需要设置几个长度(0表示不需要设置,1表示需要设置一个,2表示需要设置两个)) - */ - public Map oracleTypeAndLengthMap(){ - Field[] fields = OracleTypeConstant.class.getDeclaredFields(); - Map map = new HashMap(); - for (Field field : fields){ - LengthCount lengthCount = field.getAnnotation(LengthCount.class); - map.put(field.getName().toLowerCase(), lengthCount.LengthCount()); - } - return map; + // TODO: 暂时还没有写 } } diff --git a/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/utils/ClassTools.java b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/utils/ClassTools.java index c4c00af..1d59074 100644 --- a/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/utils/ClassTools.java +++ b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/utils/ClassTools.java @@ -27,8 +27,8 @@ public class ClassTools{ /** * 从包package中获取所有的Class * - * @param pack - * @return + * @param pack 扫描的包 + * @return 该包下的class */ public static Set> getClasses(String pack){ -- Gitee From e597322869debec95df68e6cef7332bacee56564 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 3 Nov 2017 18:52:11 +0800 Subject: [PATCH 25/34] [maven-release-plugin] prepare release head --- mybatis-enhance-actable/pom.xml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/mybatis-enhance-actable/pom.xml b/mybatis-enhance-actable/pom.xml index 0d1d51c..2827cf3 100644 --- a/mybatis-enhance-actable/pom.xml +++ b/mybatis-enhance-actable/pom.xml @@ -1,5 +1,4 @@ - + org.sonatype.oss oss-parent @@ -9,7 +8,7 @@ 4.0.0 com.gitee.sunchenbin.mybatis.actable mybatis-enhance-actable - 0.0.1-SNAPSHOT + head 4.1.4.RELEASE @@ -170,7 +169,7 @@ scm:git:git@gitee.com:sunchenbin/mybatis-enhance.git scm:git:git@gitee.com:sunchenbin/mybatis-enhance.git https://gitee.com/sunchenbin/mybatis-enhance - HEAD + head -- Gitee From d454a87db4e95b347f1f4f541aa61e90f33921a1 Mon Sep 17 00:00:00 2001 From: "chenbin.sun" Date: Fri, 3 Nov 2017 19:08:24 +0800 Subject: [PATCH 26/34] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mybatis-enhance-actable/pom.xml | 382 ++++++++++++++++---------------- 1 file changed, 191 insertions(+), 191 deletions(-) diff --git a/mybatis-enhance-actable/pom.xml b/mybatis-enhance-actable/pom.xml index 2827cf3..12f4e7c 100644 --- a/mybatis-enhance-actable/pom.xml +++ b/mybatis-enhance-actable/pom.xml @@ -1,192 +1,192 @@ - - - org.sonatype.oss - oss-parent - 7 - - - 4.0.0 - com.gitee.sunchenbin.mybatis.actable - mybatis-enhance-actable - head - - - 4.1.4.RELEASE - - - - - - - org.springframework - spring-context - ${spring.version} - provided - - - - org.springframework - spring-tx - ${spring.version} - provided - - - - org.slf4j - slf4j-api - 1.7.12 - provided - - - - org.mybatis.scripting - mybatis-velocity - 1.2 - provided - - - - - - - - src/main/java - - **/*.properties - **/*.xml - - false - - - - - - org.apache.maven.plugins - maven-source-plugin - 2.2.1 - - - attach-sources - package - - jar-no-fork - - - - - - - - org.apache.maven.plugins - maven-javadoc-plugin - 2.9.1 - - UTF-8 - UTF-8 - - - - attach-javadocs - package - - jar - - - - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.0 - - 1.6 - 1.6 - true - true - UTF-8 - true - - - - - - org.apache.maven.plugins - maven-surefire-plugin - - - /usr/local/lib - - - - - - org.apache.maven.plugins - maven-release-plugin - 2.5.1 - - - - - com.gitee.sunchenbin.mybatis.actable:mybatis-enhance-actable - A.CTable is a Maven project based on Spring and Mybatis, which enhances the function of Mybatis - https://gitee.com/sunchenbin/mybatis-enhance - - - - The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - actable - - - - - - sunchenbin - 458757617@qq.com - sunchenbin - https://gitee.com/sunchenbin/mybatis-enhance - - - - - scm:git:git@gitee.com:sunchenbin/mybatis-enhance.git - scm:git:git@gitee.com:sunchenbin/mybatis-enhance.git - https://gitee.com/sunchenbin/mybatis-enhance - head - - - - - - oss - OSS Snapshots Repository - - https://oss.sonatype.org/content/repositories/snapshots/ - - - oss - OSS Staging Repository - - https://oss.sonatype.org/service/local/staging/deploy/maven2/ - - - - + + + org.sonatype.oss + oss-parent + 7 + + + 4.0.0 + com.gitee.sunchenbin.mybatis.actable + mybatis-enhance-actable + head + + + 4.1.4.RELEASE + + + + + + + org.springframework + spring-context + ${spring.version} + provided + + + + org.springframework + spring-tx + ${spring.version} + provided + + + + org.slf4j + slf4j-api + 1.7.12 + provided + + + + org.mybatis.scripting + mybatis-velocity + 1.2 + provided + + + + + + + + src/main/java + + **/*.properties + **/*.xml + + false + + + + + + org.apache.maven.plugins + maven-source-plugin + 2.2.1 + + + attach-sources + package + + jar-no-fork + + + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + 2.9.1 + + UTF-8 + UTF-8 + + + + attach-javadocs + package + + jar + + + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.0 + + 1.6 + 1.6 + true + true + UTF-8 + true + + + + + + org.apache.maven.plugins + maven-surefire-plugin + + + /usr/local/lib + + + + + + org.apache.maven.plugins + maven-release-plugin + 2.5.1 + + + + + com.gitee.sunchenbin.mybatis.actable:mybatis-enhance-actable + A.CTable is a Maven project based on Spring and Mybatis, which enhances the function of Mybatis + https://gitee.com/sunchenbin/mybatis-enhance + + + + The Apache Software License, Version 2.0 + http://www.apache.org/licenses/LICENSE-2.0.txt + actable + + + + + + sunchenbin + 458757617@qq.com + sunchenbin + https://gitee.com/sunchenbin/mybatis-enhance + + + + + scm:git:git@gitee.com:sunchenbin/mybatis-enhance.git + scm:git:git@gitee.com:sunchenbin/mybatis-enhance.git + https://gitee.com/sunchenbin/mybatis-enhance + head + + + + + + oss + OSS Snapshots Repository + + https://oss.sonatype.org/content/repositories/snapshots/ + + + oss + OSS Staging Repository + + https://oss.sonatype.org/service/local/staging/deploy/maven2/ + + + + \ No newline at end of file -- Gitee From 80db6be0e27e2e1022e75fcd5a8ab44b2350daeb Mon Sep 17 00:00:00 2001 From: "chenbin.sun" Date: Fri, 3 Nov 2017 19:22:34 +0800 Subject: [PATCH 27/34] update pom --- mybatis-enhance-actable/pom.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/mybatis-enhance-actable/pom.xml b/mybatis-enhance-actable/pom.xml index 12f4e7c..3c215cc 100644 --- a/mybatis-enhance-actable/pom.xml +++ b/mybatis-enhance-actable/pom.xml @@ -169,7 +169,6 @@ scm:git:git@gitee.com:sunchenbin/mybatis-enhance.git scm:git:git@gitee.com:sunchenbin/mybatis-enhance.git https://gitee.com/sunchenbin/mybatis-enhance - head -- Gitee From dd0f60c874c82b4ef4308964869da5249d56fe70 Mon Sep 17 00:00:00 2001 From: "chenbin.sun" Date: Fri, 3 Nov 2017 19:29:54 +0800 Subject: [PATCH 28/34] =?UTF-8?q?=E8=BF=98=E5=8E=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mybatis-enhance-actable/pom.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/mybatis-enhance-actable/pom.xml b/mybatis-enhance-actable/pom.xml index 3c215cc..12f4e7c 100644 --- a/mybatis-enhance-actable/pom.xml +++ b/mybatis-enhance-actable/pom.xml @@ -169,6 +169,7 @@ scm:git:git@gitee.com:sunchenbin/mybatis-enhance.git scm:git:git@gitee.com:sunchenbin/mybatis-enhance.git https://gitee.com/sunchenbin/mybatis-enhance + head -- Gitee From 5647d2477bc39feea60197c2867b9974782e5d64 Mon Sep 17 00:00:00 2001 From: "chenbin.sun" Date: Fri, 3 Nov 2017 19:34:58 +0800 Subject: [PATCH 29/34] =?UTF-8?q?=E4=BF=AE=E6=94=B9tag?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mybatis-enhance-actable/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mybatis-enhance-actable/pom.xml b/mybatis-enhance-actable/pom.xml index 12f4e7c..ce67b29 100644 --- a/mybatis-enhance-actable/pom.xml +++ b/mybatis-enhance-actable/pom.xml @@ -169,7 +169,7 @@ scm:git:git@gitee.com:sunchenbin/mybatis-enhance.git scm:git:git@gitee.com:sunchenbin/mybatis-enhance.git https://gitee.com/sunchenbin/mybatis-enhance - head + 1.0 -- Gitee From 62994465ed3a775aee9f264afb50dd7fd13fb293 Mon Sep 17 00:00:00 2001 From: "chenbin.sun" Date: Mon, 13 Nov 2017 11:30:28 +0800 Subject: [PATCH 30/34] =?UTF-8?q?pom=E6=96=87=E4=BB=B6=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mybatis-enhance-actable/pom.xml | 67 +++++++++++++++++---------------- 1 file changed, 34 insertions(+), 33 deletions(-) diff --git a/mybatis-enhance-actable/pom.xml b/mybatis-enhance-actable/pom.xml index ce67b29..9da0335 100644 --- a/mybatis-enhance-actable/pom.xml +++ b/mybatis-enhance-actable/pom.xml @@ -1,14 +1,43 @@ + + 4.0.0 + com.gitee.sunchenbin.mybatis.actable + mybatis-enhance-actable + 1.0.0 + org.sonatype.oss oss-parent 7 - - 4.0.0 - com.gitee.sunchenbin.mybatis.actable - mybatis-enhance-actable - head + + com.gitee.sunchenbin.mybatis.actable:mybatis-enhance-actable + A.CTable is a Maven project based on Spring and Mybatis, which enhances the function of Mybatis + https://gitee.com/sunchenbin/mybatis-enhance + + + + The Apache Software License, Version 2.0 + http://www.apache.org/licenses/LICENSE-2.0.txt + actable + + + + + + sunchenbin + 458757617@qq.com + sunchenbin + https://gitee.com/sunchenbin/mybatis-enhance + + + + + scm:git:git@gitee.com:sunchenbin/mybatis-enhance.git + scm:git:git@gitee.com:sunchenbin/mybatis-enhance.git + https://gitee.com/sunchenbin/mybatis-enhance + 1.0 + 4.1.4.RELEASE @@ -143,34 +172,6 @@ - - com.gitee.sunchenbin.mybatis.actable:mybatis-enhance-actable - A.CTable is a Maven project based on Spring and Mybatis, which enhances the function of Mybatis - https://gitee.com/sunchenbin/mybatis-enhance - - - - The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - actable - - - - - - sunchenbin - 458757617@qq.com - sunchenbin - https://gitee.com/sunchenbin/mybatis-enhance - - - - - scm:git:git@gitee.com:sunchenbin/mybatis-enhance.git - scm:git:git@gitee.com:sunchenbin/mybatis-enhance.git - https://gitee.com/sunchenbin/mybatis-enhance - 1.0 - -- Gitee From f32a940b98dc7e9089867110cc053f52a366c3db Mon Sep 17 00:00:00 2001 From: "chenbin.sun" Date: Mon, 13 Nov 2017 14:28:34 +0800 Subject: [PATCH 31/34] =?UTF-8?q?pom=E6=96=87=E4=BB=B6=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mybatis-enhance-actable/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mybatis-enhance-actable/pom.xml b/mybatis-enhance-actable/pom.xml index 9da0335..8d44171 100644 --- a/mybatis-enhance-actable/pom.xml +++ b/mybatis-enhance-actable/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.gitee.sunchenbin.mybatis.actable mybatis-enhance-actable - 1.0.0 + 1.0.1 org.sonatype.oss -- Gitee From c519e3871b3e0c59bf2037be482ca03a62c7f671 Mon Sep 17 00:00:00 2001 From: sun5769675 Date: Mon, 13 Nov 2017 18:51:27 +0800 Subject: [PATCH 32/34] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index dde06d2..6267158 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,13 @@ A.C.Table是采用了Spring、Mybatis技术的Maven结构,详细介绍如下 **使用步骤方法** 1. 使用该功能的项目需要依赖mybatis-enhance-actable-0.0.1-SNAPSHOT.jar + + 已上传至maven中央仓库,使用时pom文件中增加如下依赖 + + com.gitee.sunchenbin.mybatis.actable + mybatis-enhance-actable + 1.0.0 + 2. 在你的web项目上创建个目录比如config下面创建个文件autoCreateTable.properties文件的内容如下: mybatis.table.auto=update -- Gitee From 57277e7384ffed6e602bcf771948c935db4e7685 Mon Sep 17 00:00:00 2001 From: sun5769675 Date: Mon, 13 Nov 2017 18:52:04 +0800 Subject: [PATCH 33/34] =?UTF-8?q?=E6=9B=B4=E6=96=B0maven=E4=B8=AD=E5=A4=AE?= =?UTF-8?q?=E4=BB=93=E5=BA=93=E7=9A=84=E4=BE=9D=E8=B5=96=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 6267158..708093d 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ A.C.Table是采用了Spring、Mybatis技术的Maven结构,详细介绍如下 com.gitee.sunchenbin.mybatis.actable mybatis-enhance-actable - 1.0.0 + 1.0.1 2. 在你的web项目上创建个目录比如config下面创建个文件autoCreateTable.properties文件的内容如下: -- Gitee From 82a7ea4565df1e8fe5689acd22190de17431fcc0 Mon Sep 17 00:00:00 2001 From: sun5769675 Date: Wed, 15 Nov 2017 15:07:19 +0800 Subject: [PATCH 34/34] =?UTF-8?q?=E4=BE=9D=E8=B5=96=E8=AF=B4=E6=98=8E?= =?UTF-8?q?=E9=94=99=E8=AF=AF=E5=9C=B0=E6=96=B9=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 708093d..ab11abb 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ A.C.Table是采用了Spring、Mybatis技术的Maven结构,详细介绍如下 5. 再次声明A.C.Table目前仅支持mysql数据库 **使用步骤方法** -1. 使用该功能的项目需要依赖mybatis-enhance-actable-0.0.1-SNAPSHOT.jar +1. 使用该功能的项目需要依赖mybatis-enhance-actable-1.0.1.jar 已上传至maven中央仓库,使用时pom文件中增加如下依赖 -- Gitee