From 29fd0d0244bfa40680207dd8ffc80ca111f4c813 Mon Sep 17 00:00:00 2001 From: SSH4557 Date: Fri, 16 Mar 2018 13:29:48 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=B8=8D=E5=90=8C?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93=20=E6=9C=89=E7=9B=B8=E5=90=8C?= =?UTF-8?q?=E8=A1=A8=E6=98=8E=E6=97=B6=E5=90=AF=E5=8A=A8=E6=8A=A5=E9=94=99?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mybatis-enhance-actable/pom.xml | 2 +- .../dao/common/BaseMysqlCRUDMapper.java | 84 ++-- .../manager/common/BaseMysqlCRUDManager.java | 54 +-- .../common/BaseMysqlCRUDManagerImpl.java | 392 +++++++++--------- .../mapping/common/BaseMysqlCRUDMapper.xml | 172 ++++---- .../system/CreateMysqlTablesMapper.xml | 266 ++++++------ .../target/classes/META-INF/MANIFEST.MF | 2 +- 7 files changed, 486 insertions(+), 486 deletions(-) diff --git a/mybatis-enhance-actable/pom.xml b/mybatis-enhance-actable/pom.xml index 8d44171..906e965 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.1 + 1.0.2 org.sonatype.oss 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 48e2466..948a5a5 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 @@ -1,42 +1,42 @@ -package com.gitee.sunchenbin.mybatis.actable.dao.common; - -import java.util.List; -import java.util.Map; - -import org.apache.ibatis.annotations.Param; - - -/** - * 创建更新表结构的Mapper - * @author sunchenbin - * - */ -public interface BaseMysqlCRUDMapper { - - /** - * 保存 - * @param tableMap 表结构的map - */ - public void save(@Param("tableMap") Map> tableMap); - - /** - * 更新 - * @param tableMap 表结构的map - */ - public void update(@Param("tableMap") Map> tableMap); - - /** - * 删除 - * @param tableMap 表结构的map - */ - public void delete(@Param("tableMap") Map> tableMap); - - /** - * 查询 - * @param tableMap 表结构的map - */ - public List> query(@Param("tableMap") Map> tableMap); - - - -} +package com.gitee.sunchenbin.mybatis.actable.dao.common; + +import java.util.List; +import java.util.Map; + +import org.apache.ibatis.annotations.Param; + + +/** + * 创建更新表结构的Mapper + * @author sunchenbin + * + */ +public interface BaseMysqlCRUDMapper { + + /** + * 保存 + * @param tableMap 表结构的map + */ + public void save(@Param("tableMap") Map> tableMap); + + /** + * 更新 + * @param tableMap 表结构的map + */ + public void update(@Param("tableMap") Map> tableMap); + + /** + * 删除 + * @param tableMap 表结构的map + */ + public void delete(@Param("tableMap") Map> 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/manager/common/BaseMysqlCRUDManager.java b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/manager/common/BaseMysqlCRUDManager.java index 8f5b857..b8026fd 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 @@ -1,27 +1,27 @@ -package com.gitee.sunchenbin.mybatis.actable.manager.common; - -import java.util.List; - -public interface BaseMysqlCRUDManager{ - - /** - * 保存,如果主键有值则进行更新操作 - * @param model类型 - * @param t 要保存的model类型数据 - */ - void save(T t); - - /** - * 根据传入对象非空的条件删除 - * @param model类型 - * @param t 要删除的model类型数据 - */ - void delete(T t); - - /** - * 根据传入对象非空的条件进行查询 - * @param model类型 - * @param t 要查询的model类型数据 - */ - List query(T t); -} +package com.gitee.sunchenbin.mybatis.actable.manager.common; + +import java.util.List; + +public interface BaseMysqlCRUDManager{ + + /** + * 保存,如果主键有值则进行更新操作 + * @param model类型 + * @param t 要保存的model类型数据 + */ + void save(T t); + + /** + * 根据传入对象非空的条件删除 + * @param model类型 + * @param t 要删除的model类型数据 + */ + void delete(T 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/common/BaseMysqlCRUDManagerImpl.java b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/manager/common/BaseMysqlCRUDManagerImpl.java index 8807be5..502c684 100644 --- a/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/manager/common/BaseMysqlCRUDManagerImpl.java +++ b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/manager/common/BaseMysqlCRUDManagerImpl.java @@ -1,196 +1,196 @@ -package com.gitee.sunchenbin.mybatis.actable.manager.common; - -import java.lang.reflect.Field; -import java.util.ArrayList; -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; -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.Table; -import com.gitee.sunchenbin.mybatis.actable.dao.common.BaseMysqlCRUDMapper; - -@Transactional -@Service("baseMysqlCRUDManager") -public class BaseMysqlCRUDManagerImpl implements BaseMysqlCRUDManager{ - - private static final Logger log = LoggerFactory.getLogger(BaseMysqlCRUDManagerImpl.class); - - private static final String KEYFIELDMAP = "keyFieldMap"; - - @Autowired - private BaseMysqlCRUDMapper baseMysqlCRUDMapper; - - public void save(T obj){ - boolean isSave = true; - Table tableName = obj.getClass().getAnnotation(Table.class); - if ((tableName == null) || (tableName.name() == null || tableName.name() == "")) { - log.error("必须使用model中的对象!"); - return; - } - Field[] declaredFields = getAllFields(obj); - Map> tableMap = new HashMap>(); - Map dataMap = new HashMap(); - Map keyFieldMap = new HashMap(); - for (Field field : declaredFields){ - try{ - // 私有属性需要设置访问权限 - field.setAccessible(true); - Column column = field.getAnnotation(Column.class); - if (column == null) { - log.info("该field没有配置注解不是表中在字段!"); - continue; - } - - // 如果是主键,并且不是空的时候,这时候应该是更新操作 - if (column.isKey() && field.get(obj) != null && Integer.parseInt((String) field.get(obj)) > 0) { - isSave = false; - keyFieldMap.put(field.getName(), field.get(obj)); - } - - // 如果是自增,并且是保存的场合,不需要添加到map中做保存 - if (isSave && column.isAutoIncrement()) { - log.info("字段:" + field.getName() + "是自增的不需要添加到map中"); - continue; - } - - dataMap.put(field.getName(), field.get(obj)); - }catch (IllegalArgumentException e){ - e.printStackTrace(); - }catch (IllegalAccessException e){ - e.printStackTrace(); - } - } - if (isSave) { - tableMap.put(tableName.name(), dataMap); - // 执行保存操作 - baseMysqlCRUDMapper.save(tableMap); - }else{ - dataMap.put(KEYFIELDMAP, keyFieldMap); - tableMap.put(tableName.name(), dataMap); - // 执行更新操作根据主键 - baseMysqlCRUDMapper.update(tableMap); - } - } - - private Field[] getAllFields(T obj) { - Field[] declaredFields = obj.getClass().getDeclaredFields(); - - // 递归扫描父类的filed - declaredFields = recursionParents(obj.getClass(), declaredFields); - return declaredFields; - } - - public void delete(T obj){ - - // 得到表名 - Table tableName = obj.getClass().getAnnotation(Table.class); - if ((tableName == null) || (tableName.name() == null || tableName.name() == "")) { - log.error("必须使用model中的对象!"); - return; - } - Field[] declaredFields = getAllFields(obj); - Map> tableMap = new HashMap>(); - Map dataMap = new HashMap(); - for (Field field : declaredFields){ - // 设置访问权限 - field.setAccessible(true); - // 得到字段的配置 - Column column = field.getAnnotation(Column.class); - if (column == null) { - log.info("该field没有配置注解不是表中在字段!"); - continue; - } - try{ - dataMap.put(column.name(), field.get(obj)); - }catch (IllegalArgumentException e){ - e.printStackTrace(); - }catch (IllegalAccessException e){ - e.printStackTrace(); - } - } - tableMap.put(tableName.name(), dataMap); - baseMysqlCRUDMapper.delete(tableMap); - } - - @SuppressWarnings("unchecked") - public List query(T obj){ - // 得到表名 - Table tableName = obj.getClass().getAnnotation(Table.class); - if ((tableName == null) || (tableName.name() == null || tableName.name() == "")) { - log.error("必须使用model中的对象!"); - return null; - } - Field[] declaredFields = getAllFields(obj); - Map> tableMap = new HashMap>(); - Map dataMap = new HashMap(); - for (Field field : declaredFields){ - // 设置访问权限 - field.setAccessible(true); - // 得到字段的配置 - Column column = field.getAnnotation(Column.class); - if (column == null) { - log.info("该field没有配置注解不是表中在字段!"); - continue; - } - try{ - dataMap.put(column.name(), field.get(obj)); - }catch (IllegalArgumentException e){ - e.printStackTrace(); - }catch (IllegalAccessException e){ - e.printStackTrace(); - } - } - tableMap.put(tableName.name(), dataMap); - List> query = baseMysqlCRUDMapper.query(tableMap); - - List list = new ArrayList(); - try{ - for (Map map : query){ - T newInstance = (T) obj.getClass().newInstance(); - Field[] declaredFields2 = newInstance.getClass().getDeclaredFields(); - for (Field field : declaredFields2){ - field.setAccessible(true); - // 得到字段的配置 - Column column = field.getAnnotation(Column.class); - if (column == null) { - log.info("该field没有配置注解不是表中在字段!"); - continue; - } - String name = field.getName(); - field.set(newInstance, map.get(name)); - } - list.add(newInstance); - } - }catch (InstantiationException e){ - e.printStackTrace(); - }catch (IllegalAccessException e){ - e.printStackTrace(); - } - - 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; - } - -} +package com.gitee.sunchenbin.mybatis.actable.manager.common; + +import java.lang.reflect.Field; +import java.util.ArrayList; +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; +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.Table; +import com.gitee.sunchenbin.mybatis.actable.dao.common.BaseMysqlCRUDMapper; + +@Transactional +@Service("baseMysqlCRUDManager") +public class BaseMysqlCRUDManagerImpl implements BaseMysqlCRUDManager{ + + private static final Logger log = LoggerFactory.getLogger(BaseMysqlCRUDManagerImpl.class); + + private static final String KEYFIELDMAP = "keyFieldMap"; + + @Autowired + private BaseMysqlCRUDMapper baseMysqlCRUDMapper; + + public void save(T obj){ + boolean isSave = true; + Table tableName = obj.getClass().getAnnotation(Table.class); + if ((tableName == null) || (tableName.name() == null || tableName.name() == "")) { + log.error("必须使用model中的对象!"); + return; + } + Field[] declaredFields = getAllFields(obj); + Map> tableMap = new HashMap>(); + Map dataMap = new HashMap(); + Map keyFieldMap = new HashMap(); + for (Field field : declaredFields){ + try{ + // 私有属性需要设置访问权限 + field.setAccessible(true); + Column column = field.getAnnotation(Column.class); + if (column == null) { + log.info("该field没有配置注解不是表中在字段!"); + continue; + } + + // 如果是主键,并且不是空的时候,这时候应该是更新操作 + if (column.isKey() && field.get(obj) != null && (new Integer(field.get(obj).toString())) > 0) { + isSave = false; + keyFieldMap.put(field.getName(), field.get(obj)); + } + + // 如果是自增,并且是保存的场合,不需要添加到map中做保存 + if (isSave && column.isAutoIncrement()) { + log.info("字段:" + field.getName() + "是自增的不需要添加到map中"); + continue; + } + + dataMap.put(column.name(), field.get(obj)); + }catch (IllegalArgumentException e){ + e.printStackTrace(); + }catch (IllegalAccessException e){ + e.printStackTrace(); + } + } + if (isSave) { + tableMap.put(tableName.name(), dataMap); + // 执行保存操作 + baseMysqlCRUDMapper.save(tableMap); + }else{ + dataMap.put(KEYFIELDMAP, keyFieldMap); + tableMap.put(tableName.name(), dataMap); + // 执行更新操作根据主键 + baseMysqlCRUDMapper.update(tableMap); + } + } + + private Field[] getAllFields(T obj) { + Field[] declaredFields = obj.getClass().getDeclaredFields(); + + // 递归扫描父类的filed + declaredFields = recursionParents(obj.getClass(), declaredFields); + return declaredFields; + } + + public void delete(T obj){ + + // 得到表名 + Table tableName = obj.getClass().getAnnotation(Table.class); + if ((tableName == null) || (tableName.name() == null || tableName.name() == "")) { + log.error("必须使用model中的对象!"); + return; + } + Field[] declaredFields = getAllFields(obj); + Map> tableMap = new HashMap>(); + Map dataMap = new HashMap(); + for (Field field : declaredFields){ + // 设置访问权限 + field.setAccessible(true); + // 得到字段的配置 + Column column = field.getAnnotation(Column.class); + if (column == null) { + log.info("该field没有配置注解不是表中在字段!"); + continue; + } + try{ + dataMap.put(column.name(), field.get(obj)); + }catch (IllegalArgumentException e){ + e.printStackTrace(); + }catch (IllegalAccessException e){ + e.printStackTrace(); + } + } + tableMap.put(tableName.name(), dataMap); + baseMysqlCRUDMapper.delete(tableMap); + } + + @SuppressWarnings("unchecked") + public List query(T obj){ + // 得到表名 + Table tableName = obj.getClass().getAnnotation(Table.class); + if ((tableName == null) || (tableName.name() == null || tableName.name() == "")) { + log.error("必须使用model中的对象!"); + return null; + } + Field[] declaredFields = getAllFields(obj); + Map> tableMap = new HashMap>(); + Map dataMap = new HashMap(); + for (Field field : declaredFields){ + // 设置访问权限 + field.setAccessible(true); + // 得到字段的配置 + Column column = field.getAnnotation(Column.class); + if (column == null) { + log.info("该field没有配置注解不是表中在字段!"); + continue; + } + try{ + dataMap.put(column.name(), field.get(obj)); + }catch (IllegalArgumentException e){ + e.printStackTrace(); + }catch (IllegalAccessException e){ + e.printStackTrace(); + } + } + tableMap.put(tableName.name(), dataMap); + List> query = baseMysqlCRUDMapper.query(tableMap); + + List list = new ArrayList(); + try{ + for (Map map : query){ + T newInstance = (T) obj.getClass().newInstance(); + Field[] declaredFields2 = newInstance.getClass().getDeclaredFields(); + for (Field field : declaredFields2){ + field.setAccessible(true); + // 得到字段的配置 + Column column = field.getAnnotation(Column.class); + if (column == null) { + log.info("该field没有配置注解不是表中在字段!"); + continue; + } + String name = column.name(); + field.set(newInstance, map.get(name)); + } + list.add(newInstance); + } + }catch (InstantiationException e){ + e.printStackTrace(); + }catch (IllegalAccessException e){ + e.printStackTrace(); + } + + 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; + } + +} diff --git a/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/mapping/common/BaseMysqlCRUDMapper.xml b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/mapping/common/BaseMysqlCRUDMapper.xml index b652263..9f10599 100644 --- a/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/mapping/common/BaseMysqlCRUDMapper.xml +++ b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/mapping/common/BaseMysqlCRUDMapper.xml @@ -1,86 +1,86 @@ - - - - - - - - - - - - - - - - + + + + + + + + insert into `${key}`( + + + `${field}` + + + ) + + values( + + + #{fieldvalue} + + + ) + + + + + + + + + update `${key}` + + set + + + + `${field}` = #{fieldvalue} + + + + + where + + + + `${field}` = #{fieldvalue} + + + + + + + + + + + + + + diff --git a/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/mapping/system/CreateMysqlTablesMapper.xml b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/mapping/system/CreateMysqlTablesMapper.xml index ae0c3a4..3674d53 100644 --- a/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/mapping/system/CreateMysqlTablesMapper.xml +++ b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/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} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/mybatis-enhance-actable/target/classes/META-INF/MANIFEST.MF b/mybatis-enhance-actable/target/classes/META-INF/MANIFEST.MF index e8663e6..ed92e51 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 -Built-By: chenbin.sun +Built-By: SSH4557 Build-Jdk: 1.8.0_91 Created-By: Maven Integration for Eclipse -- Gitee From 8bbb80f74dc5a2722ca5a03ea959e2054f2ddd8c Mon Sep 17 00:00:00 2001 From: sun5769675 Date: Fri, 16 Mar 2018 13:32:23 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BA=86=E4=B8=8D?= =?UTF-8?q?=E5=90=8C=E6=95=B0=E6=8D=AE=E5=BA=93=E4=B8=AD=E6=9C=89=E7=9B=B8?= =?UTF-8?q?=E5=90=8C=E8=A1=A8=E5=90=8D=E6=97=B6=EF=BC=8C=E5=90=AF=E5=8A=A8?= =?UTF-8?q?=E6=8A=A5=E9=94=99=E7=9A=84=E9=97=AE=E9=A2=98=E3=80=82(?= =?UTF-8?q?=E7=89=88=E6=9C=AC1.0.2)=20=E4=BF=AE=E5=A4=8D=E4=BA=86model?= =?UTF-8?q?=E5=B1=9E=E6=80=A7=E5=90=8D=E4=B8=8E=E8=A1=A8=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=E5=90=8D=E4=B8=8D=E4=B8=80=E8=87=B4=E6=97=B6=E5=85=AC=E5=85=B1?= =?UTF-8?q?=E7=9A=84=E6=9F=A5=E8=AF=A2=E6=96=B9=E6=B3=95=E6=9F=A5=E4=B8=8D?= =?UTF-8?q?=E5=87=BA=E6=95=B0=E6=8D=AE=E7=9A=84=E9=97=AE=E9=A2=98=E3=80=82?= =?UTF-8?q?(=E7=89=88=E6=9C=AC1.0.2)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index ab11abb..a26a0e7 100644 --- a/README.md +++ b/README.md @@ -5,20 +5,22 @@ 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. 该版本修复了修改主键同时修改其类型引起的error(版本1.0.1) +2. 该版本修复了根据model创建时没有创建父类中的字段的问题(ps:目前只支持扫描一层继承)(版本1.0.1) +3. 该笨笨增加了对唯一约束的支持(版本1.0.1) +4. 从原有的框架中剥离出来,支持任意结构的spring+mybatis的框架使用(版本1.0.1) +5. 再次声明A.C.Table目前仅支持mysql数据库(版本1.0.1) +6. 修复了不同数据库中有相同表名时,启动报错的问题。(版本1.0.2) +7. 修复了model属性名与表字段名不一致时公共的查询方法查不出数据的问题。(版本1.0.2) **使用步骤方法** -1. 使用该功能的项目需要依赖mybatis-enhance-actable-1.0.1.jar +1. 使用该功能的项目需要依赖mybatis-enhance-actable-1.0.2.jar 已上传至maven中央仓库,使用时pom文件中增加如下依赖 com.gitee.sunchenbin.mybatis.actable mybatis-enhance-actable - 1.0.1 + 1.0.2 2. 在你的web项目上创建个目录比如config下面创建个文件autoCreateTable.properties文件的内容如下: -- Gitee