Jelajahi Sumber

优化一版代码

Caratacus 8 tahun lalu
induk
melakukan
625a35274b
26 mengubah file dengan 353 tambahan dan 331 penghapusan
  1. 1 5
      mybatis-plus/src/main/java/com/baomidou/mybatisplus/activerecord/Model.java
  2. 4 5
      mybatis-plus/src/main/java/com/baomidou/mybatisplus/entity/TableInfo.java
  3. 13 13
      mybatis-plus/src/main/java/com/baomidou/mybatisplus/generator/config/builder/ConfigBuilder.java
  4. 5 5
      mybatis-plus/src/main/java/com/baomidou/mybatisplus/generator/config/po/TableInfo.java
  5. 43 4
      mybatis-plus/src/main/java/com/baomidou/mybatisplus/mapper/AutoSqlInjector.java
  6. 3 3
      mybatis-plus/src/main/java/com/baomidou/mybatisplus/plugins/Page.java
  7. 17 22
      mybatis-plus/src/main/java/com/baomidou/mybatisplus/plugins/PaginationInterceptor.java
  8. 1 1
      mybatis-plus/src/main/java/com/baomidou/mybatisplus/plugins/SqlExplainInterceptor.java
  9. 29 18
      mybatis-plus/src/main/java/com/baomidou/mybatisplus/plugins/pagination/DialectFactory.java
  10. 1 1
      mybatis-plus/src/main/java/com/baomidou/mybatisplus/plugins/pagination/dialects/H2Dialect.java
  11. 1 1
      mybatis-plus/src/main/java/com/baomidou/mybatisplus/plugins/pagination/dialects/PostgreDialect.java
  12. 1 1
      mybatis-plus/src/main/java/com/baomidou/mybatisplus/plugins/pagination/dialects/SQLServerDialect.java
  13. 1 1
      mybatis-plus/src/main/java/com/baomidou/mybatisplus/plugins/pagination/dialects/SQLiteDialect.java
  14. 1 5
      mybatis-plus/src/main/java/com/baomidou/mybatisplus/service/impl/ServiceImpl.java
  15. 22 24
      mybatis-plus/src/main/java/com/baomidou/mybatisplus/spring/MybatisMapperRefresh.java
  16. 1 1
      mybatis-plus/src/main/java/com/baomidou/mybatisplus/spring/MybatisSqlSessionFactoryBean.java
  17. 4 5
      mybatis-plus/src/main/java/com/baomidou/mybatisplus/toolkit/PackageHelper.java
  18. 4 9
      mybatis-plus/src/main/java/com/baomidou/mybatisplus/toolkit/SqlReservedWords.java
  19. 2 2
      mybatis-plus/src/main/java/com/baomidou/mybatisplus/toolkit/SqlUtils.java
  20. 3 9
      mybatis-plus/src/main/java/com/baomidou/mybatisplus/toolkit/StringUtils.java
  21. 3 3
      mybatis-plus/src/main/java/com/baomidou/mybatisplus/toolkit/TableInfoHelper.java
  22. 1 5
      mybatis-plus/src/main/java/com/baomidou/mybatisplus/toolkit/VersionUtils.java
  23. 84 79
      mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/generator/PostgreSQLGenerator.java
  24. 84 79
      mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/generator/SQLServerGenerator.java
  25. 8 9
      mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/mysql/CircularLabelsTest.java
  26. 16 21
      mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/proxy/TestProxy.java

+ 1 - 5
mybatis-plus/src/main/java/com/baomidou/mybatisplus/activerecord/Model.java

@@ -66,11 +66,7 @@ public abstract class Model<T extends Model> implements Serializable {
 			/*
 			 * 更新成功直接返回,失败执行插入逻辑
 			 */
-			boolean rlt = updateById();
-			if (!rlt) {
-				return insert();
-			}
-			return rlt;
+			return updateById() || insert();
 		}
 	}
 

+ 4 - 5
mybatis-plus/src/main/java/com/baomidou/mybatisplus/entity/TableInfo.java

@@ -15,12 +15,11 @@
  */
 package com.baomidou.mybatisplus.entity;
 
-import java.util.List;
-
-import org.apache.ibatis.session.Configuration;
-
 import com.baomidou.mybatisplus.enums.IdType;
 import com.baomidou.mybatisplus.exceptions.MybatisPlusException;
