package javabase; import com.google.common.base.Joiner; import com.google.common.collect.Lists; import org.xmind.core.Core; import org.xmind.core.CoreException; import org.xmind.core.ISheet; import org.xmind.core.ITopic; import org.xmind.core.IWorkbook; import org.xmind.core.IWorkbookBuilder; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.Serializable; import java.nio.charset.StandardCharsets; import java.util.List; import java.util.stream.Collectors; public class XMindToMapper { public static final String SPACE = " "; public static final String TAB = " "; public static final String LINE = "\n"; public static final String XML_HEAD_1 = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + "<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\" >\n" + "<mapper namespace=\"com.pingan.stock.fss.core.service.dao."; public static final String XML_HEAD_2 = "\">"; public static final String XML_TAIL = "</mapper>"; public static void main(String[] args) { String a = XMindToMapper.Column.javaField("A"); String t_ab_cd = XMindToMapper.Table.poName("T_AB_CD"); String filePath = "C:\\Users\\21461\\Desktop\\商城\\表设计.xmind"; List<Table> tables = analyseToTables(filePath); String sql = sql(tables); write(sql, "1.txt"); for (XMindToMapper.Table table : tables) { String xml = xml(table); write(xml, table.getDaoName() + ".xml"); } } public static String XML_HEAD(XMindToMapper.Table table) { StringBuilder ss = new StringBuilder(""); ss.append(XML_HEAD_1).append(table.getDaoName()).append(XML_HEAD_2); ss.append(LINE); return ss.toString(); } public static String BASE_COLUMN_LIST(XMindToMapper.Table table) { StringBuilder ss = new StringBuilder(); List<XMindToMapper.Column> columns = table.getColumns(); ss.append(TAB).append("<sql id=\"BASE_COLUMN_LIST\">").append("\n"); ss.append(TAB).append(TAB).append(Joiner.on("," + SPACE).join(columns.stream().map(column -> column.getColumnName()).collect(Collectors.toList()))); ss.append(LINE); ss.append(TAB).append("</sql>"); ss.append(LINE); return ss.toString(); } public static String PO(XMindToMapper.Table table) { StringBuilder ss = new StringBuilder(); for (XMindToMapper.Column column : table.getColumns()) { ss.append(TAB).append("//").append(SPACE).append(column.getColumnConment()); ss.append(LINE); ss.append(TAB).append("private").append(SPACE).append(column.getJavaFieldType()).append(SPACE).append(column.getJavaField()).append(";"); ss.append(LINE); } ss.append(LINE); return ss.toString(); } public static String BASE_RESULT_MAP(XMindToMapper.Table table) { StringBuilder ss = new StringBuilder(); ss.append(TAB).append("<resultMap").append(SPACE).append("id=\"BASE_RESULT_MAP\"").append(SPACE).append("type=\"com.pingan.stock.fss.core.service.po." + XMindToMapper.Table.poName(table.getTableName()) + ("\">")); ss.append(LINE); for (XMindToMapper.Column column : table.getColumns()) { ss.append(TAB).append(TAB).append("<result").append(SPACE).append("column=\"").append(column.getColumnName()).append("\"").append(SPACE).append("jdbcType=\"").append(column.getJdbcType()).append("\"").append(SPACE).append("property=\"").append(column.getJavaField()).append("\"/>"); ss.append(LINE); } ss.append(TAB).append("</resultMap>"); ss.append(LINE); return ss.toString(); } public static String INSERT(XMindToMapper.Table table) { StringBuilder ss = new StringBuilder(); ss.append(TAB).append("<insert id=\"insert\"").append(SPACE).append("parameterType=\"com.pingan.stock.fss.core.service.po.").append(table.getPoName()).append("\">"); ss.append(LINE); ss.append(TAB).append(TAB).append("INSERT").append(SPACE).append("INTO").append(SPACE).append(table.getTableName()).append(SPACE).append("("); ss.append(LINE); for (int i = 0; i < table.getColumns().size(); i++) { XMindToMapper.Column column = table.getColumns().get(i); ss.append(TAB).append(TAB).append(TAB).append(column.getColumnName()); if (i != table.getColumns().size() - 1) { ss.append(","); } ss.append(LINE); } ss.append(TAB).append(TAB).append(")"); ss.append(LINE); ss.append(TAB).append(TAB).append("VALUES("); ss.append(LINE); for (int i = 0; i < table.getColumns().size(); i++) { XMindToMapper.Column column = table.getColumns().get(i); ss.append(TAB).append(TAB).append(TAB); if ("INSERT_TIME||UPDATE_TIME||H_INSERT_TIME".contains(column.getColumnName())) { ss.append("SYSDATE"); } else { ss.append("#{").append(column.getJavaField()).append(",").append("jdbcType=").append(column.getJdbcType()).append("}"); } if (i != table.getColumns().size() - 1) { ss.append(","); } ss.append(LINE); } ss.append(TAB).append(TAB).append(")"); ss.append(LINE); ss.append(TAB).append("</insert>"); ss.append(LINE); return ss.toString(); } private static String xml(XMindToMapper.Table table) { StringBuilder ss = new StringBuilder(""); //XML_HEADER ss.append(XML_HEAD(table)); // ss.append(LINE); // BASE_COLUMN_LIST ss.append(BASE_COLUMN_LIST(table)); ss.append(LINE); // BASE_RESULT_MAP ss.append(BASE_RESULT_MAP((table))); ss.append(LINE); //insert ss.append(INSERT(table)); // ss.append(LINE); // XML_TAIL ss.append(XML_TAIL); ss.append(LINE); // PO ss.append(PO(table)); ss.append(LINE); ss.append(LINE); ss.append(LINE); return ss.toString(); } public static String CREATE(XMindToMapper.Table table) { StringBuilder ss = new StringBuilder(""); ss.append("--CREATE TABLE").append("\n"); ss.append("CREATE TABLE ").append(table.getTableName()).append(" ( ").append("\n"); List<XMindToMapper.Column> columns = table.getColumns(); for (int i = 0; i < columns.size(); i++) { String columnName = columns.get(i).getColumnName().toUpperCase(); String columnType = columns.get(i).getColumnType(); String primaryKey = ""; if ("SERIAL_NO".contains(columnName)) { primaryKey = "PRIMARY KEY"; } ss.append(" "); StringBuilder createRowBuilder = new StringBuilder(""); createRowBuilder.append(columnName).append(" ").append(columnType).append(" ").append(primaryKey); if (i != columns.size() - 1) { createRowBuilder.append(","); } ss.append(createRowBuilder); ss.append("\n"); } ss.append(");").append("\n"); return ss.toString(); } public static String COMMENT(XMindToMapper.Table table) { StringBuilder ss = new StringBuilder(""); ss.append("--Comments").append("\n"); ss.append("COMMENT ON TABLE ").append(table.getTableName()).append(" IS ").append("'").append(table.getTableComment()).append("';"); ss.append("\n"); for (XMindToMapper.Column column : table.getColumns()) { ss.append("COMMENT ON COLUMN ").append(table.getTableName()).append(".").append(column.getColumnName().toUpperCase()).append(" IS ").append("'").append(column.getColumnConment().toUpperCase()).append("';"); ss.append("\n"); } return ss.toString(); } public static String GTRANT(XMindToMapper.Table table) { StringBuilder ss = new StringBuilder(""); ss.append("--Grants").append("\n"); String tableName = table.getTableName(); ss.append("CREATE PUBLIC SYNONYM ").append(tableName).append(" FOR ").append(tableName).append(";\n"); ss.append("GRANT SELECT,UPDATE,INSERT,DELETE ON ").append(tableName).append(" TO FSSCOPR;").append("\n"); ss.append("GRANT SELECT ON ").append(tableName).append(" TO DEVSUP01;").append("\n"); ss.append("GRANT SELECT ON ").append(tableName).append(" TO DEVSUP03;").append("\n"); ss.append("GRANT SELECT,UPDATE,INSERT,DELETE ON ").append(tableName).append(" TO DSPJOB;").append("\n"); ss.append("GRANT SELECT,UPDATE,INSERT,DELETE ON ").append(tableName).append(" TO BIEBQRY;").append("\n"); return ss.toString(); } public static String sql(List<XMindToMapper.Table> tables) { StringBuffer ss = new StringBuffer(""); for (XMindToMapper.Table table : tables) { ss.append(CREATE(table)); ss.append(COMMENT(table)); ss.append(GTRANT(table)); ss.append("\n\n"); } return ss.toString(); } public static void write(String data, String to) { FileOutputStream fis = null; try { fis = new FileOutputStream(to); fis.write(data.getBytes(StandardCharsets.UTF_8)); fis.flush(); } catch (Exception e) { e.printStackTrace(); } finally { if (fis != null) { try { fis.close(); } catch (IOException e) { e.printStackTrace(); } } } } public static List<XMindToMapper.Table> analyseToTables(String filePath) { IWorkbook iWorkbook = null; try { IWorkbookBuilder builder = Core.getWorkbookBuilder(); iWorkbook = builder.loadFromFile(new File(filePath)); } catch (IOException e) { e.printStackTrace(); } catch (CoreException e) { e.printStackTrace(); } ISheet primarySheet = iWorkbook.getPrimarySheet(); ITopic rootTopic = primarySheet.getRootTopic(); List<ITopic> tables = rootTopic.getAllChildren().stream().filter(e -> e.getTitleText().contains("表")).collect(Collectors.toList()); List<XMindToMapper.Table> ts = Lists.newArrayList(); for (ITopic table : tables) { XMindToMapper.Table t = new XMindToMapper.Table(); t.setTableComment(table.getTitleText()); ITopic tableName = table.getAllChildren().get(0); t.setTableName(tableName.getTitleText().toUpperCase()); t.setPoName(XMindToMapper.Table.poName(t.getTableName())); t.setDaoName(XMindToMapper.Table.daoName(t.getPoName())); List<ITopic> columns = tableName.getAllChildren(); List<XMindToMapper.Column> cs = Lists.newArrayList(); for (ITopic column : columns) { XMindToMapper.Column c = new XMindToMapper.Column(); String columnName = column.getTitleText().toUpperCase(); c.setColumnName(columnName); List<ITopic> comments = column.getAllChildren(); String columnConment = Joiner.on(";").join(comments.stream().map(comment -> comment.getTitleText()).collect(Collectors.toList())); c.setColumnConment(columnConment); String columnType = "VARCHAR2(32)"; String jdbcType = "VARCHAR"; if (columnName.equals("UPDATE_TIME") || columnName.equals("INSERT_TIME") || columnName.equals("H_INSERT_TIME")) { columnType = "DATE"; jdbcType = "TIMESTAMP"; } c.setColumnType(columnType); c.setJdbcType(jdbcType); c.setJavaField(XMindToMapper.Column.javaField(columnName)); c.setJavaFieldType(XMindToMapper.Column.javaFieldType(columnType)); cs.add(c); } t.setColumns(cs); ts.add(t); } return ts; } public static class Table implements Serializable { private String tableName; private String tableComment; private List<XMindToMapper.Column> columns; private String poName; private String daoName; public String getTableName() { return tableName; } public void setTableName(String tableName) { this.tableName = tableName; } public String getTableComment() { return tableComment; } public void setTableComment(String tableComment) { this.tableComment = tableComment; } public List<XMindToMapper.Column> getColumns() { return columns; } public void setColumns(List<XMindToMapper.Column> columns) { this.columns = columns; } public String getPoName() { return poName; } public void setPoName(String poName) { this.poName = poName; } public String getDaoName() { return daoName; } public void setDaoName(String daoName) { this.daoName = daoName; } public static String poName(String tableName) { StringBuilder ss = new StringBuilder(""); List<String> names = Lists.newArrayList(tableName.split("_")); names.remove(0); for (String name : names) { ss.append(String.valueOf(name.toUpperCase().charAt(0)) + name.toLowerCase().substring(1)); } return ss.toString() + "PO"; } public static String daoName(String poName) { return poName.substring(0, poName.length() - 2) + "Dao"; } } public static class Column implements Serializable { private String columnName; private String columnType; private String columnConment; private String javaField; private String javaFieldType; private String jdbcType; public String getColumnName() { return columnName; } public void setColumnName(String columnName) { this.columnName = columnName; } public String getColumnType() { return columnType; } public void setColumnType(String columnType) { this.columnType = columnType; } public String getColumnConment() { return columnConment; } public void setColumnConment(String columnConment) { this.columnConment = columnConment; } public String getJavaField() { return javaField; } public void setJavaField(String javaField) { this.javaField = javaField; } public String getJavaFieldType() { return javaFieldType; } public void setJavaFieldType(String javaFieldType) { this.javaFieldType = javaFieldType; } public String getJdbcType() { return jdbcType; } public void setJdbcType(String jdbcType) { this.jdbcType = jdbcType; } public static String javaField(String columnName) { StringBuilder ss = new StringBuilder(""); List<String> names = Lists.newArrayList(columnName.split("_")); ss.append(names.get(0).toLowerCase()); names.remove(0); for (String name : names) { ss.append(String.valueOf(name.toUpperCase().charAt(0)) + name.toLowerCase().substring(1)); } return ss.toString(); } public static String javaFieldType(String columnType) { if (columnType.contains("VARCHAR")) { return "String"; } if (columnType.contains("DATE")) { return "Date"; } return "XXX"; } } }
package javabase; import com.google.common.base.Joiner; import com.google.common.collect.Lists; import org.xmind.core.Core; import org.xmind.core.CoreException; import org.xmind.core.ISheet; import org.xmind.core.ITopic; import org.xmind.core.IWorkbook; import org.xmind.core.IWorkbookBuilder; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.Serializable; import java.nio.charset.StandardCharsets; import java.util.List; import java.util.stream.Collectors; public class XMindToMapper_NOT { public static final String SPACE = " "; public static final String TAB = " "; public static final String LINE = "\n"; public static final String XML_HEAD_1 = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + "<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\" >\n" + "<mapper namespace=\"com.pingan.stock.fss.core.service.dao."; public static final String XML_HEAD_2 = "\">"; public static final String XML_TAIL = "</mapper>"; public static void main(String[] args) { String a = XMindToMapper_NOT.Column.javaField("A"); String t_ab_cd = XMindToMapper_NOT.Table.poName("T_AB_CD"); String filePath = "C:\\Users\\21461\\Desktop\\商城\\表设计.xmind"; List<XMindToMapper_NOT.Table> tables = analyseToTables(filePath); String sql = sql(tables); write(sql, "1.txt"); for (XMindToMapper_NOT.Table table : tables) { String xml = xml(table); write(xml, table.getDaoName() + ".xml"); } // 删除脚本 删同义词,删表 不包含索引那些 write(dropSql(tables), "drop.sql"); } private static String dropSql(List<XMindToMapper_NOT.Table> tables) { StringBuffer dropSql = new StringBuffer(""); tables.forEach(e -> { dropSql.append("DROP PUBLIC SYNONYM " + e.getTableName() + ";").append(LINE); dropSql.append("DROP TABLE " + e.getTableName() + ";").append(LINE); dropSql.append(LINE); }); dropSql.append("COMMIT;"); return dropSql.toString(); } public static String XML_HEAD(XMindToMapper_NOT.Table table) { StringBuilder ss = new StringBuilder(""); ss.append(XML_HEAD_1).append(table.getDaoName()).append(XML_HEAD_2); ss.append(LINE); return ss.toString(); } public static String BASE_COLUMN_LIST(XMindToMapper_NOT.Table table) { StringBuilder ss = new StringBuilder(); List<XMindToMapper_NOT.Column> columns = table.getColumns(); ss.append(TAB).append("<sql id=\"BASE_COLUMN_LIST\">").append("\n"); ss.append(TAB).append(TAB).append(Joiner.on("," + SPACE).join(columns.stream().map(column -> column.getColumnName()).collect(Collectors.toList()))); ss.append(LINE); ss.append(TAB).append("</sql>"); ss.append(LINE); return ss.toString(); } public static String PO(XMindToMapper_NOT.Table table) { StringBuilder ss = new StringBuilder(); for (XMindToMapper_NOT.Column column : table.getColumns()) { ss.append(TAB).append("//").append(SPACE).append(column.getColumnConment()); ss.append(LINE); ss.append(TAB).append("private").append(SPACE).append(column.getJavaFieldType()).append(SPACE).append(column.getJavaField()).append(";"); ss.append(LINE); } ss.append(LINE); return ss.toString(); } public static String BASE_RESULT_MAP(XMindToMapper_NOT.Table table) { StringBuilder ss = new StringBuilder(); ss.append(TAB).append("<resultMap").append(SPACE).append("id=\"BASE_RESULT_MAP\"").append(SPACE).append("type=\"com.pingan.stock.fss.core.service.po." + XMindToMapper_NOT.Table.poName(table.getTableName()) + ("\">")); ss.append(LINE); for (XMindToMapper_NOT.Column column : table.getColumns()) { ss.append(TAB).append(TAB).append("<result").append(SPACE).append("column=\"").append(column.getColumnName()).append("\"").append(SPACE).append("jdbcType=\"").append(column.getJdbcType()).append("\"").append(SPACE).append("property=\"").append(column.getJavaField()).append("\"/>"); ss.append(LINE); } ss.append(TAB).append("</resultMap>"); ss.append(LINE); return ss.toString(); } public static String INSERT(XMindToMapper_NOT.Table table) { StringBuilder ss = new StringBuilder(); ss.append(TAB).append("<insert id=\"insert\"").append(SPACE).append("parameterType=\"com.pingan.stock.fss.core.service.po.").append(table.getPoName()).append("\">"); ss.append(LINE); ss.append(TAB).append(TAB).append("INSERT").append(SPACE).append("INTO").append(SPACE).append(table.getTableName()).append(SPACE).append("("); ss.append(LINE); for (int i = 0; i < table.getColumns().size(); i++) { XMindToMapper_NOT.Column column = table.getColumns().get(i); ss.append(TAB).append(TAB).append(TAB).append(column.getColumnName()); if (i != table.getColumns().size() - 1) { ss.append(","); } ss.append(LINE); } ss.append(TAB).append(TAB).append(")"); ss.append(LINE); ss.append(TAB).append(TAB).append("VALUES("); ss.append(LINE); for (int i = 0; i < table.getColumns().size(); i++) { XMindToMapper_NOT.Column column = table.getColumns().get(i); ss.append(TAB).append(TAB).append(TAB); if ("INSERT_TIME||UPDATE_TIME||H_INSERT_TIME".contains(column.getColumnName())) { ss.append("SYSDATE"); } else { ss.append("#{").append(column.getJavaField()).append(",").append("jdbcType=").append(column.getJdbcType()).append("}"); } if (i != table.getColumns().size() - 1) { ss.append(","); } ss.append(LINE); } ss.append(TAB).append(TAB).append(")"); ss.append(LINE); ss.append(TAB).append("</insert>"); ss.append(LINE); return ss.toString(); } private static String xml(XMindToMapper_NOT.Table table) { StringBuilder ss = new StringBuilder(""); //XML_HEADER ss.append(XML_HEAD(table)); // ss.append(LINE); // BASE_COLUMN_LIST ss.append(BASE_COLUMN_LIST(table)); ss.append(LINE); // BASE_RESULT_MAP ss.append(BASE_RESULT_MAP((table))); ss.append(LINE); //insert ss.append(INSERT(table)); // ss.append(LINE); // XML_TAIL ss.append(XML_TAIL); ss.append(LINE); // PO ss.append(PO(table)); ss.append(LINE); ss.append(LINE); ss.append(LINE); return ss.toString(); } public static String CREATE(XMindToMapper_NOT.Table table) { StringBuilder ss = new StringBuilder(""); ss.append("--CREATE TABLE").append("\n"); ss.append("CREATE TABLE ").append(table.getTableName()).append(" ( ").append("\n"); List<XMindToMapper_NOT.Column> columns = table.getColumns(); for (int i = 0; i < columns.size(); i++) { String columnName = columns.get(i).getColumnName().toUpperCase(); String columnType = columns.get(i).getColumnType(); String primaryKey = ""; if ("SERIAL_NO".contains(columnName)) { primaryKey = "PRIMARY KEY"; } ss.append(" "); StringBuilder createRowBuilder = new StringBuilder(""); createRowBuilder.append(columnName).append(" ").append(columnType).append(" ").append(primaryKey); if (i != columns.size() - 1) { createRowBuilder.append(","); } ss.append(createRowBuilder); ss.append("\n"); } ss.append(");").append("\n"); return ss.toString(); } public static String COMMENT(XMindToMapper_NOT.Table table) { StringBuilder ss = new StringBuilder(""); ss.append("--Comments").append("\n"); ss.append("COMMENT ON TABLE ").append(table.getTableName()).append(" IS ").append("'").append(table.getTableComment()).append("';"); ss.append("\n"); for (XMindToMapper_NOT.Column column : table.getColumns()) { ss.append("COMMENT ON COLUMN ").append(table.getTableName()).append(".").append(column.getColumnName().toUpperCase()).append(" IS ").append("'").append(column.getColumnConment().toUpperCase()).append("';"); ss.append("\n"); } return ss.toString(); } public static String GTRANT(XMindToMapper_NOT.Table table) { StringBuilder ss = new StringBuilder(""); ss.append("--Grants").append("\n"); String tableName = table.getTableName(); ss.append("CREATE PUBLIC SYNONYM ").append(tableName).append(" FOR ").append(tableName).append(";\n"); ss.append("GRANT SELECT,UPDATE,INSERT,DELETE ON ").append(tableName).append(" TO FSSCOPR;").append("\n"); ss.append("GRANT SELECT ON ").append(tableName).append(" TO DEVSUP01;").append("\n"); ss.append("GRANT SELECT ON ").append(tableName).append(" TO DEVSUP03;").append("\n"); ss.append("GRANT SELECT,UPDATE,INSERT,DELETE ON ").append(tableName).append(" TO DSPJOB;").append("\n"); ss.append("GRANT SELECT,UPDATE,INSERT,DELETE ON ").append(tableName).append(" TO BIEBQRY;").append("\n"); return ss.toString(); } public static String sql(List<XMindToMapper_NOT.Table> tables) { StringBuffer ss = new StringBuffer(""); for (XMindToMapper_NOT.Table table : tables) { ss.append(CREATE(table)); ss.append(COMMENT(table)); ss.append(GTRANT(table)); ss.append("\n\n"); } return ss.toString(); } public static void write(String data, String to) { FileOutputStream fis = null; try { fis = new FileOutputStream(to); fis.write(data.getBytes(StandardCharsets.UTF_8)); fis.flush(); } catch (Exception e) { e.printStackTrace(); } finally { if (fis != null) { try { fis.close(); } catch (IOException e) { e.printStackTrace(); } } } } public static List<XMindToMapper_NOT.Table> analyseToTables(String filePath) { IWorkbook iWorkbook = null; try { IWorkbookBuilder builder = Core.getWorkbookBuilder(); iWorkbook = builder.loadFromFile(new File(filePath)); } catch (IOException e) { e.printStackTrace(); } catch (CoreException e) { e.printStackTrace(); } ISheet primarySheet = iWorkbook.getPrimarySheet(); ITopic rootTopic = primarySheet.getRootTopic(); List<ITopic> tables = rootTopic.getAllChildren().stream().filter(e -> e.getTitleText().contains("表")).collect(Collectors.toList()); List<XMindToMapper_NOT.Table> ts = Lists.newArrayList(); for (ITopic table : tables) { XMindToMapper_NOT.Table t = new XMindToMapper_NOT.Table(); t.setTableComment(table.getTitleText()); ITopic tableName = table.getAllChildren().get(0); t.setTableName(tableName.getTitleText().toUpperCase()); t.setPoName(XMindToMapper_NOT.Table.poName(t.getTableName())); t.setDaoName(XMindToMapper_NOT.Table.daoName(t.getPoName())); List<ITopic> columns = tableName.getAllChildren(); List<XMindToMapper_NOT.Column> cs = Lists.newArrayList(); for (ITopic column : columns) { XMindToMapper_NOT.Column c = new XMindToMapper_NOT.Column(); String columnName = column.getTitleText().toUpperCase(); c.setColumnName(columnName); List<ITopic> comments = column.getAllChildren(); String columnConment = Joiner.on(";").join(comments.stream().map(comment -> comment.getTitleText()).collect(Collectors.toList())); c.setColumnConment(columnConment); String columnType = "VARCHAR2(32)"; String jdbcType = "VARCHAR"; if (columnName.equals("UPDATE_TIME") || columnName.equals("INSERT_TIME") || columnName.equals("H_INSERT_TIME")) { columnType = "DATE"; jdbcType = "TIMESTAMP"; } c.setColumnType(columnType); c.setJdbcType(jdbcType); c.setJavaField(XMindToMapper_NOT.Column.javaField(columnName)); c.setJavaFieldType(XMindToMapper_NOT.Column.javaFieldType(columnType)); cs.add(c); } t.setColumns(cs); ts.add(t); } return ts; } public static class Table implements Serializable { private String tableName; private String tableComment; private List<XMindToMapper_NOT.Column> columns; private String poName; private String daoName; public String getTableName() { return tableName; } public void setTableName(String tableName) { this.tableName = tableName; } public String getTableComment() { return tableComment; } public void setTableComment(String tableComment) { this.tableComment = tableComment; } public List<XMindToMapper_NOT.Column> getColumns() { return columns; } public void setColumns(List<XMindToMapper_NOT.Column> columns) { this.columns = columns; } public String getPoName() { return poName; } public void setPoName(String poName) { this.poName = poName; } public String getDaoName() { return daoName; } public void setDaoName(String daoName) { this.daoName = daoName; } public static String poName(String tableName) { StringBuilder ss = new StringBuilder(""); List<String> names = Lists.newArrayList(tableName.split("_")); // names.remove(0); for (String name : names) { ss.append(String.valueOf(name.toUpperCase().charAt(0)) + name.toLowerCase().substring(1)); } return ss.toString() + "PO"; } public static String daoName(String poName) { return poName.substring(0, poName.length() - 2) + "Dao"; } } public static class Column implements Serializable { private String columnName; private String columnType; private String columnConment; private String javaField; private String javaFieldType; private String jdbcType; public String getColumnName() { return columnName; } public void setColumnName(String columnName) { this.columnName = columnName; } public String getColumnType() { return columnType; } public void setColumnType(String columnType) { this.columnType = columnType; } public String getColumnConment() { return columnConment; } public void setColumnConment(String columnConment) { this.columnConment = columnConment; } public String getJavaField() { return javaField; } public void setJavaField(String javaField) { this.javaField = javaField; } public String getJavaFieldType() { return javaFieldType; } public void setJavaFieldType(String javaFieldType) { this.javaFieldType = javaFieldType; } public String getJdbcType() { return jdbcType; } public void setJdbcType(String jdbcType) { this.jdbcType = jdbcType; } public static String javaField(String columnName) { StringBuilder ss = new StringBuilder(""); List<String> names = Lists.newArrayList(columnName.split("_")); ss.append(names.get(0).toLowerCase()); names.remove(0); for (String name : names) { ss.append(String.valueOf(name.toUpperCase().charAt(0)) + name.toLowerCase().substring(1)); } return ss.toString(); } public static String javaFieldType(String columnType) { if (columnType.contains("VARCHAR")) { return "String"; } if (columnType.contains("DATE")) { return "Date"; } return "XXX"; } } }