mysql根据数据库自动生成实体(dto,service,impl,mybatis,xml)
2013-10-29 12:29
891 查看
package com.csair.test; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; public class GenerateEntity { private String url = "jdbc:mysql://localhost:3306/database"; private String username = "root"; private String password = "root"; private String driverClass = "com.mysql.jdbc.Driver"; private DatabaseMetaData dbMetaData = null; private String packageName = "com.csair.test.dto;"; private String path = "C:\\Users\\ppt\\Desktop\\test\\"; /** * @Description: 获取表对应的所有列 * @author: ppt * @date: 2015-3-16 上午10:13:17 * @param tableName * @return: void */ public void getTableColumns(String tableName) { try { String ACCESS_DOMAIN = "private"; ResultSet resultSet = dbMetaData.getColumns(null, null, tableName, "%"); while(resultSet.next()) { ResultSet resultSetColumn = dbMetaData.getColumns(null, null, tableName, null); String className = getFormatString(tableName,true); StringBuffer header = new StringBuffer("package " + packageName + "\n\n"); StringBuffer footer = new StringBuffer(); StringBuffer contentBuffer = new StringBuffer(); contentBuffer.append("public class " + className + "{\n"); while(resultSetColumn.next()) { contentBuffer.append("\t"+ACCESS_DOMAIN + " "); String columnType = resultSetColumn.getString("TYPE_NAME"); String COLUMN_TYPE = getColumnType(columnType); if("Date".equals(COLUMN_TYPE)) { header.append("import java.util.Date;\n"); } contentBuffer.append(COLUMN_TYPE + " "); String columnName = resultSetColumn.getString("COLUMN_NAME"); String remark = resultSetColumn.getString("REMARKS"); columnName = this.getFormatString(columnName, false); footer.append(getSetGenerater(columnName, COLUMN_TYPE)); contentBuffer.append(columnName+";\t//"+remark+"\n"); } contentBuffer.append("\n\n"+footer); contentBuffer.append("}"); header.append("\n"); header.append(contentBuffer); this.outputToFile(className+".java", header.toString()); } } catch (SQLException e) { e.printStackTrace(); } } public GenerateEntity() { try { Class.forName(driverClass); Connection conn = DriverManager.getConnection(url, username, password); dbMetaData = conn.getMetaData(); } catch(Exception e) { e.printStackTrace(); } } /** * @Description: 获取所以的表 * @author: ppt * @date: 2015-3-16 上午10:12:57 * @return: void */ public List<String> getAllTableList() { List<String> tableList = new ArrayList<String>(); try { String[] types = { "TABLE" }; ResultSet rs = dbMetaData.getTables(null, null, "%", types); while (rs.next()) { String tableName = rs.getString("TABLE_NAME"); //表名 tableList.add(tableName); } } catch (SQLException e) { e.printStackTrace(); } return tableList; } /** * 处理字符串,去掉下划线“_”,并且把下划线的下一个字符变大写,flag为true,表示首字母要大写 * @param name * @param flag * @return */ private String getFormatString(String name, boolean flag) { name = name.toLowerCase(); String[] nameTemp = name.split("_"); StringBuffer buffer = new StringBuffer(); for(String str : nameTemp) { String head = str.substring(0, 1).toUpperCase(); String tail = str.substring(1); buffer.append(head+tail); } StringBuffer result = null; if(!flag) { result = new StringBuffer(); String head = buffer.substring(0, 1).toLowerCase(); String tail = buffer.substring(1); result.append(head+tail); return result.toString(); } return buffer.toString(); } /** * 把String内容写到文件 * @param fileName * @param content */ private void outputToFile(String fileName, String content) { OutputStream os = null; try { os = new FileOutputStream(path+fileName); } catch (FileNotFoundException e1) { e1.printStackTrace(); } byte[] b = content.getBytes(); try { os.write(b); os.flush(); } catch (IOException e) { e.printStackTrace(); } finally { try { os.close(); } catch (IOException e) { e.printStackTrace(); } } } /** * 数据库类型转为java类型 * @param column * @return */ private String getColumnType(String column) { String COLUMN_TYPE = null; if("VARCHAR".equals(column)) { COLUMN_TYPE = "String"; } else if("BIGINT".equals(column)) { COLUMN_TYPE = "Long"; } else if("DATETIME".equals(column)) { COLUMN_TYPE = "Date"; } else if("INT".equals(column) || "INT UNSIGNED".equals(column)) { COLUMN_TYPE = "Integer"; } else if("BIGINT UNSIGNED".equals(column)) { COLUMN_TYPE = "Long"; } else if("TINYINT UNSIGNED".equals(column)) { COLUMN_TYPE = "Short"; } else if("DECIMAL".equals(column) || "FLOAT".equals(column) || "DOUBLE".equals(column)) { COLUMN_TYPE = "Double"; } else if("TEXT".equals(column) || "MEDIUMTEXT".equals(column) || "LONGTEXT".equals(column)) { COLUMN_TYPE = "String"; } else if("TIMESTAMP".equals(column) || "DATE".equals(column) || "DATETIME".equals(column)) { COLUMN_TYPE = "Date"; } else if("TINYINT".equals(column)) { COLUMN_TYPE = "Short"; } else if("DECIMAL UNSIGNED".equals(column)) { COLUMN_TYPE = "Double"; } else if("SMALLINT".equals(column)) { COLUMN_TYPE = "Short"; } else if("BIT".equals(column)) { COLUMN_TYPE = "Short"; } else if("CHAR".equals(column)) { COLUMN_TYPE = "String"; } else if("VARBINARY".equals(column)) { COLUMN_TYPE = "byte"; } else if("BLOB".equals(column)) { COLUMN_TYPE = "byte"; } return COLUMN_TYPE; } private String getSetGenerater(String columnName, String columnType) { StringBuffer sb = new StringBuffer(); sb.append("\tpublic " + columnType + " get" +columnName.substring(0, 1).toUpperCase()+columnName.substring(1, columnName.length()) + "() {\n"); sb.append("\t\treturn " + columnName + ";\n"); sb.append("\t}\n\n"); sb.append("\tpublic void set" + columnName.substring(0, 1).toUpperCase()+columnName.substring(1, columnName.length())); sb.append("("+columnType +" " + columnName +") {\n"); sb.append("\t\tthis." + columnName + " = " + columnName + ";\n"); sb.append("\t}\n\n"); return sb.toString(); } public static void main(String[] agrs) { GenerateEntity aa = new GenerateEntity(); List<String> tableList = aa.getAllTableList(); for(String tableName : tableList) { aa.getTableColumns(tableName); } // aa.getTableColumns("REPORT_REQ"); } }接口
package com.csair.test; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; public class GenerateService { private String url = "jdbc:mysql://localhost:3306/database"; private String username = "root"; private String password = "root"; private String driverClass = "com.mysql.jdbc.Driver"; private DatabaseMetaData dbMetaData = null; private String packageName = "com.csair.test.service;"; private String packageNameDto = "com.csair.test.dto"; private String path = "C:\\Users\\ppt\\Desktop\\test\\"; public GenerateService() { try { Class.forName(driverClass); Connection conn = DriverManager.getConnection(url, username, password); dbMetaData = conn.getMetaData(); } catch(Exception e) { e.printStackTrace(); } } /** * @Description: 获取所有的表 * @author: ppt * @date: 2015-3-16 上午10:12:57 * @return: void */ public List<String> getAllTableList() { List<String> tableList = new ArrayList<String>(); try { String[] types = { "TABLE" }; ResultSet rs = dbMetaData.getTables(null, null, "%", types); while (rs.next()) { String tableName = rs.getString("TABLE_NAME"); //表名 tableList.add(tableName); } } catch (SQLException e) { e.printStackTrace(); } return tableList; } /** * 处理字符串,去掉下划线“_”,并且把下划线的下一个字符变大写,flag为true,表示首字母要大写 * @param name * @param flag * @return */ private String getFormatString(String name, boolean flag) { name = name.toLowerCase(); String[] nameTemp = name.split("_"); StringBuffer buffer = new StringBuffer(); for(String str : nameTemp) { String head = str.substring(0, 1).toUpperCase(); String tail = str.substring(1); buffer.append(head+tail); } StringBuffer result = null; if(!flag) { result = new StringBuffer(); String head = buffer.substring(0, 1).toLowerCase(); String tail = buffer.substring(1); result.append(head+tail); return result.toString(); } return buffer.toString(); } /** * 把String内容写到文件 * @param fileName * @param content */ private void outputToFile(String fileName, String content) { OutputStream os = null; try { os = new FileOutputStream(path+fileName); } catch (FileNotFoundException e1) { e1.printStackTrace(); } byte[] b = content.getBytes(); try { os.write(b); os.flush(); } catch (IOException e) { e.printStackTrace(); } finally { try { os.close(); } catch (IOException e) { e.printStackTrace(); } } } private void getService() { List<String> tableList = getAllTableList(); for(String tableName : tableList) { String table = getFormatString(tableName, true); String className = table + "Service"; StringBuffer sb = new StringBuffer(); sb.append("package " + packageName + "\n\n"); sb.append("import " + packageNameDto + "." + table + ";\n"); sb.append("import java.util.List;\n"); sb.append("import javax.ws.rs.POST;\n"); sb.append("import javax.ws.rs.GET;\n"); sb.append("import javax.ws.rs.PathParam;\n"); sb.append("import javax.ws.rs.Path;\n"); sb.append("import javax.ws.rs.Produces;\n"); sb.append("import javax.ws.rs.core.MediaType;\n"); sb.append("\n@Path(\"/" + className.substring(0, 1).toLowerCase() + className.substring(1) + "\")\n"); sb.append("public interface " + className + " {\n\n"); sb.append("\t//增加实体\n"); sb.append("\t@POST\n"); sb.append("\t@Path(\"addEntity\")\n"); sb.append("\t@Produces(MediaType.APPLICATION_XML)\n"); sb.append("\tpublic long addEntity(" + table + " dto) throws Exception;\n\n"); sb.append("\t//删除实体\n"); sb.append("\t@GET\n"); sb.append("\t@Path(\"deleteEntity/{id}\")\n"); sb.append("\t@Produces(MediaType.APPLICATION_XML)\n"); sb.append("\tpublic boolean deleteEntity(@PathParam(\"id\") long id) throws Exception;\n\n"); sb.append("\t//修改实体\n"); sb.append("\t@POST\n"); sb.append("\t@Path(\"updateEntity\")\n"); sb.append("\t@Produces(MediaType.APPLICATION_XML)\n"); sb.append("\tpublic long updateEntity(" + table + " dto) throws Exception;\n\n"); sb.append("\t//查询实体\n"); sb.append("\t@POST\n"); sb.append("\t@Path(\"findEntity\")\n"); sb.append("\t@Produces(MediaType.APPLICATION_XML)\n"); sb.append("\tpublic "+table+" findEntity(" + table + " dto) throws Exception;\n\n"); sb.append("\t//查询实体List\n"); sb.append("\t@POST\n"); sb.append("\t@Path(\"findEntityList\")\n"); sb.append("\t@Produces(MediaType.APPLICATION_XML)\n"); sb.append("\tpublic List<"+table+"> findEntityList(" + table + " dto) throws Exception;\n\n"); sb.append("}\n"); outputToFile(className+".java", sb.toString()); } } public static void main(String[] agrs) { GenerateService aa = new GenerateService(); aa.getService(); } }mybatis接口
package com.csair.test; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; public class GenerateMybatisRepository { private String url = "jdbc:mysql://localhost:3306/database"; private String username = "root"; private String password = "root"; private String driverClass = "com.mysql.jdbc.Driver"; private DatabaseMetaData dbMetaData = null; private String packageName = "com.csair.test.mybatisRepository;"; private String packageNameDto = "com.csair.test.dto"; private String path = "C:\\Users\\ppt\\Desktop\\test\\"; public GenerateMybatisRepository() { try { Class.forName(driverClass); Connection conn = DriverManager.getConnection(url, username, password); dbMetaData = conn.getMetaData(); } catch(Exception e) { e.printStackTrace(); } } /** * @Description: 获取所有的表 * @author: ppt * @date: 2015-3-16 上午10:12:57 * @return: void */ public List<String> getAllTableList() { List<String> tableList = new ArrayList<String>(); try { String[] types = { "TABLE" }; ResultSet rs = dbMetaData.getTables(null, null, "%", types); while (rs.next()) { String tableName = rs.getString("TABLE_NAME"); //表名 tableList.add(tableName); } } catch (SQLException e) { e.printStackTrace(); } return tableList; } /** * 处理字符串,去掉下划线“_”,并且把下划线的下一个字符变大写,flag为true,表示首字母要大写 * @param name * @param flag * @return */ private String getFormatString(String name, boolean flag) { name = name.toLowerCase(); String[] nameTemp = name.split("_"); StringBuffer buffer = new StringBuffer(); for(String str : nameTemp) { String head = str.substring(0, 1).toUpperCase(); String tail = str.substring(1); buffer.append(head+tail); } StringBuffer result = null; if(!flag) { result = new StringBuffer(); String head = buffer.substring(0, 1).toLowerCase(); String tail = buffer.substring(1); result.append(head+tail); return result.toString(); } return buffer.toString(); } /** * 把String内容写到文件 * @param fileName * @param content */ private void outputToFile(String fileName, String content) { OutputStream os = null; try { os = new FileOutputStream(path+fileName); } catch (FileNotFoundException e1) { e1.printStackTrace(); } byte[] b = content.getBytes(); try { os.write(b); os.flush(); } catch (IOException e) { e.printStackTrace(); } finally { try { os.close(); } catch (IOException e) { e.printStackTrace(); } } } private void getService() { List<String> tableList = getAllTableList(); for(String tableName : tableList) { String table = getFormatString(tableName, true); String className = table + "MybatisDao"; String dto = table; StringBuffer sb = new StringBuffer(); sb.append("package " + packageName + "\n\n"); sb.append("import " + packageNameDto + "." + dto + ";\n"); sb.append("import java.util.List;\n"); sb.append("\npublic interface " + className + " {\n\n"); sb.append("\tpublic long addEntity(" + table + " dto);\n\n"); sb.append("\tpublic boolean deleteEntity(long id);\n\n"); sb.append("\tpublic long updateEntity(" + table + " dto);\n\n"); sb.append("\tpublic "+table+" findEntity(" + table + " dto);\n\n"); sb.append("\tpublic List<"+table+"> findEntityList(" + table + " dto);\n\n"); sb.append("}\n"); // System.out.println(sb.toString()); outputToFile(className+".java", sb.toString()); } } public static void main(String[] agrs) { GenerateMybatisRepository aa = new GenerateMybatisRepository(); aa.getService(); } }
实现impl
package com.csair.test; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; public class GenerateServiceImpl { private String url = "jdbc:mysql://localhost:3306/database"; private String username = "root"; private String password = "root"; private String driverClass = "com.mysql.jdbc.Driver"; private DatabaseMetaData dbMetaData = null; private String packageName = "com.csair.test.service.impl;"; private String packageNameService = "com.csair.test.service"; private String packageNameDto = "com.csair.test.dto"; private String packageNameMybatis = "com.csair.test.mybatisRepository"; private String path = "C:\\Users\\ppt\\Desktop\\test\\"; public GenerateServiceImpl() { try { Class.forName(driverClass); Connection conn = DriverManager.getConnection(url, username, password); dbMetaData = conn.getMetaData(); } catch(Exception e) { e.printStackTrace(); } } /** * @Description: 获取所有的表 * @author: ppt * @date: 2015-3-16 上午10:12:57 * @return: void */ public List<String> getAllTableList() { List<String> tableList = new ArrayList<String>(); try { String[] types = { "TABLE" }; ResultSet rs = dbMetaData.getTables(null, null, "%", types); while (rs.next()) { String tableName = rs.getString("TABLE_NAME"); //表名 tableList.add(tableName); } } catch (SQLException e) { e.printStackTrace(); } return tableList; } /** * 处理字符串,去掉下划线“_”,并且把下划线的下一个字符变大写,flag为true,表示首字母要大写 * @param name * @param flag * @return */ private String getFormatString(String name, boolean flag) { name = name.toLowerCase(); String[] nameTemp = name.split("_"); StringBuffer buffer = new StringBuffer(); for(String str : nameTemp) { String head = str.substring(0, 1).toUpperCase(); String tail = str.substring(1); buffer.append(head+tail); } StringBuffer result = null; if(!flag) { result = new StringBuffer(); String head = buffer.substring(0, 1).toLowerCase(); String tail = buffer.substring(1); result.append(head+tail); return result.toString(); } return buffer.toString(); } /** * 把String内容写到文件 * @param fileName * @param content */ private void outputToFile(String fileName, String content) { OutputStream os = null; try { os = new FileOutputStream(path+fileName); } catch (FileNotFoundException e1) { e1.printStackTrace(); } byte[] b = content.getBytes(); try { os.write(b); os.flush(); } catch (IOException e) { e.printStackTrace(); } finally { try { os.close(); } catch (IOException e) { e.printStackTrace(); } } } private void getServiceImpl() { List<String> tableList = getAllTableList(); for(String tableName : tableList) { String table = getFormatString(tableName, true); String mybatis = table + "MybatisDao"; String dto = table; String service = table + "Service"; String className = service + "Impl"; StringBuffer sb = new StringBuffer(); sb.append("package " + packageName + "\n\n"); sb.append("import " + packageNameDto + "." + dto + ";\n"); sb.append("import " + packageNameMybatis + "." + mybatis + ";\n"); sb.append("import " + packageNameService + "." + service + ";\n"); sb.append("import org.apache.log4j.Logger;\n"); sb.append("import org.springframework.beans.factory.annotation.Autowired;\n"); sb.append("import org.springframework.stereotype.Service;\n"); sb.append("import java.util.List;\n"); sb.append("@Service(\""+service.substring(0,1).toLowerCase()+service.substring(1)+"\")\n"); sb.append("public class " + className + " implements "+ service +" {\n\n"); sb.append("\tprivate Logger log = Logger.getLogger("+className+".class);\n"); String instance = mybatis.substring(0,1).toLowerCase() + mybatis.substring(1); sb.append("\t@Autowired\n"); sb.append("\tprivate "+mybatis+" " + instance +";\n"); sb.append("\t@Override\n"); sb.append("\tpublic long addEntity(" + table + " dto) throws Exception {\n"); sb.append("\t\ttry {\n"); sb.append("\t\t\tlog.info(\"addEntity\");\n"); sb.append("\t\t\t"+instance+".addEntity(dto);\n"); sb.append("\t\t\treturn 0;\n"); sb.append("\t\t} catch(Exception e) {\n"); sb.append("\t\t\tlog.info(\"addEntity异常\");\n"); sb.append("\t\t\te.printStackTrace();\n"); sb.append("\t\t\tthrow e;\n"); sb.append("\t\t}\n"); sb.append("\t}\n"); sb.append("\t@Override\n"); sb.append("\tpublic boolean deleteEntity(long id) throws Exception {\n"); sb.append("\t\ttry {\n"); sb.append("\t\t\tlog.info(\"deleteEntity\");\n"); sb.append("\t\t\t"+instance+".deleteEntity(id);\n"); sb.append("\t\t\treturn false;\n"); sb.append("\t\t} catch(Exception e) {\n"); sb.append("\t\t\tlog.info(\"deleteEntity异常\");\n"); sb.append("\t\t\te.printStackTrace();\n"); sb.append("\t\t\tthrow e;\n"); sb.append("\t\t}\n"); sb.append("\t}\n"); sb.append("\t@Override\n"); sb.append("\tpublic long updateEntity(" + table + " dto) throws Exception {\n"); sb.append("\t\ttry {\n"); sb.append("\t\t\tlog.info(\"updateEntity\");\n"); sb.append("\t\t\t"+instance+".updateEntity(dto);\n"); sb.append("\t\t\treturn 0;\n"); sb.append("\t\t} catch(Exception e) {\n"); sb.append("\t\t\tlog.info(\"updateEntity异常\");\n"); sb.append("\t\t\te.printStackTrace();\n"); sb.append("\t\t\tthrow e;\n"); sb.append("\t\t}\n"); sb.append("\t}\n"); sb.append("\t@Override\n"); sb.append("\tpublic "+table+" findEntity(" + table + " dto) throws Exception {\n"); sb.append("\t\ttry {\n"); sb.append("\t\t\tlog.info(\"findEntity\");\n"); sb.append("\t\t\treturn "+instance+".findEntity(dto);\n"); sb.append("\t\t} catch(Exception e) {\n"); sb.append("\t\t\tlog.info(\"findEntity异常\");\n"); sb.append("\t\t\te.printStackTrace();\n"); sb.append("\t\t\tthrow e;\n"); sb.append("\t\t}\n"); sb.append("\t}\n"); sb.append("\t@Override\n"); sb.append("\tpublic List<"+table+"> findEntityList(" + table + " dto) throws Exception {\n"); sb.append("\t\ttry {\n"); sb.append("\t\t\tlog.info(\"findEntityList\");\n"); sb.append("\t\t\treturn "+instance+".findEntityList(dto);\n"); sb.append("\t\t} catch(Exception e) {\n"); sb.append("\t\t\tlog.info(\"findEntityList异常\");\n"); sb.append("\t\t\te.printStackTrace();\n"); sb.append("\t\t\tthrow e;\n"); sb.append("\t\t}\n"); sb.append("\t}\n"); sb.append("}\n"); // System.out.println(sb.toString()); outputToFile(className+".java", sb.toString()); } } public static void main(String[] agrs) { GenerateServiceImpl aa = new GenerateServiceImpl(); aa.getServiceImpl(); } }
生成mybatis的实现xml文件
package com.csair.test; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; public class GenerateMybatisXml { private String url = "jdbc:mysql://localhost:3306/jdz"; private String username = "root"; private String password = "root"; private String driverClass = "com.mysql.jdbc.Driver"; private DatabaseMetaData dbMetaData = null; private String packageNameMybatisDao = "com.csair.test.mybatisRepository"; // private String path = "C:\\Users\\ppt\\Desktop\\test\\"; private String path = "D:\\ppt\\workspace\\shop\\shopserver\\src\\test\\java\\com\\csair\\test\\xml\\"; /** * @Description: 获取表对应的所有列 * @author: ppt * @date: 2015-3-16 上午10:13:17 * @param tableName * @return: void */ public void getTableColumns(String tableName) { try { ResultSet resultSetColumn = dbMetaData.getColumns(null, null, tableName, null); String className = getFormatString(tableName, true);//表名 String fileName = className + "Mapper";//文件名 String thisFileName = className + "MybatisDao";//接口地址 StringBuffer header = new StringBuffer( "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n"); header.append("<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n"); header.append("<mapper namespace=\""); header.append(packageNameMybatisDao+"."+thisFileName); header.append("\">\n\n"); StringBuffer footer = new StringBuffer("\n</mapper>"); StringBuffer add = new StringBuffer(); //增加数据 add.append("\t<insert id=\"addEntity\" parameterType=\""+className+"\">\n"); String insert = "\t\tinsert into " + tableName + "("; String column = ""; String values = ""; //删除数据 StringBuffer delete = new StringBuffer(); delete.append("\t<update id=\"deleteEntity\" parameterType=\"long\">\n"); delete.append("\t\tupdate " + tableName + " set status = -1 where id = #{id}\n"); delete.append("\t</update>\n\n"); //更新数据 StringBuffer update = new StringBuffer(); String updateConent = ""; update.append("\t<update id=\"updateEntity\" parameterType=\""+className+"\">\n"); update.append("\t\tupdate " + tableName + " set "); //查找数据 StringBuffer select = new StringBuffer(); select.append("\t<select id=\"findEntity\" parameterType=\""+className+"\" resultType=\""+className+"\">\n"); String selectContent = "\t\tselect\n"; //查找数据list StringBuffer selectList = new StringBuffer(); selectList.append("\t<select id=\"findEntityList\" parameterType=\""+className+"\" resultType=\""+className+"\">\n"); while (resultSetColumn.next()) { String columnName = resultSetColumn.getString("COLUMN_NAME"); String oldColumnName = columnName; columnName = this.getFormatString(columnName, false); //增加数据 if("ID".equals(columnName.toUpperCase())) { continue; } column += columnName +","; values += "#{" + columnName + "},"; //删除数据 //更新数据 updateConent += columnName + "=#{" + columnName +"},"; //查找数据 selectContent += "\t\t"+oldColumnName + " AS " + columnName + ",\n"; } selectContent = selectContent.substring(0, selectContent.length()-2); selectContent += "\n\t\tfrom " + tableName + "\n"; select.append(selectContent); select.append("\t</select>\n\n"); selectList.append(selectContent); selectList.append("\t</select>\n\n"); updateConent = updateConent.substring(0,updateConent.length()-1); update.append(updateConent); update.append(" where id = #{id}\n"); update.append("\t</update>\n\n"); column = column.substring(0, column.length()-1); values = values.substring(0,values.length()-1); String statement = insert + column + ") values(" + values + ")\n"; add.append(statement); add.append("\t</insert>\n\n"); header.append(add); header.append(delete); header.append(update); header.append(select); header.append(selectList); header.append(footer); // System.out.println(header.toString()); this.outputToFile(fileName+".xml", header.toString()); } catch (SQLException e) { e.printStackTrace(); } } public GenerateMybatisXml() { try { Class.forName(driverClass); Connection conn = DriverManager.getConnection(url, username, password); dbMetaData = conn.getMetaData(); } catch(Exception e) { e.printStackTrace(); } } /** * @Description: 获取所以的表 * @author: ppt * @date: 2015-3-16 上午10:12:57 * @return: void */ public List<String> getAllTableList() { List<String> tableList = new ArrayList<String>(); try { String[] types = { "TABLE" }; ResultSet rs = dbMetaData.getTables(null, null, "%", types); while (rs.next()) { String tableName = rs.getString("TABLE_NAME"); //表名 tableList.add(tableName); } } catch (SQLException e) { e.printStackTrace(); } return tableList; } /** * 处理字符串,去掉下划线“_”,并且把下划线的下一个字符变大写,flag为true,表示首字母要大写 * @param name * @param flag * @return */ private String getFormatString(String name, boolean flag) { name = name.toLowerCase(); String[] nameTemp = name.split("_"); StringBuffer buffer = new StringBuffer(); for(String str : nameTemp) { String head = str.substring(0, 1).toUpperCase(); String tail = str.substring(1); buffer.append(head+tail); } StringBuffer result = null; if(!flag) { result = new StringBuffer(); String head = buffer.substring(0, 1).toLowerCase(); String tail = buffer.substring(1); result.append(head+tail); return result.toString(); } return buffer.toString(); } /** * 把String内容写到文件 * @param fileName * @param content */ private void outputToFile(String fileName, String content) { OutputStream os = null; try { os = new FileOutputStream(path+fileName); } catch (FileNotFoundException e1) { e1.printStackTrace(); } byte[] b = content.getBytes(); try { os.write(b); os.flush(); } catch (IOException e) { e.printStackTrace(); } finally { try { os.close(); } catch (IOException e) { e.printStackTrace(); } } } public static void main(String[] agrs) { GenerateMybatisXml aa = new GenerateMybatisXml(); List<String> tableList = aa.getAllTableList(); for(String tableName : tableList) { aa.getTableColumns(tableName); } // aa.getTableColumns("loan_info"); } }
相关文章推荐
- 利用Excel的vba脚本根据数据库表结构自动生成java的action,bean,dao,mode,service,xml,sql,jsp等
- Mybatis根据数据库表自动生成实体类和xml映射文件
- 根据Java实体自动生成MyBatis的ResultMap
- 在eclipse中使用MyBatis Geneator自动生成出对应数据库的实体与映射文件
- 通过mybatis工具generatorConfig.xml自动生成实体,DAO,映射文件
- MyBatis 3 自动生成 主键 针对不同的数据库(oracle/sqlserver/mysql)
- 总结Mybatis根据库表结构自动生成相关实体及映射文件
- mybatis 根据 数据库表 自动生成 实体
- MyBatis自动生成代码】根据数据库生成对应实体类,SQL方法等
- 用MyBatis-Generator根据数据库自动生成代码
- mybatis配置generator自动生成数据库表对应的实体
- MyBatis 3 自动生成 主键 针对不同的数据库(oracle/sqlserver/mysql)
- MyBatis 3 自动生成 主键 针对不同的数据库(oracle/sqlserver/mysql)
- MyBatis 3 自动生成 主键 针对不同的数据库(oracle/sqlserver/mysql)
- idea中mybatis-generator插件实现数据库表自动生成相关接口、pojo、和xml配置
- 【mybatis】根据model自动生成 mapper service dao 层的工具类
- 根据hibernate.cfg.xml配置文件和相应实体类及其.hbm.xml文件生成对应的数据库表
- 使用T4模板为EF框架添加实体根据数据库自动生成字段注释的功能
- Maven项目中,使用mybatis,根据数据库自动生成pojo实体类、dao、mapper
- 通过mybatis工具generatorConfig.xml自动生成实体,DAO,映射文件