From 211840b64fa1132d76d6dff6c779e9ba2c0c450f Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期四, 07 四月 2022 19:13:54 +0800
Subject: [PATCH] 优化自动化代码

---
 src/main/java/org/yeshi/utils/generater/mybatis/ColumnUtil.java |  364 ++++++++++++++++++++++++++++-----------------------
 1 files changed, 199 insertions(+), 165 deletions(-)

diff --git a/src/main/java/org/yeshi/utils/generater/mybatis/ColumnUtil.java b/src/main/java/org/yeshi/utils/generater/mybatis/ColumnUtil.java
index 39d136f..a9793c5 100644
--- a/src/main/java/org/yeshi/utils/generater/mybatis/ColumnUtil.java
+++ b/src/main/java/org/yeshi/utils/generater/mybatis/ColumnUtil.java
@@ -13,187 +13,221 @@
 import org.dom4j.io.SAXReader;
 import org.dom4j.io.XMLWriter;
 import org.dom4j.tree.AbstractAttribute;
+import org.yeshi.utils.StringUtil;
 
 public class ColumnUtil {
 
-	@SuppressWarnings("rawtypes")
-	public static void addColumnToMapper(String path, String columnName, String property, String type) {
-		File xmlPath = new File(path);
-		SAXReader reader = new SAXReader();
-		Document document = null;
-		try {
-			document = reader.read(xmlPath);
-			Element root = document.getRootElement();
-			// 寰楀埌鏍瑰厓绱犵殑鎵�鏈夊瓙鑺傜偣
-			List<Element> elementList = root.elements();
-			// 閬嶅巻鎵�鏈夊瓙鑺傜偣
-			for (Element e : elementList) {
-				if (e.getName().equals("resultMap")) {
-					AbstractAttribute attr = (AbstractAttribute) e.attribute("id");
-					if ("BaseResultMap".equalsIgnoreCase(attr.getValue())) {
-						List list = e.elements("result");
-						boolean isE = false;
-						for (int i = 0; i < list.size(); i++) {
-							Element item = (Element) list.get(i);
-							attr = (AbstractAttribute) item.attribute("property");
-							if (attr.getValue().trim().equalsIgnoreCase(property)) {
-								isE = true;
-								break;
-							}
-						}
-						if (!isE) {
-							List<KeyPair> li = new ArrayList<>();
-							li.add(new KeyPair("column", columnName));
-							li.add(new KeyPair("property", property));
-							li.add(new KeyPair("jdbcType", type));
-							e.add(createElement("result", li, null));
-						}
-					}
-				} else if (e.getName().equals("sql")) {
-					AbstractAttribute attr = (AbstractAttribute) e.attribute("id");
-					if ("Base_Column_List".equalsIgnoreCase(attr.getValue())) {
-						String columns = e.getText();
-						String[] cs = columns.split(",");
-						boolean isE = false;
-						for (String c : cs) {
-							if (c.trim().equalsIgnoreCase(columnName)) {
-								isE = true;
-								break;
-							}
-						}
-						if (!isE) {
-							columns += ("," + columnName);
-							e.setText(columns);
-						}
-					}
 
-				} else if (e.getName().equals("insert")) {
-					AbstractAttribute attr = (AbstractAttribute) e.attribute("id");
-					if ("insert".equalsIgnoreCase(attr.getValue())) {
-						String insert = e.getText();
-						String[] cs = insert.split("values ");
-						if (cs.length > 1) {
-							int start = cs[0].indexOf("(");
-							int end = cs[0].indexOf(")");
-							String columns = cs[0].substring(start, end);
-							String[] cols = columns.split(",");
-							boolean isE = false;
-							for (String col : cols) {
-								if (col.trim().equalsIgnoreCase(columnName)) {
-									isE = true;
-									break;
-								}
-							}
-							if (!isE) {
-								cs[0] = cs[0].replace(columns, columns + ("," + columnName));
-								start = cs[1].indexOf("(");
-								end = cs[1].indexOf(")");
-								String columns2 = cs[1].substring(start, end);
-								cs[1] = cs[1].replace(columns2,
-										columns2 + String.format(",#{%s,jdbcType=%s}", property, type));
-								insert = cs[0] + " values " + cs[1];
-								e.setText(insert);
-							}
-						}
+    /**
+     * @author hxh
+     * @description 鏍规嵁灞炴�ц幏鍙杝ql涓殑椹煎嘲瀛楁
+     * @date 15:44 2022/3/31
+     * @param: property
+     * @return java.lang.String
+     **/
+    public static String getColumnFromProperty(String property) {
+        StringBuffer buffer = new StringBuffer();
+        List<String> temp = new ArrayList<>();
+        for (int i = 0; i < property.length(); i++) {
+            //鏄惁涓哄ぇ鍐�
+            if (property.charAt(i) >= 65 && property.charAt(i) <= 90) {
+                temp.add(property.charAt(i) + "");
+            } else {
+                //娑堣垂涔嬪墠鐨�
+                if (temp.size() > 0) {
+                    buffer.append(("_" + StringUtil.concat(temp, "")).toLowerCase());
+                    temp.clear();
+                }
+                buffer.append(property.charAt(i));
+            }
+        }
 
-					} else if ("insertSelective".equalsIgnoreCase(attr.getValue())) {
-						List trims = e.elements("trim");
-						Element els = (Element) trims.get(0);
-						boolean isE = false;
-						for (int i = 0; i < els.elements("if").size(); i++) {
-							String cn = ((Element) els.elements("if").get(i)).getText().replace(",", "").trim();
-							if (columnName.equalsIgnoreCase(cn)) {
-								isE = true;
-								break;
-							}
-						}
-						if (!isE) {
-							List<KeyPair> list = new ArrayList<>();
-							list.add(new KeyPair("test", String.format("%s != null", property)));
-							els.add(createElement("if", list, columnName + ","));
+        if (temp.size() > 0) {
+            buffer.append(("_" + StringUtil.concat(temp, "")).toLowerCase());
+            temp.clear();
+        }
+        return buffer.toString();
+    }
 
-							els = (Element) trims.get(1);
-							list = new ArrayList<>();
-							list.add(new KeyPair("test", String.format("%s != null", property)));
-							els.add(createElement("if", list, String.format("#{%s,jdbcType=%s}", property, type)));
-						}
-					}
 
-				} else if (e.getName().equals("update")) {
-					AbstractAttribute attr = (AbstractAttribute) e.attribute("id");
-					if ("updateByPrimaryKeySelective".equalsIgnoreCase(attr.getValue())) {
-						List list = ((Element) e.elements("set").get(0)).elements("if");
-						boolean isE = false;
-						for (int i = 0; i < list.size(); i++) {
-							if (((Element) list.get(i)).getText().indexOf(columnName) > -1) {
-								isE = true;
-								break;
-							}
-						}
-						if (!isE) {
-							List<KeyPair> klist = new ArrayList<>();
-							klist.add(new KeyPair("test", String.format("%s !=null", property)));
-							((Element) e.elements("set").get(0)).add(createElement("if", klist,
-									String.format("%s =#{%s,jdbcType=%s},", columnName, property, type)));
-						}
-					} else if ("updateByPrimaryKey".equalsIgnoreCase(attr.getValue())) {
-						String value = e.getText();
-						// 涓嶅瓨鍦ㄨ鍒�
-						if (value.indexOf(columnName) <= -1) {
-							int wpos = value.indexOf("where ");
-							if (value.substring(0, wpos).trim().endsWith(","))
-								value = value.substring(0, wpos)
-										+ String.format("%s =#{%s,jdbcType=%s},", columnName, property, type) + " "
-										+ value.substring(wpos);
-							else
-								value = value.substring(0, wpos) + ","
-										+ String.format("%s =#{%s,jdbcType=%s},", columnName, property, type) + " "
-										+ value.substring(wpos);
+    @SuppressWarnings("rawtypes")
+    public static void addColumnToMapper(String path, String columnName, String property, String type) {
+        File xmlPath = new File(path);
+        SAXReader reader = new SAXReader();
+        Document document = null;
+        try {
+            document = reader.read(xmlPath);
+            Element root = document.getRootElement();
+            // 寰楀埌鏍瑰厓绱犵殑鎵�鏈夊瓙鑺傜偣
+            List<Element> elementList = root.elements();
+            // 閬嶅巻鎵�鏈夊瓙鑺傜偣
+            for (Element e : elementList) {
+                if (e.getName().equals("resultMap")) {
+                    AbstractAttribute attr = (AbstractAttribute) e.attribute("id");
+                    if ("BaseResultMap".equalsIgnoreCase(attr.getValue())) {
+                        List list = e.elements("result");
+                        boolean isE = false;
+                        for (int i = 0; i < list.size(); i++) {
+                            Element item = (Element) list.get(i);
+                            attr = (AbstractAttribute) item.attribute("property");
+                            if (attr.getValue().trim().equalsIgnoreCase(property)) {
+                                isE = true;
+                                break;
+                            }
+                        }
+                        if (!isE) {
+                            List<KeyPair> li = new ArrayList<>();
+                            li.add(new KeyPair("column", columnName));
+                            li.add(new KeyPair("property", property));
+                            li.add(new KeyPair("jdbcType", type));
+                            e.add(createElement("result", li, null));
+                        }
+                    }
+                } else if (e.getName().equals("sql")) {
+                    AbstractAttribute attr = (AbstractAttribute) e.attribute("id");
+                    if ("Base_Column_List".equalsIgnoreCase(attr.getValue())) {
+                        String columns = e.getText();
+                        String[] cs = columns.split(",");
+                        boolean isE = false;
+                        for (String c : cs) {
+                            if (c.trim().equalsIgnoreCase(columnName)) {
+                                isE = true;
+                                break;
+                            }
+                        }
+                        if (!isE) {
+                            columns += ("," + columnName);
+                            e.setText(columns);
+                        }
+                    }
 
-							e.setText(value);
-						}
-					}
+                } else if (e.getName().equals("insert")) {
+                    AbstractAttribute attr = (AbstractAttribute) e.attribute("id");
+                    if ("insert".equalsIgnoreCase(attr.getValue())) {
+                        String insert = e.getText();
+                        String[] cs = insert.split("values ");
+                        if (cs.length > 1) {
+                            int start = cs[0].indexOf("(");
+                            int end = cs[0].indexOf(")");
+                            String columns = cs[0].substring(start, end);
+                            String[] cols = columns.split(",");
+                            boolean isE = false;
+                            for (String col : cols) {
+                                if (col.trim().equalsIgnoreCase(columnName)) {
+                                    isE = true;
+                                    break;
+                                }
+                            }
+                            if (!isE) {
+                                cs[0] = cs[0].replace(columns, columns + ("," + columnName));
+                                start = cs[1].indexOf("(");
+                                end = cs[1].indexOf(")");
+                                String columns2 = cs[1].substring(start, end);
+                                cs[1] = cs[1].replace(columns2,
+                                        columns2 + String.format(",#{%s,jdbcType=%s}", property, type));
+                                insert = cs[0] + " values " + cs[1];
+                                e.setText(insert);
+                            }
+                        }
 
-				}
-			}
-		} catch (DocumentException e1) {
-			e1.printStackTrace();
-		}
-		if (document != null) {
-			OutputFormat format = OutputFormat.createPrettyPrint();
-			format.setEncoding("UTF-8");
-			try {
-				XMLWriter writer = new XMLWriter(new FileOutputStream(path), format);
-				writer.write(document);
-			} catch (Exception e) {
-				e.printStackTrace();
-			}
-		}
-	}
+                    } else if ("insertSelective".equalsIgnoreCase(attr.getValue())) {
+                        List trims = e.elements("trim");
+                        Element els = (Element) trims.get(0);
+                        boolean isE = false;
+                        for (int i = 0; i < els.elements("if").size(); i++) {
+                            String cn = ((Element) els.elements("if").get(i)).getText().replace(",", "").trim();
+                            if (columnName.equalsIgnoreCase(cn)) {
+                                isE = true;
+                                break;
+                            }
+                        }
+                        if (!isE) {
+                            List<KeyPair> list = new ArrayList<>();
+                            list.add(new KeyPair("test", String.format("%s != null", property)));
+                            els.add(createElement("if", list, columnName + ","));
 
-	private static Element createElement(String qName, List<KeyPair> keyPairList, String value) {
-		Element element = DocumentHelper.createElement(qName);
-		for (KeyPair kp : keyPairList) {
-			element.addAttribute(kp.key, kp.value);
-		}
-		if (value != null)
-			element.setText(value);
-		return element;
-	}
+                            els = (Element) trims.get(1);
+                            list = new ArrayList<>();
+                            list.add(new KeyPair("test", String.format("%s != null", property)));
+                            els.add(createElement("if", list, String.format("#{%s,jdbcType=%s}", property, type)));
+                        }
+                    }
+
+                } else if (e.getName().equals("update")) {
+                    AbstractAttribute attr = (AbstractAttribute) e.attribute("id");
+                    if ("updateByPrimaryKeySelective".equalsIgnoreCase(attr.getValue())) {
+                        List list = ((Element) e.elements("set").get(0)).elements("if");
+                        boolean isE = false;
+                        for (int i = 0; i < list.size(); i++) {
+                            if (((Element) list.get(i)).getText().indexOf(columnName) > -1) {
+                                isE = true;
+                                break;
+                            }
+                        }
+                        if (!isE) {
+                            List<KeyPair> klist = new ArrayList<>();
+                            klist.add(new KeyPair("test", String.format("%s !=null", property)));
+                            ((Element) e.elements("set").get(0)).add(createElement("if", klist,
+                                    String.format("%s =#{%s,jdbcType=%s},", columnName, property, type)));
+                        }
+                    } else if ("updateByPrimaryKey".equalsIgnoreCase(attr.getValue())) {
+                        String value = e.getText();
+                        // 涓嶅瓨鍦ㄨ鍒�
+                        if (value.indexOf(columnName) <= -1) {
+                            int wpos = value.indexOf("where ");
+                            if (value.substring(0, wpos).trim().endsWith(","))
+                                value = value.substring(0, wpos)
+                                        + String.format("%s =#{%s,jdbcType=%s},", columnName, property, type) + " "
+                                        + value.substring(wpos);
+                            else
+                                value = value.substring(0, wpos) + ","
+                                        + String.format("%s =#{%s,jdbcType=%s},", columnName, property, type) + " "
+                                        + value.substring(wpos);
+
+                            e.setText(value);
+                        }
+                    }
+
+                }
+            }
+        } catch (DocumentException e1) {
+            e1.printStackTrace();
+        }
+        if (document != null) {
+            OutputFormat format = OutputFormat.createPrettyPrint();
+            format.setEncoding("UTF-8");
+            try {
+                XMLWriter writer = new XMLWriter(new FileOutputStream(path), format);
+                writer.write(document);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+    }
+
+    private static Element createElement(String qName, List<KeyPair> keyPairList, String value) {
+        Element element = DocumentHelper.createElement(qName);
+        for (KeyPair kp : keyPairList) {
+            element.addAttribute(kp.key, kp.value);
+        }
+        if (value != null)
+            element.setText(value);
+        return element;
+    }
 
 }
 
 class KeyPair {
-	String key;
-	String value;
+    String key;
+    String value;
 
-	public KeyPair(String key, String value) {
-		this.key = key;
-		this.value = value;
-	}
+    public KeyPair(String key, String value) {
+        this.key = key;
+        this.value = value;
+    }
 
-	public KeyPair() {
+    public KeyPair() {
 
-	}
+    }
 
 }

--
Gitblit v1.8.0