遇到通过xml文件生成数据表的业务需求,自己用来记录一下。
直接干货:
package com.ruoyi.web.controller.demo.controller;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.StringReader;
import java.util.List;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import org.jdom.xpath.XPath;
import org.springframework.util.StringUtils;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
public class Sqlmap2Table {
// 默认所有的varchar都是512,可以保证满足绝大多数的字段
private static final String DEFAULT_VARCHAR_LENGTH = "VARCHAR(256)";
public static void main(String[] args) throws Exception {
String sqlMapPath = "D:/mapper";//这里指定你的sqlmap配置文件所在路径
analysis(sqlMapPath);
}
/* 根据指定的目录进行遍历分析
*
* @param path
* @throws IOException
* @throws JDOMException
*/
private static void analysis(String path) throws IOException, JDOMException {
File filePath = new File(path);
if (filePath.isDirectory() && !filePath.getName().equals(".svn")) {
File[] fileList = filePath.listFiles();
for (File file : fileList) {
if (file.isDirectory()) {
analysis(file.getAbsolutePath());
} else {
analysisSqlMap(file.getAbsolutePath());
}
}