ソースを参照

Merge pull request !7 from 不瞌睡55/dev

青苗 9 年 前
コミット
ca8c075c10

+ 12 - 22
mybatis-plus/src/main/java/com/baomidou/mybatisplus/generator/AutoGenerator.java

@@ -15,26 +15,15 @@
  */
 package com.baomidou.mybatisplus.generator;
 
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.OutputStreamWriter;
-import java.sql.Connection;
-import java.sql.DriverManager;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
 import com.baomidou.mybatisplus.annotations.IdType;
 import com.baomidou.mybatisplus.exceptions.MybatisPlusException;
+import com.baomidou.mybatisplus.toolkit.DBKeywordsProcessor;
 import com.baomidou.mybatisplus.toolkit.StringUtils;
 
+import java.io.*;
+import java.sql.*;
+import java.util.*;
+
 /**
  * <p>
  * 映射文件自动生成类
@@ -233,6 +222,7 @@ public class AutoGenerator {
 				}
 				String beanName = getBeanName(table, config.isDbPrefix());
 				String mapperName = String.format(config.getMapperName(), beanName);
+				String mapperXMLName = String.format(config.getMapperXMLName(), beanName);
 				String serviceName = String.format(config.getServiceName(), beanName);
 				String serviceImplName = String.format(config.getServiceImplName(), beanName);
 
@@ -245,8 +235,8 @@ public class AutoGenerator {
 				if (valideFile(PATH_MAPPER, mapperName, JAVA_SUFFIX)) {
 					buildMapper(beanName, mapperName);
 				}
-				if (valideFile(PATH_XML, mapperName, XML_SUFFIX)) {
-					buildMapperXml(columns, types, comments, idMap, mapperName);
+				if (valideFile(PATH_XML, mapperXMLName, XML_SUFFIX)) {
+					buildMapperXml(columns, types, comments, idMap, mapperName, mapperXMLName);
 				}
 				if (valideFile(PATH_SERVICE, serviceName, JAVA_SUFFIX)) {
 					buildService(beanName, serviceName);
@@ -690,8 +680,8 @@ public class AutoGenerator {
 	 * @throws IOException
 	 */
 	protected void buildMapperXml(List<String> columns, List<String> types, List<String> comments,
-			Map<String, IdInfo> idMap, String mapperName) throws IOException {
-		File mapperXmlFile = new File(PATH_XML, mapperName + ".xml");
+			Map<String, IdInfo> idMap, String mapperName,String mapperXMLName) throws IOException {
+		File mapperXmlFile = new File(PATH_XML, mapperXMLName + ".xml");
 		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(mapperXmlFile)));
 		bw.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
 		bw.newLine();
@@ -810,12 +800,12 @@ public class AutoGenerator {
 			String column = columns.get(i);
 			IdInfo idInfo = idMap.get(column);
 			if (idInfo != null) {
-				bw.write("\t\t " + idInfo.getValue());
+				bw.write("\t\t " + DBKeywordsProcessor.convert(idInfo.getValue()));
 				if (idInfo.getValue().contains("_")) {
 					bw.write(" AS " + processField(idInfo.getValue()));
 				}
 			} else {
-				bw.write(" " + column);
+				bw.write(" " + DBKeywordsProcessor.convert(column));
 				if (column.contains("_")) {
 					bw.write(" AS " + processField(column));
 				}

+ 13 - 0
mybatis-plus/src/main/java/com/baomidou/mybatisplus/generator/ConfigGenerator.java

@@ -32,6 +32,7 @@ import com.baomidou.mybatisplus.toolkit.StringUtils;
  * superService 	service 父类包路径名称
  * superServiceImpl service 实现父类包路径名称
  * mapperName		自定义 mapper 名称
+ * mapperXMLName	自定义 xml 名称
  * serviceName		自定义 service 名称
  * serviceImplName	自定义 serviceImp 名称
  * tableNames   	要生成的表名称,如为空就直接指定所有表.格式为逗号分割
@@ -73,6 +74,8 @@ public class ConfigGenerator {
 	 */
 	protected String mapperName = "%sMapper";
 
+	protected String mapperXMLName = "%sMapper";
+
 	protected String serviceName = "I%sService";
 
 	protected String serviceImplName = "%sServiceImpl";
@@ -185,6 +188,16 @@ public class ConfigGenerator {
 		}
 	}
 
+	public String getMapperXMLName() {
+		return mapperXMLName;
+	}
+
+	public void setMapperXMLName(String mapperXMLName) {
+		if (verifyDefinedName(mapperXMLName)) {
+			this.mapperXMLName = mapperXMLName;
+		}
+	}
+
 	public String getServiceName() {
 		return serviceName;
 	}

+ 50 - 0
mybatis-plus/src/main/java/com/baomidou/mybatisplus/toolkit/DBKeywordsProcessor.java

@@ -0,0 +1,50 @@
+package com.baomidou.mybatisplus.toolkit;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * 数据库关键字替换
+ */
+public class DBKeywordsProcessor {
+
+    private static final String ESCAPE_CHARACTER = "`";
+
+    private static final Set<String> KEYWORDS = new HashSet<String>();
+
+    static {
+        BufferedReader br = null;
+        try {
+            InputStream in = DBKeywordsProcessor.class.getClassLoader().getResourceAsStream("database_keywords.dic");
+            br = new BufferedReader(new InputStreamReader(in));
+            String keyword = null;
+            while ((keyword = br.readLine()) != null) {
+                KEYWORDS.add(keyword);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            if (br != null) {
+                try {
+                    br.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+
+    }
+
+    public static String convert(String keyword) {
+        if (KEYWORDS.contains(keyword)) {
+            return new StringBuffer().append(ESCAPE_CHARACTER).append(keyword).append(ESCAPE_CHARACTER).toString();
+        }
+        return keyword;
+    }
+
+}
+

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

@@ -19,7 +19,7 @@ package com.baomidou.mybatisplus.toolkit;
  * <p>
  * 数据库表字段反射信息
  * </p>
- * 
+ *
  * @author hubin
  * @Date 2016-02-29
  */
@@ -46,14 +46,14 @@ public class TableFieldInfo {
 
 	public TableFieldInfo( boolean related, String column, String property ) {
 		this.related = related;
-		this.column = column;
+		this.column = DBKeywordsProcessor.convert(column);
 		this.property = property;
 	}
 
 
 	public TableFieldInfo( String column ) {
 		this.related = false;
-		this.column = column;
+		this.column = DBKeywordsProcessor.convert(column);
 		this.property = column;
 	}
 
@@ -74,7 +74,7 @@ public class TableFieldInfo {
 
 
 	public void setColumn( String column ) {
-		this.column = column;
+		this.column = DBKeywordsProcessor.convert(column);
 	}
 
 

+ 5 - 0
mybatis-plus/src/main/resources/database_keywords.dic

@@ -0,0 +1,5 @@
+key
+value
+user
+order
+index

+ 4 - 3
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/ConfigGeneratorTest.java

@@ -57,9 +57,10 @@ public class ConfigGeneratorTest {
 		/*
 		 * 自定义类名,需要包含 %s 格式化会填充实体beanName
 		 */
-		// cg.setMapperName("Test%sDao");
-		// cg.setServiceName("Test%sSer");
-		// cg.setServiceImplName("%sSerImpl");
+//		 cg.setMapperName("Test%sDao");
+//		 cg.setMapperXMLName("Test%sMapper");
+//		 cg.setServiceName("Test%sSer");
+//		 cg.setServiceImplName("%sSerImpl");
 		return cg;
 	}