diff --git a/mybatis-enhance-actable/.classpath b/mybatis-enhance-actable/.classpath index 4753f69fbc0a7a41a162085954eaa9967ccd5077..e362f3bad1f53a53403035409ec4acb3df65f250 100644 --- a/mybatis-enhance-actable/.classpath +++ b/mybatis-enhance-actable/.classpath @@ -1,27 +1,41 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/mybatis-enhance-actable/.project b/mybatis-enhance-actable/.project index b38abaaf6b928272682078716dfd956c350623bf..a1411554806a31c512452830ea6903b44bcacd6a 100644 --- a/mybatis-enhance-actable/.project +++ b/mybatis-enhance-actable/.project @@ -1,7 +1,7 @@ mybatis-enhance-actable - + NO_M2ECLIPSE_SUPPORT: Project files created with the maven-eclipse-plugin are not supported in M2Eclipse. @@ -25,8 +25,14 @@ + + org.springframework.ide.eclipse.core.springbuilder + + + + org.springframework.ide.eclipse.core.springnature org.eclipse.jem.workbench.JavaEMFNature org.eclipse.wst.common.modulecore.ModuleCoreNature org.eclipse.jdt.core.javanature diff --git a/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/annotation/Column.java b/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/annotation/Column.java index 99856b2d8ca35bd67e7ca0f7b0f39e2a287c6c2b..345887ab0ce124ae1fdfebb43bbdaf7bc943de4e 100644 --- a/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/annotation/Column.java +++ b/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/annotation/Column.java @@ -85,4 +85,10 @@ public @interface Column{ * @return */ public boolean isUnique() default false; + + /** + * 字段注释 + * @return + */ + public String comment() default ""; } diff --git a/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/annotation/Table.java b/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/annotation/Table.java index b2885030130720261851d21c901847c2c7c1682c..fb41ad0eb0cd98d4c4b82eb05f9cb04db3285625 100644 --- a/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/annotation/Table.java +++ b/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/annotation/Table.java @@ -29,4 +29,10 @@ public @interface Table { * @return */ public String name(); + + /** + * 说明 + * @return + */ + public String comment() default ""; } diff --git a/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/command/CreateTableParam.java b/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/command/CreateTableParam.java index ea52bbd8d4b1b370bab3ab669c6173fdee4a3cdc..f39f0d30747116d14dc8f1049295bb501c924743 100644 --- a/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/command/CreateTableParam.java +++ b/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/command/CreateTableParam.java @@ -57,6 +57,20 @@ public class CreateTableParam{ * 值是否唯一 */ private boolean fieldIsUnique; + + /** + * 字段注释 + */ + private String fieldComment; + + + public String getFieldComment() { + return fieldComment; + } + + public void setFieldComment(String fieldComment) { + this.fieldComment = fieldComment; + } public String getFieldName(){ return fieldName; 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 e935cf12f5511714c807e44055f5fcaf5d0c6a07..1d4324085ec0c235f91cced6d133430f1de49e4e 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 @@ -40,7 +40,7 @@ public class SysMysqlColumns { * 是否为自动增长,是的话为auto_increment */ public static final String EXTRA = "extra"; - + private String table_catalog; /** * 库名 diff --git a/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/constants/MySqlTypeConstant.java b/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/constants/MySqlTypeConstant.java index 8aa1d6fa70388c763a0b3899ed5cb7f8b8ae9cad..ac8e44a0a4f6be297c000087502c3b830fbb5e34 100644 --- a/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/constants/MySqlTypeConstant.java +++ b/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/constants/MySqlTypeConstant.java @@ -41,4 +41,10 @@ public class MySqlTypeConstant { */ @LengthCount public static final String BIGINT = "bigint"; + + @LengthCount + public static final String TINYINT = "tinyint"; + + @LengthCount + public static final String TIMESTAMP = "timestamp"; } 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/mybatis/enhance/store/dao/common/BaseMysqlCRUDMapper.java index a42e0fb180ed8869337a661bb886fc5ad878638b..ae585c676cf9c3f670a68745c591308ac48a384b 100644 --- a/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/dao/common/BaseMysqlCRUDMapper.java +++ b/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/dao/common/BaseMysqlCRUDMapper.java @@ -17,13 +17,13 @@ public interface BaseMysqlCRUDMapper { * 保存 * @param tableMap */ - public void save(@Param("tableMap") Map> tableMap); + public long save(@Param("tableMap") Map> tableMap); /** * 更新 * @param tableMap */ - public void update(@Param("tableMap") Map> tableMap); + public long update(@Param("tableMap") Map> tableMap); /** * 删除 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/mybatis/enhance/store/dao/system/CreateMysqlTablesMapper.java index 80f8050a48c3c04519f8f93153fb326468ff2326..fc72949bb23579e671830556666054c82a2fbe08 100644 --- a/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/dao/system/CreateMysqlTablesMapper.java +++ b/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/dao/system/CreateMysqlTablesMapper.java @@ -6,6 +6,7 @@ import java.util.Map; import org.apache.ibatis.annotations.Param; import com.mybatis.enhance.store.command.SysMysqlColumns; +import com.mybatis.enhance.store.entities.TableEntity; /** @@ -19,7 +20,9 @@ public interface CreateMysqlTablesMapper { * 根据结构注解解析出来的信息创建表 * @param tableMap */ - public void createTable(@Param("tableMap") Map> tableMap); +// public void createTable(@Param("tableMap") Map> tableMap); + public void createTable(@Param("tableMap") Map tableMap); + /** * 根据表名查询表在库中是否存在,存在返回1,不存在返回0 diff --git a/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/entities/TableEntity.java b/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/entities/TableEntity.java new file mode 100644 index 0000000000000000000000000000000000000000..0ce940407d280efb5492328ab58e077629d8982a --- /dev/null +++ b/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/entities/TableEntity.java @@ -0,0 +1,48 @@ +package com.mybatis.enhance.store.entities; + +import java.util.List; + +public class TableEntity { + + private String name; + + private String comment; + + private List fieldList; + + public TableEntity(){} + + public TableEntity(String name, String comment, List fieldList) { + super(); + this.name = name; + this.comment = comment; + this.fieldList = fieldList; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getComment() { + return comment; + } + + public void setComment(String comment) { + this.comment = comment; + } + + public List getFieldList() { + return fieldList; + } + + public void setFieldList(List fieldList) { + this.fieldList = fieldList; + } + + + +} 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 2d27559d9103afcc34067d5e3ff809398c84d70b..4dc4831b54e169b4c00903d7eb844c267fdf5d24 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 @@ -8,7 +8,7 @@ public interface BaseMysqlCRUDManager{ * 保存,如果主键有值则进行更新操作 * @param t */ - void save(T t); + long save(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 4d962fc7ef4cefc3ba2beca66df45530be5f699b..f0ee836260c03a424ccda0978aed908163b7abfb 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 @@ -27,12 +27,12 @@ public class BaseMysqlCRUDManagerImpl implements BaseMysqlCRUDManager{ @Autowired private BaseMysqlCRUDMapper baseMysqlCRUDMapper; - public void save(Object obj){ + public long save(Object obj){ boolean isSave = true; Table tableName = obj.getClass().getAnnotation(Table.class); if ((tableName == null) || (tableName.name() == null || tableName.name() == "")) { log.error("必须使用model中的对象!"); - return; + return 0; } Map> tableMap = new HashMap>(); Map dataMap = new HashMap(); @@ -60,7 +60,8 @@ public class BaseMysqlCRUDManagerImpl implements BaseMysqlCRUDManager{ continue; } - dataMap.put(field.getName(), field.get(obj)); +// dataMap.put(field.getName(), field.get(obj)); + dataMap.put(column.name(), field.get(obj)); }catch (IllegalArgumentException e){ e.printStackTrace(); }catch (IllegalAccessException e){ @@ -70,12 +71,12 @@ public class BaseMysqlCRUDManagerImpl implements BaseMysqlCRUDManager{ if (isSave) { tableMap.put(tableName.name(), dataMap); // 执行保存操作 - baseMysqlCRUDMapper.save(tableMap); + return baseMysqlCRUDMapper.save(tableMap); }else{ dataMap.put(KEYFIELDMAP, keyFieldMap); tableMap.put(tableName.name(), dataMap); // 执行更新操作根据主键 - baseMysqlCRUDMapper.update(tableMap); + return baseMysqlCRUDMapper.update(tableMap); } } @@ -158,7 +159,8 @@ public class BaseMysqlCRUDManagerImpl implements BaseMysqlCRUDManager{ log.info("该field没有配置注解不是表中在字段!"); continue; } - String name = field.getName(); +// String name = field.getName(); + String name = column.name(); field.set(newInstance, map.get(name)); } list.add(newInstance); 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 4a8671916728f860ed3612a1a366b9c46b6b6dc7..35b7d249a714644883a3315f70ab130a06d3b88b 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 @@ -2,6 +2,7 @@ package com.mybatis.enhance.store.manager.system; import java.lang.reflect.Field; import java.util.ArrayList; +import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -25,6 +26,7 @@ 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.entities.TableEntity; import com.mybatis.enhance.store.utils.ClassTools; /** @@ -66,7 +68,8 @@ public class SysMysqlCreateTableManagerImpl implements SysMysqlCreateTableManage Set> classes = ClassTools.getClasses(pack); // 用于存需要创建的表名+结构 - Map> newTableMap = new HashMap>(); +// Map> newTableMap = new HashMap>(); + Map newTableMap = new HashMap(); // 用于存需要更新字段类型等的表名+结构 Map> modifyTableMap = new HashMap>(); @@ -105,7 +108,7 @@ public class SysMysqlCreateTableManagerImpl implements SysMysqlCreateTableManage private void allTableMapConstruct( Map mySqlTypeAndLengthMap, Set> classes, - Map> newTableMap, + Map newTableMap, Map> modifyTableMap, Map> addTableMap, Map> removeTableMap, @@ -117,8 +120,12 @@ public class SysMysqlCreateTableManagerImpl implements SysMysqlCreateTableManage } for (Class clas : classes){ - + Table table = clas.getAnnotation(Table.class); + + if (table == null) { + continue; + } // 用于存新增表的字段 List newFieldList = new ArrayList(); @@ -146,7 +153,9 @@ public class SysMysqlCreateTableManagerImpl implements SysMysqlCreateTableManage // 不存在时 if (exist == 0) { - newTableMap.put(table.name(), newFieldList); + TableEntity tableEntity = new TableEntity(table.name(), table.comment(), newFieldList); +// newTableMap.put(table.name(), newFieldList); + newTableMap.put(table.name(), tableEntity); }else{ // 已存在时理论上做修改的操作,这里查出该表的结构 List tableColumnList = createMysqlTablesMapper.findTableEnsembleByTableName(table.name()); @@ -354,6 +363,13 @@ public class SysMysqlCreateTableManagerImpl implements SysMysqlCreateTableManage modifyFieldList.add(createTableParam); continue; } + + // 9.验证字段注释 + if ((sysColumn.getColumn_comment() == null) || + (sysColumn.getColumn_comment() != null && !sysColumn.getColumn_comment().equals(createTableParam.getFieldComment()))) { + // 原本没有注释,或者注释不一样,则要去更新 + modifyFieldList.add(createTableParam); + } } } @@ -445,7 +461,7 @@ public class SysMysqlCreateTableManagerImpl implements SysMysqlCreateTableManage // 判断是否有父类,如果有拉取父类的field,这里只支持一层继承 if(clas.getSuperclass()!=null){ Class clsSup = clas.getSuperclass(); - fields = (Field[]) ArrayUtils.addAll(fields,clsSup.getDeclaredFields()); + fields = (Field[]) ArrayUtils.addAll(clsSup.getDeclaredFields(), fields); } for (Field field : fields){ @@ -466,6 +482,7 @@ public class SysMysqlCreateTableManagerImpl implements SysMysqlCreateTableManage param.setFieldIsUnique(column.isUnique()); int length = (Integer) mySqlTypeAndLengthMap.get(column.type().toLowerCase()); param.setFileTypeLength(length); + param.setFieldComment(column.comment()); newFieldList.add(param); } } @@ -481,7 +498,8 @@ public class SysMysqlCreateTableManagerImpl implements SysMysqlCreateTableManage * @param dropKeyTableMap */ private void createOrModifyTableConstruct( - Map> newTableMap, +// Map> newTableMap, + Map newTableMap, Map> modifyTableMap, Map> addTableMap, Map> removeTableMap, @@ -615,11 +633,12 @@ public class SysMysqlCreateTableManagerImpl implements SysMysqlCreateTableManage * * @param newTableMap */ - private void createTableByMap(Map> newTableMap){ + private void createTableByMap(Map newTableMap){ +// private void createTableByMap(Map> newTableMap){ // 做创建表操作 if (newTableMap.size() > 0) { - for (Entry> entry : newTableMap.entrySet()){ - Map> map = new HashMap>(); + for (Entry entry : newTableMap.entrySet()){ + Map map = new HashMap(); map.put(entry.getKey(), entry.getValue()); log.info("开始创建表:" + entry.getKey()); createMysqlTablesMapper.createTable(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/mybatis/enhance/store/mapping/common/BaseMysqlCRUDMapper.xml index 7dba3c1484219be054ffe14938c294a298e27a4a..2fce3feb71e7eda61f562d30d9bc9afae71bca84 100644 --- a/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/mapping/common/BaseMysqlCRUDMapper.xml +++ b/mybatis-enhance-actable/src/main/java/com/mybatis/enhance/store/mapping/common/BaseMysqlCRUDMapper.xml @@ -2,7 +2,7 @@ - + - + - + diff --git a/mybatis-enhance-actable/target/classes/META-INF/MANIFEST.MF b/mybatis-enhance-actable/target/classes/META-INF/MANIFEST.MF index edbb9490b96ef6e97c02a1188427d8a9cf3981bb..bfd7f959ff930813db08654aa45e74bd8ebeb13e 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: wilson +Build-Jdk: 1.8.0_45 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 a3f51779afc07eb04b350d4bb72ec9ed9280979f..c4e7017a43525d9d73559672fa56dfd250ff468e 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 -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 -artifactId=mybatis-enhance-actable +#Generated by Maven Integration for Eclipse +#Sat Apr 07 21:38:20 CST 2018 +version=0.0.1-SNAPSHOT +groupId=com.mybatis.enhance.store +m2e.projectName=mybatis-enhance-actable +m2e.projectLocation=/Users/wilson/develop/workspace_open/mybatis-enhance/mybatis-enhance-actable +artifactId=mybatis-enhance-actable 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 7dba3c1484219be054ffe14938c294a298e27a4a..2fce3feb71e7eda61f562d30d9bc9afae71bca84 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 @@ -2,7 +2,7 @@ - + - + - +