diff --git a/mybatis-enhance-actable/README.md b/mybatis-enhance-actable/README.md index 36c9200..a6a1824 100644 --- a/mybatis-enhance-actable/README.md +++ b/mybatis-enhance-actable/README.md @@ -751,3 +751,6 @@ public class TestController{ 73. issues/I3PRVK:添加@IgnoreUpdate注解 标注当前字段参与创建不参与更新,解决使用@DefaultValue("NULL ON UPDATE CURRENT_TIMESTAMP")时当前字段每次重启项目都会进行更新操作的问题(版本1.5.0.RELEASE) 74. issues/I3NGD2:添加@IgnoreTable注解 设置某个model实体不参与建表操作(版本1.5.0.RELEASE) 75. issues/I3TNMB:修复使用mybatisplus时使用了多租户的插件时,使用@ColumnComment注解报错的问题(版本1.5.0.RELEASE) +76. issues/#19:修复 mysql MySQL5.7以上 int类型字段每次更新问题 [#19](https://github.com/sunchenbin/A.CTable-Frame/issues/19) [zhouwm808](https://github.com/zhouwm808/A.CTable-Frame) (版本1.5.0.PORTER.ORG.CN) +77. issues/#20:修复 实体类存在父类时,父类字段在表末尾问题 [#20](https://github.com/sunchenbin/A.CTable-Frame/issues/20) [zhouwm808](https://github.com/zhouwm808/A.CTable-Frame) (版本1.5.0.PORTER.ORG.CN) +78. 修复 mybatis-enhance-actable 包打入到 lib 时,类加载器不一致导致的 model 类无法找到的问题 [yanzhaoyl](https://github.com/yanzhaoyl/A.CTable-Frame) (版本1.5.0.PORTER.ORG.CN) \ No newline at end of file diff --git a/mybatis-enhance-actable/pom.xml b/mybatis-enhance-actable/pom.xml index 67fd95a..09fb9fc 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.5.0.RELEASE + 1.5.0.PORTER.ORG.CN org.sonatype.oss 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 6ec8506..294af5e 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 @@ -433,8 +433,13 @@ private List getModifyFieldList(List tableColumnList, L // 3.验证长度个小数点位数 String typeAndLength = createTableParam.getFieldType().toLowerCase(); if (createTableParam.getFileTypeLength() == 1) { - // 拼接出类型加长度,比如varchar(1) - typeAndLength = typeAndLength + "(" + createTableParam.getFieldLength() + ")"; + //如果是int类型,mysql5.6及以下版本为int(11),mysql5.7及以上版本为int,此处兼容处理 + if("int".equalsIgnoreCase(typeAndLength) && "int".equalsIgnoreCase(sysColumn.getColumn_type())) { + //只有类型,不需要拼接长度,mysql5.7后int型不能设置长度 + } else { + // 拼接出类型加长度,比如varchar(1) + typeAndLength = typeAndLength + "(" + createTableParam.getFieldLength() + ")"; + } } else if (createTableParam.getFileTypeLength() == 2) { // 拼接出类型加长度,比如varchar(1) typeAndLength = typeAndLength + "(" + createTableParam.getFieldLength() + "," @@ -442,6 +447,7 @@ private List getModifyFieldList(List tableColumnList, L } // 判断类型+长度是否相同 + if (!sysColumn.getColumn_type().toLowerCase().equals(typeAndLength)) { modifyFieldList.add(modifyTableParam); continue; @@ -659,6 +665,8 @@ private Field[] recursionParents(Class clas, Field[] fields) { if (clas.getSuperclass() != null) { Class clsSup = clas.getSuperclass(); List fieldList = new ArrayList(); + //把父类属性字段放到最前面 + List superFieldList = new ArrayList(); fieldList.addAll(Arrays.asList(fields)); // 获取当前class的所有fields的name列表 List fdNames = getFieldNames(fieldList); @@ -669,6 +677,7 @@ private Field[] recursionParents(Class clas, Field[] fields) { } fieldList.add(pfd); } + fieldList.addAll(0, superFieldList); fields = new Field[fieldList.size()]; int i = 0; for (Object field : fieldList.toArray()) { diff --git a/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/utils/ClassScaner.java b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/utils/ClassScaner.java index a740acd..1f0b221 100644 --- a/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/utils/ClassScaner.java +++ b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/utils/ClassScaner.java @@ -93,8 +93,10 @@ public Set doScan(String basePackage) { if ((includeFilters.size() == 0 && excludeFilters.size() == 0) || matches(metadataReader)) { try { - classes.add(Class.forName(metadataReader - .getClassMetadata().getClassName())); + ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader(); + Class clazz = contextClassLoader.loadClass(metadataReader.getClassMetadata().getClassName()); + classes.add(clazz); +// classes.add(Class.forName(metadataReader.getClassMetadata().getClassName())); } catch (ClassNotFoundException e) { e.printStackTrace(); }