+import org.apache.ibatis.session.Configuration;
+
+import java.util.List;
 
 /**
  * <p>
@@ -89,7 +88,7 @@ public class TableInfo {
 	 * @return
 	 */
 	public String getSqlStatement(String sqlMethod) {
-		StringBuffer statement = new StringBuffer();
+		StringBuilder statement = new StringBuilder();
 		statement.append(currentNamespace);
 		statement.append(".");
 		statement.append(sqlMethod);

+ 13 - 13
mybatis-plus/src/main/java/com/baomidou/mybatisplus/generator/config/builder/ConfigBuilder.java

@@ -15,18 +15,6 @@
  */
 package com.baomidou.mybatisplus.generator.config.builder;
 
-import java.io.File;
-import java.sql.Connection;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
 import com.baomidou.mybatisplus.generator.config.ConstVal;
 import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
 import com.baomidou.mybatisplus.generator.config.GlobalConfig;
@@ -40,6 +28,18 @@ import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
 import com.baomidou.mybatisplus.generator.config.rules.QuerySQL;
 import com.baomidou.mybatisplus.toolkit.StringUtils;
 
+import java.io.File;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
 /**
  * 配置汇总 传递给文件生成工具
  *
@@ -538,7 +538,7 @@ public class ConfigBuilder {
 		if (tablePrefix != null && tablePrefix.length >= 1) {
 			removePrefix = true;
 		}
-		String propertyName = "";
+		String propertyName;
 		if (removePrefix) {
 			if (strategy == NamingStrategy.underline_to_camel) {
 				// 删除前缀、下划线转驼峰

+ 5 - 5
mybatis-plus/src/main/java/com/baomidou/mybatisplus/generator/config/po/TableInfo.java

@@ -15,16 +15,16 @@
  */
 package com.baomidou.mybatisplus.generator.config.po;
 
+import com.baomidou.mybatisplus.generator.config.StrategyConfig;
+import com.baomidou.mybatisplus.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.toolkit.StringUtils;
+
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 
-import com.baomidou.mybatisplus.generator.config.StrategyConfig;
-import com.baomidou.mybatisplus.toolkit.CollectionUtils;
-import com.baomidou.mybatisplus.toolkit.StringUtils;
-
 /**
  * <p>
  * 表信息,关联到当前字段信息
@@ -94,7 +94,7 @@ public class TableInfo {
 	}
 
 	public String getEntityPath() {
-		StringBuffer ep = new StringBuffer();
+		StringBuilder ep = new StringBuilder();
 		ep.append(entityName.substring(0, 1).toLowerCase());
 		ep.append(entityName.substring(1));
 		return ep.toString();

+ 43 - 4
mybatis-plus/src/main/java/com/baomidou/mybatisplus/mapper/AutoSqlInjector.java

@@ -292,7 +292,7 @@ public class AutoSqlInjector implements ISqlInjector {
 	 */
 	protected void injectDeleteByIdSql(boolean batch, Class<?> mapperClass, Class<?> modelClass, TableInfo table) {
 		SqlMethod sqlMethod = SqlMethod.DELETE_BY_ID;
-		SqlSource sqlSource = null;
+		SqlSource sqlSource;
 		if (batch) {
 			sqlMethod = SqlMethod.DELETE_BATCH_BY_IDS;
 			StringBuilder ids = new StringBuilder();
@@ -354,7 +354,7 @@ public class AutoSqlInjector implements ISqlInjector {
 	 */
 	protected void injectSelectByIdSql(boolean batch, Class<?> mapperClass, Class<?> modelClass, TableInfo table) {
 		SqlMethod sqlMethod = SqlMethod.SELECT_BY_ID;
-		SqlSource sqlSource = null;
+		SqlSource sqlSource;
 		if (batch) {
 			sqlMethod = SqlMethod.SELECT_BATCH_BY_IDS;
 			StringBuilder ids = new StringBuilder();
@@ -448,7 +448,7 @@ public class AutoSqlInjector implements ISqlInjector {
 	 * @param table
 	 */
 	protected void injectSelectObjsSql(SqlMethod sqlMethod, Class<?> mapperClass, Class<?> modelClass, TableInfo table) {
-		String sql = String.format(sqlMethod.getSql(), sqlSelectColumns(table, true), table.getTableName(),
+		String sql = String.format(sqlMethod.getSql(), sqlSelectObjsColumns(table), table.getTableName(),
 				sqlWhereEntityWrapper(table));
 		SqlSource sqlSource = languageDriver.createSqlSource(configuration, sql, modelClass);
 		this.addSelectMappedStatement(mapperClass, sqlMethod.getMethod(), sqlSource, Object.class, table);
@@ -619,6 +619,45 @@ public class AutoSqlInjector implements ISqlInjector {
 		return columns.toString();
 	}
 
+	/**
+	 * <p>
+	 * SQL 设置selectObj sqlselect
+	 * </p>
+	 *
+	 * @param table
+	 *            是否为包装类型查询
+	 * @return
+	 */
+	protected String sqlSelectObjsColumns(TableInfo table) {
+		StringBuilder columns = new StringBuilder();
+		/*
+		 * 普通查询
+		 */
+		columns.append("<choose><when test=\"ew != null and ew.sqlSelect != null\">${ew.sqlSelect}</when><otherwise>");
+		List<TableFieldInfo> fieldList = table.getFieldList();
+		// 主键处理
+		if (StringUtils.isNotEmpty(table.getKeyProperty())) {
+			if (table.isKeyRelated()) {
+				columns.append(table.getKeyColumn()).append(" AS ").append(sqlWordConvert(table.getKeyProperty()));
+			} else {
+				columns.append(sqlWordConvert(table.getKeyProperty()));
+			}
+		} else {
+			TableFieldInfo fieldInfo = fieldList.get(0);
+			// 匹配转换内容
+			String wordConvert = sqlWordConvert(fieldInfo.getProperty());
+			if (fieldInfo.getColumn().equals(wordConvert)) {
+				columns.append(wordConvert);
+			} else {
+				// 字段属性不一致
+				columns.append(fieldInfo.getColumn());
+				columns.append(" AS ").append(wordConvert);
+			}
+		}
+		columns.append("</otherwise></choose>");
+		return columns.toString();
+	}
+
 	/**
 	 * <p>
 	 * SQL 查询条件
@@ -724,7 +763,7 @@ public class AutoSqlInjector implements ISqlInjector {
 			if (StringUtils.isCharSequence(propertyType)) {
 				return String.format("\n\t<if test=\"%s!=null and %s!=''\">", property, property);
 			} else {
-				return String.format("\n\t<if test=\"%s!=null \">", property, property);
+				return String.format("\n\t<if test=\"%s!=null \">", property);
 			}
 		} else {
 			// FieldStrategy.NOT_NULL

+ 3 - 3
mybatis-plus/src/main/java/com/baomidou/mybatisplus/plugins/Page.java

@@ -15,13 +15,13 @@
  */
 package com.baomidou.mybatisplus.plugins;
 
+import com.baomidou.mybatisplus.plugins.pagination.Pagination;
+
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
-import com.baomidou.mybatisplus.plugins.pagination.Pagination;
-
 /**
  * <p>
  * 实现分页辅助类
@@ -75,7 +75,7 @@ public class Page<T> extends Pagination {
 
 	@Override
 	public String toString() {
-		StringBuffer pg = new StringBuffer();
+		StringBuilder pg = new StringBuilder();
 		pg.append(" Page:{ [").append(super.toString()).append("], ");
 		if (records != null) {
 			pg.append("records-size:").append(records.size());

+ 17 - 22
mybatis-plus/src/main/java/com/baomidou/mybatisplus/plugins/PaginationInterceptor.java

@@ -15,11 +15,14 @@
  */
 package com.baomidou.mybatisplus.plugins;
 
-import java.sql.Connection;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.util.Properties;
-
+import com.baomidou.mybatisplus.MybatisDefaultParameterHandler;
+import com.baomidou.mybatisplus.entity.CountOptimize;
+import com.baomidou.mybatisplus.plugins.pagination.DialectFactory;
+import com.baomidou.mybatisplus.plugins.pagination.Pagination;
+import com.baomidou.mybatisplus.toolkit.IOUtils;
+import com.baomidou.mybatisplus.toolkit.PluginUtils;
+import com.baomidou.mybatisplus.toolkit.SqlUtils;
+import com.baomidou.mybatisplus.toolkit.StringUtils;
 import org.apache.ibatis.executor.statement.StatementHandler;
 import org.apache.ibatis.logging.Log;
 import org.apache.ibatis.logging.LogFactory;
@@ -35,14 +38,10 @@ import org.apache.ibatis.reflection.SystemMetaObject;
 import org.apache.ibatis.scripting.defaults.DefaultParameterHandler;
 import org.apache.ibatis.session.RowBounds;
 
-import com.baomidou.mybatisplus.MybatisDefaultParameterHandler;
-import com.baomidou.mybatisplus.entity.CountOptimize;
-import com.baomidou.mybatisplus.plugins.pagination.DialectFactory;
-import com.baomidou.mybatisplus.plugins.pagination.Pagination;
-import com.baomidou.mybatisplus.toolkit.IOUtils;
-import com.baomidou.mybatisplus.toolkit.PluginUtils;
-import com.baomidou.mybatisplus.toolkit.SqlUtils;
-import com.baomidou.mybatisplus.toolkit.StringUtils;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.util.Properties;
 
 /**
  * <p>
@@ -92,14 +91,11 @@ public class PaginationInterceptor implements Interceptor {
 					CountOptimize countOptimize = SqlUtils.getCountOptimize(originalSql, optimizeType, dialectType,
 							page.isOptimizeCount());
 					orderBy = countOptimize.isOrderBy();
+					this.count(countOptimize.getCountSQL(), mappedStatement, boundSql, page);
+					if (page.getTotal() <= 0) {
+						return invocation.proceed();
+					}
 				}
-				CountOptimize countOptimize = SqlUtils.getCountOptimize(originalSql, optimizeType, dialectType,
-						page.isOptimizeCount());
-				this.count(countOptimize.getCountSQL(), mappedStatement, boundSql, page);
-				if (page.getTotal() <= 0) {
-					return invocation.proceed();
-				}
-
 				String buildSql = SqlUtils.concatOrderBy(originalSql, page, orderBy);
 				originalSql = DialectFactory.buildPaginationSql(page, buildSql, dialectType, dialectClazz);
 			} else {
@@ -108,8 +104,7 @@ public class PaginationInterceptor implements Interceptor {
 			}
 
 			/*
-			 * <p> 禁用内存分页 </p>
-			 * <p> 内存分页会查询所有结果出来处理(这个很吓人的),如果结果变化频繁这个数据还会不准。</p>
+			 * <p> 禁用内存分页 </p> <p> 内存分页会查询所有结果出来处理(这个很吓人的),如果结果变化频繁这个数据还会不准。</p>
 			 */
 			metaStatementHandler.setValue("delegate.boundSql.sql", originalSql);
 			metaStatementHandler.setValue("delegate.rowBounds.offset", RowBounds.NO_ROW_OFFSET);

+ 1 - 1
mybatis-plus/src/main/java/com/baomidou/mybatisplus/plugins/SqlExplainInterceptor.java

@@ -61,7 +61,7 @@ public class SqlExplainInterceptor implements Interceptor {
 	/**
 	 * Mysql支持分析SQL的最小版本
 	 */
-	private String minMySQLVersion = "5.6.3";
+	private final String minMySQLVersion = "5.6.3";
 
 	public Object intercept(Invocation invocation) throws Throwable {
 		/**

+ 29 - 18
mybatis-plus/src/main/java/com/baomidou/mybatisplus/plugins/pagination/DialectFactory.java

@@ -15,9 +15,6 @@
  */
 package com.baomidou.mybatisplus.plugins.pagination;
 
-import org.apache.ibatis.session.RowBounds;
-
-import com.baomidou.mybatisplus.enums.DBType;
 import com.baomidou.mybatisplus.exceptions.MybatisPlusException;
 import com.baomidou.mybatisplus.plugins.pagination.dialects.DB2Dialect;
 import com.baomidou.mybatisplus.plugins.pagination.dialects.H2Dialect;
@@ -29,6 +26,9 @@ import com.baomidou.mybatisplus.plugins.pagination.dialects.SQLServer2005Dialect
 import com.baomidou.mybatisplus.plugins.pagination.dialects.SQLServerDialect;
 import com.baomidou.mybatisplus.plugins.pagination.dialects.SQLiteDialect;
 import com.baomidou.mybatisplus.toolkit.StringUtils;
+import org.apache.ibatis.session.RowBounds;
+
+import static com.baomidou.mybatisplus.enums.DBType.getDBType;
 
 /**
  * <p>
@@ -61,9 +61,10 @@ public class DialectFactory {
 		// fix #172, 196
 		return getiDialect(dialectType, dialectClazz).buildPaginationSql(buildSql, page.getOffsetCurrent(), page.getSize());
 	}
-	
+
 	/**
-	 * Physical Pagination Interceptor for all the queries with parameter {@link org.apache.ibatis.session.RowBounds}
+	 * Physical Pagination Interceptor for all the queries with parameter
+	 * {@link org.apache.ibatis.session.RowBounds}
 	 * 
 	 * @param rowBounds
 	 * @param buildSql
@@ -118,33 +119,43 @@ public class DialectFactory {
 	 * 根据数据库类型选择不同分页方言
 	 * </p>
 	 * 
-	 * @param dbtype
+	 * @param dbType
 	 *            数据库类型
 	 * @return
 	 * @throws Exception
 	 */
-	private static IDialect getDialectByDbtype(String dbtype) throws Exception {
+	private static IDialect getDialectByDbtype(String dbType) {
 		IDialect dialect;
-		if (DBType.MYSQL.getDb().equalsIgnoreCase(dbtype)) {
+		switch (getDBType(dbType)) {
+		case MYSQL:
 			dialect = MySqlDialect.INSTANCE;
-		} else if (DBType.ORACLE.getDb().equalsIgnoreCase(dbtype)) {
+			break;
+		case ORACLE:
 			dialect = OracleDialect.INSTANCE;
-		} else if (DBType.DB2.getDb().equalsIgnoreCase(dbtype)) {
+			break;
+		case DB2:
 			dialect = DB2Dialect.INSTANCE;
-		} else if (DBType.H2.getDb().equalsIgnoreCase(dbtype)) {
+			break;
+		case H2:
 			dialect = H2Dialect.INSTANCE;
-		} else if (DBType.SQLSERVER.getDb().equalsIgnoreCase(dbtype)) {
+			break;
+		case SQLSERVER:
 			dialect = SQLServerDialect.INSTANCE;
-		} else if (DBType.SQLSERVER2005.getDb().equalsIgnoreCase(dbtype)) {
+			break;
+		case SQLSERVER2005:
 			dialect = SQLServer2005Dialect.INSTANCE;
-		} else if (DBType.POSTGRE.getDb().equalsIgnoreCase(dbtype)) {
+			break;
+		case POSTGRE:
 			dialect = PostgreDialect.INSTANCE;
-		} else if (DBType.HSQL.getDb().equalsIgnoreCase(dbtype)) {
+			break;
+		case HSQL:
 			dialect = HSQLDialect.INSTANCE;
-		} else if (DBType.SQLITE.getDb().equalsIgnoreCase(dbtype)) {
+			break;
+		case SQLITE:
 			dialect = SQLiteDialect.INSTANCE;
-		} else {
-			throw new MybatisPlusException("The database is not supported!dbtype:" + dbtype);
+			break;
+		default:
+			throw new MybatisPlusException("The Database's Not Supported! DBType:" + dbType);
 		}
 		return dialect;
 	}

+ 1 - 1
mybatis-plus/src/main/java/com/baomidou/mybatisplus/plugins/pagination/dialects/H2Dialect.java

@@ -30,7 +30,7 @@ public class H2Dialect implements IDialect {
 	public static final H2Dialect INSTANCE = new H2Dialect();
 
 	public String buildPaginationSql(String originalSql, int offset, int limit) {
-		StringBuffer sql = new StringBuffer(originalSql);
+		StringBuilder sql = new StringBuilder(originalSql);
 		sql.append(" limit ").append(limit);
 		if (offset > 0) {
 			sql.append(" offset ").append(offset);

+ 1 - 1
mybatis-plus/src/main/java/com/baomidou/mybatisplus/plugins/pagination/dialects/PostgreDialect.java

@@ -30,7 +30,7 @@ public class PostgreDialect implements IDialect {
 	public static final PostgreDialect INSTANCE = new PostgreDialect();
 
 	public String buildPaginationSql(String originalSql, int offset, int limit) {
-		StringBuffer sql = new StringBuffer(originalSql);
+		StringBuilder sql = new StringBuilder(originalSql);
 		sql.append(" limit ").append(limit).append(" offset ").append(offset);
 		return sql.toString();
 	}

+ 1 - 1
mybatis-plus/src/main/java/com/baomidou/mybatisplus/plugins/pagination/dialects/SQLServerDialect.java

@@ -30,7 +30,7 @@ public class SQLServerDialect implements IDialect {
 	public static final SQLServerDialect INSTANCE = new SQLServerDialect();
 
 	public String buildPaginationSql(String originalSql, int offset, int limit) {
-		StringBuffer sql = new StringBuffer(originalSql);
+		StringBuilder sql = new StringBuilder(originalSql);
 		sql.append(" OFFSET ").append(offset).append(" ROWS FETCH NEXT ");
 		sql.append(limit).append(" ROWS ONLY");
 		return sql.toString();

+ 1 - 1
mybatis-plus/src/main/java/com/baomidou/mybatisplus/plugins/pagination/dialects/SQLiteDialect.java

@@ -30,7 +30,7 @@ public class SQLiteDialect implements IDialect {
 	public static final SQLiteDialect INSTANCE = new SQLiteDialect();
 
 	public String buildPaginationSql(String originalSql, int offset, int limit) {
-		StringBuffer sql = new StringBuffer(originalSql);
+		StringBuilder sql = new StringBuilder(originalSql);
 		sql.append(" limit ").append(limit).append(" offset ").append(offset);
 		return sql.toString();
 	}

+ 1 - 5
mybatis-plus/src/main/java/com/baomidou/mybatisplus/service/impl/ServiceImpl.java

@@ -154,11 +154,7 @@ public class ServiceImpl<M extends BaseMapper<T>, T> implements IService<T> {
 					/*
 					 * 更新成功直接返回,失败执行插入逻辑
 					 */
-					boolean rlt = updateById(entity);
-					if (!rlt) {
-						return insert(entity);
-					}
-					return rlt;
+					return updateById(entity) || insert(entity);
 				}
 			} else {
 				throw new MybatisPlusException("Error:  Can not execute. Could not find @TableId.");

+ 22 - 24
mybatis-plus/src/main/java/com/baomidou/mybatisplus/spring/MybatisMapperRefresh.java

@@ -145,36 +145,34 @@ public class MybatisMapperRefresh implements Runnable {
 					} catch (InterruptedException interruptedException) {
 						interruptedException.printStackTrace();
 					}
-					while (true) {
-						try {
-							for (String filePath : fileSet) {
-								File file = new File(filePath);
-								if (file != null && file.isFile() && file.lastModified() > beforeTime) {
-									globalConfig.setRefresh(true);
-									List<Resource> removeList = jarMapper.get(filePath);
-									if (removeList != null && !removeList.isEmpty()) {// 如果是jar包中的xml,将刷新jar包中存在的所有xml,后期再修改加载jar中修改过后的xml
-										for (Resource resource : removeList) {
-											runnable.refresh(resource);
-										}
-									} else {
-										runnable.refresh(new FileSystemResource(file));
+					try {
+						for (String filePath : fileSet) {
+							File file = new File(filePath);
+							if (file.isFile() && file.lastModified() > beforeTime) {
+								globalConfig.setRefresh(true);
+								List<Resource> removeList = jarMapper.get(filePath);
+								if (removeList != null && !removeList.isEmpty()) {// 如果是jar包中的xml,将刷新jar包中存在的所有xml,后期再修改加载jar中修改过后的xml
+									for (Resource resource : removeList) {
+										runnable.refresh(resource);
 									}
+								} else {
+									runnable.refresh(new FileSystemResource(file));
 								}
 							}
-							if (globalConfig.isRefresh()) {
-								beforeTime = SystemClock.now();
-							}
-							globalConfig.setRefresh(true);
-						} catch (Exception exception) {
-							exception.printStackTrace();
 						}
-						try {
-							Thread.sleep(sleepSeconds * 1000);
-						} catch (InterruptedException interruptedException) {
-							interruptedException.printStackTrace();
+						if (globalConfig.isRefresh()) {
+							beforeTime = SystemClock.now();
 						}
-
+						globalConfig.setRefresh(true);
+					} catch (Exception exception) {
+						exception.printStackTrace();
 					}
+					try {
+						Thread.sleep(sleepSeconds * 1000);
+					} catch (InterruptedException interruptedException) {
+						interruptedException.printStackTrace();
+					}
+
 				}
 			}, "mybatis-plus MapperRefresh").start();
 		}

+ 1 - 1
mybatis-plus/src/main/java/com/baomidou/mybatisplus/spring/MybatisSqlSessionFactoryBean.java

@@ -460,7 +460,7 @@ public class MybatisSqlSessionFactoryBean implements FactoryBean<SqlSessionFacto
 
 		if (hasLength(this.typeAliasesPackage)) {
 			// TODO
-			String[] typeAliasPackageArray = null;
+			String[] typeAliasPackageArray;
 			if (typeAliasesPackage.contains("*")) {
 				typeAliasPackageArray = PackageHelper.convertTypeAliasesPackage(typeAliasesPackage);
 			} else {

+ 4 - 5
mybatis-plus/src/main/java/com/baomidou/mybatisplus/toolkit/PackageHelper.java

@@ -15,9 +15,7 @@
  */
 package com.baomidou.mybatisplus.toolkit;
 
-import java.util.HashSet;
-import java.util.Set;
-
+import com.baomidou.mybatisplus.exceptions.MybatisPlusException;
 import org.springframework.core.io.Resource;
 import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
 import org.springframework.core.io.support.ResourcePatternResolver;
@@ -26,7 +24,8 @@ import org.springframework.core.type.classreading.MetadataReader;
 import org.springframework.core.type.classreading.MetadataReaderFactory;
 import org.springframework.util.ClassUtils;
 
-import com.baomidou.mybatisplus.exceptions.MybatisPlusException;
+import java.util.HashSet;
+import java.util.Set;
 
 /**
  * <p>
@@ -64,7 +63,7 @@ public class PackageHelper {
 			Set<String> set = new HashSet<String>();
 			Resource[] resources = resolver.getResources(pkg);
 			if (resources != null && resources.length > 0) {
-				MetadataReader metadataReader = null;
+				MetadataReader metadataReader;
 				for (Resource resource : resources) {
 					if (resource.isReadable()) {
 						metadataReader = metadataReaderFactory.getMetadataReader(resource);

+ 4 - 9
mybatis-plus/src/main/java/com/baomidou/mybatisplus/toolkit/SqlReservedWords.java

@@ -17,6 +17,7 @@ package com.baomidou.mybatisplus.toolkit;
 
 import com.baomidou.mybatisplus.entity.GlobalConfiguration;
 
+import java.util.Collections;
 import java.util.HashSet;
 import java.util.Set;
 
@@ -30,7 +31,7 @@ import java.util.Set;
  */
 public class SqlReservedWords {
 
-	public static Set<String> RESERVED_WORDS;
+	public static final Set<String> RESERVED_WORDS;
 
 	static {
 		String[] words = { "AUDIT", "VOLUMES", "MINVALUE", "STATIC", "FLOOR", "CATALOG", "YEAR", "TRIGGER_CATALOG", "WLM",
@@ -140,10 +141,7 @@ public class SqlReservedWords {
 				"DECLARE", "SUPERUSER", "WHILE" };
 
 		RESERVED_WORDS = new HashSet<String>(words.length);
-
-		for (String word : words) {
-			RESERVED_WORDS.add(word);
-		}
+		Collections.addAll(RESERVED_WORDS, words);
 	}
 
 	/**
@@ -175,10 +173,7 @@ public class SqlReservedWords {
 	 * @return
 	 */
 	public static boolean containsWord(String word) {
-		if (null != word) {
-			return RESERVED_WORDS.contains(word.toUpperCase());
-		}
-		return false;
+		return null != word && RESERVED_WORDS.contains(word.toUpperCase());
 	}
 
 	/**

+ 2 - 2
mybatis-plus/src/main/java/com/baomidou/mybatisplus/toolkit/SqlUtils.java

@@ -79,7 +79,7 @@ public class SqlUtils {
 			JsqlParserUtils.jsqlparserCount(countOptimize, originalSql);
 			break;
 		default:
-			StringBuffer countSql = new StringBuffer("SELECT COUNT(1) ");
+			StringBuilder countSql = new StringBuilder("SELECT COUNT(1) ");
 			boolean optimize = false;
 			if (!indexOfSql.contains("DISTINCT") && !indexOfSql.contains("GROUP BY")) {
 				int formIndex = indexOfSql.indexOf("FROM");
@@ -118,7 +118,7 @@ public class SqlUtils {
 	 */
 	public static String concatOrderBy(String originalSql, Pagination page, boolean orderBy) {
 		if (orderBy && StringUtils.isNotEmpty(page.getOrderByField()) && page.isOpenSort()) {
-			StringBuffer buildSql = new StringBuffer(originalSql);
+			StringBuilder buildSql = new StringBuilder(originalSql);
 			buildSql.append(" ORDER BY ").append(page.getOrderByField());
 			buildSql.append(page.isAsc() ? " ASC " : " DESC ");
 			return buildSql.toString();

+ 3 - 9
mybatis-plus/src/main/java/com/baomidou/mybatisplus/toolkit/StringUtils.java

@@ -375,10 +375,7 @@ public class StringUtils {
 	 * @return
 	 */
 	public static boolean isCapitalMode(String word) {
-		if (null == word) {
-			return false;
-		}
-		return word.matches("^[0-9A-Z/_]+$");
+		return null != word && word.matches("^[0-9A-Z/_]+$");
 	}
 
 	/**
@@ -621,10 +618,7 @@ public class StringUtils {
 	 * @return
 	 */
 	public static Boolean isCharSequence(Class<?> cls) {
-		if (cls != null) {
-			return CharSequence.class.isAssignableFrom(cls);
-		}
-		return false;
+		return cls != null && CharSequence.class.isAssignableFrom(cls);
 	}
 
 	/**
@@ -634,7 +628,7 @@ public class StringUtils {
 	 * @return
 	 */
 	public static Boolean isCharSequence(String propertyType) {
-		Class<?> cls = null;
+		Class<?> cls;
 		try {
 			cls = Class.forName(propertyType);
 		} catch (ClassNotFoundException e) {

+ 3 - 3
mybatis-plus/src/main/java/com/baomidou/mybatisplus/toolkit/TableInfoHelper.java

@@ -86,7 +86,7 @@ public class TableInfoHelper {
 			return ti;
 		}
 		TableInfo tableInfo = new TableInfo();
-		GlobalConfiguration globalCache = null;
+		GlobalConfiguration globalCache;
 		if (null != builderAssistant) {
 			tableInfo.setCurrentNamespace(builderAssistant.getCurrentNamespace());
 			tableInfo.setConfigMark(builderAssistant.getConfiguration());
@@ -264,7 +264,7 @@ public class TableInfoHelper {
 	 * </p>
 	 */
 	private static void throwExceptionId(Class<?> clazz) {
-		StringBuffer errorMsg = new StringBuffer();
+		StringBuilder errorMsg = new StringBuilder();
 		errorMsg.append("There must be only one, Discover multiple @TableId annotation in ");
 		errorMsg.append(clazz.getName());
 		throw new MybatisPlusException(errorMsg.toString());
@@ -305,7 +305,7 @@ public class TableInfoHelper {
 			}
 			String[] columns = columnName.split(";");
 			String[] els = el.split(";");
-			if (null != columns && null != els && columns.length == els.length) {
+			if (columns.length == els.length) {
 				for (int i = 0; i < columns.length; i++) {
 					fieldList.add(new TableFieldInfo(globalCache, columns[i], field.getName(), els[i], validate, field.getType()
 							.getName()));

+ 1 - 5
mybatis-plus/src/main/java/com/baomidou/mybatisplus/toolkit/VersionUtils.java

@@ -49,10 +49,6 @@ public class VersionUtils {
 	 */
 	public static boolean compare(String version1, String version2) {
 		int num = compareVersion(version1, version2);
-		if (num >= 0) {
-			return true;
-		}
-		return false;
+		return num >= 0;
 	}
-
 }

+ 84 - 79
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/generator/PostgreSQLGenerator.java

@@ -1,10 +1,5 @@
 package com.baomidou.mybatisplus.test.generator;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
 import com.baomidou.mybatisplus.generator.AutoGenerator;
 import com.baomidou.mybatisplus.generator.InjectionConfig;
 import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
@@ -18,36 +13,46 @@ import com.baomidou.mybatisplus.generator.config.rules.DbColumnType;
 import com.baomidou.mybatisplus.generator.config.rules.DbType;
 import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
 
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
 /**
- * Created by nieqiurong on 2016/12/25.
+ * <p>
+ * PostgreSQLGenerator
+ * </p>
+ *
+ * @author nieqiurong
+ * @Date 2016/12/25
  */
 public class PostgreSQLGenerator {
 
-    public static void main(String[] args) {
-        AutoGenerator mpg = new AutoGenerator();
+	public static void main(String[] args) {
+		AutoGenerator mpg = new AutoGenerator();
 
-        // 全局配置
-        GlobalConfig gc = new GlobalConfig();
-        gc.setOutputDir("D://");
-        gc.setFileOverride(true);
-        gc.setActiveRecord(true);// 开启 activeRecord 模式
-        gc.setEnableCache(false);// XML 二级缓存
-        gc.setBaseResultMap(true);// XML ResultMap
-        gc.setBaseColumnList(false);// XML columList
-        gc.setAuthor("hubin");
+		// 全局配置
+		GlobalConfig gc = new GlobalConfig();
+		gc.setOutputDir("D://");
+		gc.setFileOverride(true);
+		gc.setActiveRecord(true);// 开启 activeRecord 模式
+		gc.setEnableCache(false);// XML 二级缓存
+		gc.setBaseResultMap(true);// XML ResultMap
+		gc.setBaseColumnList(false);// XML columList
+		gc.setAuthor("hubin");
 
-        // 自定义文件命名,注意 %s 会自动填充表实体属性!
-        // gc.setMapperName("%sDao");
-        // gc.setXmlName("%sDao");
-        // gc.setServiceName("MP%sService");
-        // gc.setServiceImplName("%sServiceDiy");
-        // gc.setControllerName("%sAction");
-        mpg.setGlobalConfig(gc);
+		// 自定义文件命名,注意 %s 会自动填充表实体属性!
+		// gc.setMapperName("%sDao");
+		// gc.setXmlName("%sDao");
+		// gc.setServiceName("MP%sService");
+		// gc.setServiceImplName("%sServiceDiy");
+		// gc.setControllerName("%sAction");
+		mpg.setGlobalConfig(gc);
 
-        // 数据源配置
-        DataSourceConfig dsc = new DataSourceConfig();
-        dsc.setDbType(DbType.POSTGRE_SQL);
-        dsc.setTypeConvert(new OracleTypeConvert(){
+		// 数据源配置
+		DataSourceConfig dsc = new DataSourceConfig();
+		dsc.setDbType(DbType.POSTGRE_SQL);
+		dsc.setTypeConvert(new OracleTypeConvert() {
 			// 自定义数据库表字段类型转换【可选】
 			@Override
 			public DbColumnType processTypeConvert(String fieldType) {
@@ -55,46 +60,46 @@ public class PostgreSQLGenerator {
 				return super.processTypeConvert(fieldType);
 			}
 		});
-        dsc.setDriverName("org.postgresql.Driver");
-        dsc.setUsername("postgres");
-        dsc.setPassword("521");
-        dsc.setUrl("jdbc:postgresql://localhost:5432/mybatis-plus");
-        mpg.setDataSource(dsc);
+		dsc.setDriverName("org.postgresql.Driver");
+		dsc.setUsername("postgres");
+		dsc.setPassword("521");
+		dsc.setUrl("jdbc:postgresql://localhost:5432/mybatis-plus");
+		mpg.setDataSource(dsc);
 
-        // 策略配置
-        StrategyConfig strategy = new StrategyConfig();
+		// 策略配置
+		StrategyConfig strategy = new StrategyConfig();
 		// strategy.setCapitalMode(true);// 全局大写命名
 		// strategy.setDbColumnUnderline(true);//全局下划线命名
-        strategy.setTablePrefix(new String[]{"bmd_", "mp_"});// 此处可以修改为您的表前缀
-        strategy.setNaming(NamingStrategy.underline_to_camel);// 表名生成策略
-        // strategy.setInclude(new String[] { "user" }); // 需要生成的表
-        // strategy.setExclude(new String[]{"test"}); // 排除生成的表
-        // 自定义实体父类
-        // strategy.setSuperEntityClass("com.baomidou.demo.TestEntity");
-        // 自定义实体,公共字段
-        // strategy.setSuperEntityColumns(new String[] { "test_id", "age" });
-        // 自定义 mapper 父类
-        // strategy.setSuperMapperClass("com.baomidou.demo.TestMapper");
-        // 自定义 service 父类
-        // strategy.setSuperServiceClass("com.baomidou.demo.TestService");
-        // 自定义 service 实现类父类
-        // strategy.setSuperServiceImplClass("com.baomidou.demo.TestServiceImpl");
-        // 自定义 controller 父类
-        // strategy.setSuperControllerClass("com.baomidou.demo.TestController");
-        // 【实体】是否生成字段常量(默认 false)
-        // public static final String ID = "test_id";
-        // strategy.setEntityColumnConstant(true);
-        // 【实体】是否为构建者模型(默认 false)
-        // public User setName(String name) {this.name = name; return this;}
-        // strategy.setEntityBuliderModel(true);
-        mpg.setStrategy(strategy);
+		strategy.setTablePrefix(new String[] { "bmd_", "mp_" });// 此处可以修改为您的表前缀
+		strategy.setNaming(NamingStrategy.underline_to_camel);// 表名生成策略
+		// strategy.setInclude(new String[] { "user" }); // 需要生成的表
+		// strategy.setExclude(new String[]{"test"}); // 排除生成的表
+		// 自定义实体父类
+		// strategy.setSuperEntityClass("com.baomidou.demo.TestEntity");
+		// 自定义实体,公共字段
+		// strategy.setSuperEntityColumns(new String[] { "test_id", "age" });
+		// 自定义 mapper 父类
+		// strategy.setSuperMapperClass("com.baomidou.demo.TestMapper");
+		// 自定义 service 父类
+		// strategy.setSuperServiceClass("com.baomidou.demo.TestService");
+		// 自定义 service 实现类父类
+		// strategy.setSuperServiceImplClass("com.baomidou.demo.TestServiceImpl");
+		// 自定义 controller 父类
+		// strategy.setSuperControllerClass("com.baomidou.demo.TestController");
+		// 【实体】是否生成字段常量(默认 false)
+		// public static final String ID = "test_id";
+		// strategy.setEntityColumnConstant(true);
+		// 【实体】是否为构建者模型(默认 false)
+		// public User setName(String name) {this.name = name; return this;}
+		// strategy.setEntityBuliderModel(true);
+		mpg.setStrategy(strategy);
 
-        // 包配置
-        PackageConfig pc = new PackageConfig();
-        pc.setModuleName("test");
-        pc.setParent("com.baomidou");//自定义包路径
-		pc.setController("controller");//这里是控制器包名,默认 web
-        mpg.setPackageInfo(pc);
+		// 包配置
+		PackageConfig pc = new PackageConfig();
+		pc.setModuleName("test");
+		pc.setParent("com.baomidou");// 自定义包路径
+		pc.setController("controller");// 这里是控制器包名,默认 web
+		mpg.setPackageInfo(pc);
 
 		// 注入自定义配置,可以在 VM 中使用 cfg.abc 设置的值
 		InjectionConfig cfg = new InjectionConfig() {
@@ -116,20 +121,20 @@ public class PostgreSQLGenerator {
 		cfg.setFileOutConfigList(focList);
 		mpg.setCfg(cfg);
 
-        // 自定义模板配置,模板可以参考源码 /mybatis-plus/src/main/resources/template 使用 copy
-        // 至您项目 src/main/resources/template 目录下,模板名称也可自定义如下配置:
-        // TemplateConfig tc = new TemplateConfig();
-        // tc.setController("...");
-        // tc.setEntity("...");
-        // tc.setMapper("...");
-        // tc.setXml("...");
-        // tc.setService("...");
-        // tc.setServiceImpl("...");
-        // mpg.setTemplate(tc);
-        // 执行生成
-        mpg.execute();
-        // 打印注入设置
-        System.err.println(mpg.getCfg().getMap().get("abc"));
-    }
+		// 自定义模板配置,模板可以参考源码 /mybatis-plus/src/main/resources/template 使用 copy
+		// 至您项目 src/main/resources/template 目录下,模板名称也可自定义如下配置:
+		// TemplateConfig tc = new TemplateConfig();
+		// tc.setController("...");
+		// tc.setEntity("...");
+		// tc.setMapper("...");
+		// tc.setXml("...");
+		// tc.setService("...");
+		// tc.setServiceImpl("...");
+		// mpg.setTemplate(tc);
+		// 执行生成
+		mpg.execute();
+		// 打印注入设置
+		System.err.println(mpg.getCfg().getMap().get("abc"));
+	}
 
 }

+ 84 - 79
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/generator/SQLServerGenerator.java

@@ -1,10 +1,5 @@
 package com.baomidou.mybatisplus.test.generator;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
 import com.baomidou.mybatisplus.generator.AutoGenerator;
 import com.baomidou.mybatisplus.generator.InjectionConfig;
 import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
@@ -18,36 +13,46 @@ import com.baomidou.mybatisplus.generator.config.rules.DbColumnType;
 import com.baomidou.mybatisplus.generator.config.rules.DbType;
 import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
 
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
 /**
- * Created by nieqiurong on 2016/12/25.
+ * <p>
+ * SQLServerGenerator
+ * </p>
+ *
+ * @author nieqiurong
+ * @Date 2016/12/25
  */
 public class SQLServerGenerator {
 
-    public static void main(String[] args) {
-        AutoGenerator mpg = new AutoGenerator();
+	public static void main(String[] args) {
+		AutoGenerator mpg = new AutoGenerator();
 
-        // 全局配置
-        GlobalConfig gc = new GlobalConfig();
-        gc.setOutputDir("D://");
-        gc.setFileOverride(true);
-        gc.setActiveRecord(true);// 开启 activeRecord 模式
-        gc.setEnableCache(false);// XML 二级缓存
-        gc.setBaseResultMap(true);// XML ResultMap
-        gc.setBaseColumnList(false);// XML columList
-        gc.setAuthor("nieqiurong");
+		// 全局配置
+		GlobalConfig gc = new GlobalConfig();
+		gc.setOutputDir("D://");
+		gc.setFileOverride(true);
+		gc.setActiveRecord(true);// 开启 activeRecord 模式
+		gc.setEnableCache(false);// XML 二级缓存
+		gc.setBaseResultMap(true);// XML ResultMap
+		gc.setBaseColumnList(false);// XML columList
+		gc.setAuthor("nieqiurong");
 
-        // 自定义文件命名,注意 %s 会自动填充表实体属性!
-        // gc.setMapperName("%sDao");
-        // gc.setXmlName("%sDao");
-        // gc.setServiceName("MP%sService");
-        // gc.setServiceImplName("%sServiceDiy");
-        // gc.setControllerName("%sAction");
-        mpg.setGlobalConfig(gc);
+		// 自定义文件命名,注意 %s 会自动填充表实体属性!
+		// gc.setMapperName("%sDao");
+		// gc.setXmlName("%sDao");
+		// gc.setServiceName("MP%sService");
+		// gc.setServiceImplName("%sServiceDiy");
+		// gc.setControllerName("%sAction");
+		mpg.setGlobalConfig(gc);
 
-        // 数据源配置
-        DataSourceConfig dsc = new DataSourceConfig();
-        dsc.setDbType(DbType.SQL_SERVER);
-        dsc.setTypeConvert(new SqlServerTypeConvert(){
+		// 数据源配置
+		DataSourceConfig dsc = new DataSourceConfig();
+		dsc.setDbType(DbType.SQL_SERVER);
+		dsc.setTypeConvert(new SqlServerTypeConvert() {
 			// 自定义数据库表字段类型转换【可选】
 			@Override
 			public DbColumnType processTypeConvert(String fieldType) {
@@ -55,46 +60,46 @@ public class SQLServerGenerator {
 				return super.processTypeConvert(fieldType);
 			}
 		});
-        dsc.setDriverName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
-        dsc.setUsername("sa");
-        dsc.setPassword("nieqiuqiu");
-        dsc.setUrl("jdbc:sqlserver://192.168.1.105:1433;databaseName=mybatis-plus");
-        mpg.setDataSource(dsc);
+		dsc.setDriverName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
+		dsc.setUsername("sa");
+		dsc.setPassword("nieqiuqiu");
+		dsc.setUrl("jdbc:sqlserver://192.168.1.105:1433;databaseName=mybatis-plus");
+		mpg.setDataSource(dsc);
 
-        // 策略配置
-        StrategyConfig strategy = new StrategyConfig();
+		// 策略配置
+		StrategyConfig strategy = new StrategyConfig();
 		// strategy.setCapitalMode(true);// 全局大写命名
 		// strategy.setDbColumnUnderline(true);//全局下划线命名
-        strategy.setTablePrefix(new String[]{"bmd_", "mp_"});// 此处可以修改为您的表前缀
-        strategy.setNaming(NamingStrategy.underline_to_camel);// 表名生成策略
-        // strategy.setInclude(new String[] { "user" }); // 需要生成的表
-        // strategy.setExclude(new String[]{"test"}); // 排除生成的表
-        // 自定义实体父类
-        // strategy.setSuperEntityClass("com.baomidou.demo.TestEntity");
-        // 自定义实体,公共字段
-        // strategy.setSuperEntityColumns(new String[] { "test_id", "age" });
-        // 自定义 mapper 父类
-        // strategy.setSuperMapperClass("com.baomidou.demo.TestMapper");
-        // 自定义 service 父类
-        // strategy.setSuperServiceClass("com.baomidou.demo.TestService");
-        // 自定义 service 实现类父类
-        // strategy.setSuperServiceImplClass("com.baomidou.demo.TestServiceImpl");
-        // 自定义 controller 父类
-        // strategy.setSuperControllerClass("com.baomidou.demo.TestController");
-        // 【实体】是否生成字段常量(默认 false)
-        // public static final String ID = "test_id";
-        // strategy.setEntityColumnConstant(true);
-        // 【实体】是否为构建者模型(默认 false)
-        // public User setName(String name) {this.name = name; return this;}
-        // strategy.setEntityBuliderModel(true);
-        mpg.setStrategy(strategy);
+		strategy.setTablePrefix(new String[] { "bmd_", "mp_" });// 此处可以修改为您的表前缀
+		strategy.setNaming(NamingStrategy.underline_to_camel);// 表名生成策略
+		// strategy.setInclude(new String[] { "user" }); // 需要生成的表
+		// strategy.setExclude(new String[]{"test"}); // 排除生成的表
+		// 自定义实体父类
+		// strategy.setSuperEntityClass("com.baomidou.demo.TestEntity");
+		// 自定义实体,公共字段
+		// strategy.setSuperEntityColumns(new String[] { "test_id", "age" });
+		// 自定义 mapper 父类
+		// strategy.setSuperMapperClass("com.baomidou.demo.TestMapper");
+		// 自定义 service 父类
+		// strategy.setSuperServiceClass("com.baomidou.demo.TestService");
+		// 自定义 service 实现类父类
+		// strategy.setSuperServiceImplClass("com.baomidou.demo.TestServiceImpl");
+		// 自定义 controller 父类
+		// strategy.setSuperControllerClass("com.baomidou.demo.TestController");
+		// 【实体】是否生成字段常量(默认 false)
+		// public static final String ID = "test_id";
+		// strategy.setEntityColumnConstant(true);
+		// 【实体】是否为构建者模型(默认 false)
+		// public User setName(String name) {this.name = name; return this;}
+		// strategy.setEntityBuliderModel(true);
+		mpg.setStrategy(strategy);
 
-        // 包配置
-        PackageConfig pc = new PackageConfig();
-        pc.setModuleName("test");
-        pc.setParent("com.baomidou");//自定义包路径
-        pc.setController("controller");//这里是控制器包名,默认 web
-        mpg.setPackageInfo(pc);
+		// 包配置
+		PackageConfig pc = new PackageConfig();
+		pc.setModuleName("test");
+		pc.setParent("com.baomidou");// 自定义包路径
+		pc.setController("controller");// 这里是控制器包名,默认 web
+		mpg.setPackageInfo(pc);
 
 		// 注入自定义配置,可以在 VM 中使用 cfg.abc 设置的值
 		InjectionConfig cfg = new InjectionConfig() {
@@ -116,20 +121,20 @@ public class SQLServerGenerator {
 		cfg.setFileOutConfigList(focList);
 		mpg.setCfg(cfg);
 
-        // 自定义模板配置,模板可以参考源码 /mybatis-plus/src/main/resources/template 使用 copy
-        // 至您项目 src/main/resources/template 目录下,模板名称也可自定义如下配置:
-        // TemplateConfig tc = new TemplateConfig();
-        // tc.setController("...");
-        // tc.setEntity("...");
-        // tc.setMapper("...");
-        // tc.setXml("...");
-        // tc.setService("...");
-        // tc.setServiceImpl("...");
-        // mpg.setTemplate(tc);
-        // 执行生成
-        mpg.execute();
-        // 打印注入设置
-        System.err.println(mpg.getCfg().getMap().get("abc"));
-    }
+		// 自定义模板配置,模板可以参考源码 /mybatis-plus/src/main/resources/template 使用 copy
+		// 至您项目 src/main/resources/template 目录下,模板名称也可自定义如下配置:
+		// TemplateConfig tc = new TemplateConfig();
+		// tc.setController("...");
+		// tc.setEntity("...");
+		// tc.setMapper("...");
+		// tc.setXml("...");
+		// tc.setService("...");
+		// tc.setServiceImpl("...");
+		// mpg.setTemplate(tc);
+		// 执行生成
+		mpg.execute();
+		// 打印注入设置
+		System.err.println(mpg.getCfg().getMap().get("abc"));
+	}
 
 }

+ 8 - 9
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/mysql/CircularLabelsTest.java

@@ -15,20 +15,19 @@
  */
 package com.baomidou.mybatisplus.test.mysql;
 
-import java.io.InputStream;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.List;
-
-import org.apache.ibatis.session.SqlSession;
-import org.apache.ibatis.session.SqlSessionFactory;
-
 import com.baomidou.mybatisplus.MybatisSessionFactoryBuilder;
 import com.baomidou.mybatisplus.plugins.Page;
 import com.baomidou.mybatisplus.test.mysql.entity.Test;
 import com.baomidou.mybatisplus.test.mysql.entity.User;
 import com.baomidou.mybatisplus.test.mysql.mapper.TestMapper;
 import com.baomidou.mybatisplus.test.mysql.mapper.UserMapper;
+import org.apache.ibatis.session.SqlSession;
+import org.apache.ibatis.session.SqlSessionFactory;
+
+import java.io.InputStream;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
 
 /**
  * <p>
@@ -52,7 +51,7 @@ public class CircularLabelsTest {
 		SqlSession session = sessionFactory.openSession();
 		UserMapper userMapper = session.getMapper(UserMapper.class);
 		Page<User> page = new Page<User>(1, 6);
-		List<User> users = userMapper.forSelect(page, Arrays.asList(new String[] { "1", "2", "3" }));
+		List<User> users = userMapper.forSelect(page, Arrays.asList("1", "2", "3"));
 		System.out.println(users.toString());
 		System.out.println(page);
 		User user = new User();

+ 16 - 21
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/proxy/TestProxy.java

@@ -15,14 +15,14 @@
  */
 package com.baomidou.mybatisplus.test.proxy;
 
-import java.lang.reflect.InvocationHandler;
-import java.lang.reflect.Method;
-import java.lang.reflect.Proxy;
-
 import com.baomidou.mybatisplus.test.proxy.mapper.IUserMapper;
 import com.baomidou.mybatisplus.test.proxy.mapper.User;
 import com.baomidou.mybatisplus.test.proxy.mapper.UserMapperImpl;
 
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
+import java.lang.reflect.Proxy;
+
 /**
  * <p>
  * mybatis 执行原理测试
@@ -33,23 +33,23 @@ import com.baomidou.mybatisplus.test.proxy.mapper.UserMapperImpl;
  */
 public class TestProxy {
 
-	public static void main( String[] args ) {
+	public static void main(String[] args) {
 		/**
-		 * 代理方式一 
+		 * 代理方式一
 		 */
 		IUserMapper userMapper = MapperProxyFactory.getMapper(IUserMapper.class);
 		User user = userMapper.selectById(1L);
 		System.err.println((user == null) ? "代理失败" : user.toString());
 		try {
 			Thread.sleep(3000);
-		} catch ( InterruptedException e ) {
+		} catch (InterruptedException e) {
 			e.printStackTrace();
 		} finally {
 			System.err.println("\n");
 		}
 
 		/**
-		 * 代理方式二 
+		 * 代理方式二
 		 */
 		MyMapperProxy<IUserMapper> userDaoProxy = new MyMapperProxy<IUserMapper>();
 		IUserMapper mapper = userDaoProxy.bind(new UserMapperImpl());
@@ -57,38 +57,33 @@ public class TestProxy {
 		System.err.println((user1 == null) ? "代理失败" : user1.toString());
 	}
 
-
 }
 
 /**
  * 动态代理方式二
  */
 class MyMapperProxy<T extends IUserMapper> implements InvocationHandler {
-	
+
 	private T t;
-	
-	
+
 	@SuppressWarnings("unchecked")
-	public T bind( T t ) {
+	public T bind(T t) {
 		this.t = t;
 		return (T) Proxy.newProxyInstance(t.getClass().getClassLoader(), t.getClass().getInterfaces(), this);
 	}
-	
-	
-	public Object invoke( Object proxy, Method method, Object[] args ) throws Throwable {
-		Object rst = null;
+
+	public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
+		Object rst;
 		before();
 		rst = method.invoke(t, args);
 		after();
 		return rst;
 	}
-	
-	
+
 	private void before() {
 		System.out.println("before ...");
 	}
-	
-	
+
 	private void after() {
 		System.out.println("after");
 	}