mysql根据数据库自动生成实体(dto,service,impl,mybatis,xml)
来源:互联网 发布:家世比 java 编辑:程序博客网 时间:2024/05/01 13:05
[java] view plain copy
- 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");
- }
- }
[java] view plain copy
- 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();
- }
- }
[java] view plain copy
- 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
[java] view plain copy
- 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文件
[java] view plain copy
- 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");
- }
- }
[java] view plain copy
- 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");
- }
- }
[java] view plain copy
- 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();
- }
- }
[java] view plain copy
- 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
[java] view plain copy
- 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文件
[java] view plain copy
- 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");
- }
- }
阅读全文
0 0
- mysql根据数据库自动生成实体(dto,service,impl,mybatis,xml)
- mysql根据数据库自动生成实体(dto,service,impl,mybatis,xml)
- mybatis 根据 数据库表 自动生成 实体
- mybatis 根据 数据库表 自动生成 实体 并自动生成中文注释
- 自动生成Mybatis 实体类、DaoMapper、XML
- mybatis自动生成实体xml文件
- MyBatis:由数据库自动生成实体类
- mybatis自动生成domain,service,mapper,xml
- 根据Java实体自动生成MyBatis的ResultMap
- Java根据数据库表格自动生成java实体类
- mybatis 自动生成实体类、mapper.xml文件
- mybatis自动生成mapper.xml和接口实体类工具
- mybatis反转自动生成dao、实体类和mapper.xml
- Mybatis自动生成实体类、mapper.xml和dao
- MyBatis Generator自动生成Dto、Dao、Mapping
- MyBatis Generator 自动生成 Dto、Dao、Mapping
- SpringBoot集成JPA根据实体类自动生成表(mysql)
- MyBatis自动生成实体类
- E1.分段函数求值
- Ext JS4.2学习笔记
- HDUOJ 1856 More is better(并查集)
- codeforces 839 D Winter is here
- 参数传递---形参改变实参指针变量的值
- mysql根据数据库自动生成实体(dto,service,impl,mybatis,xml)
- Zookeeper学习(七):ZooKeeper 实现命名服务(系统唯一ID)
- PubChem分子库
- Java 采用stmp协议发送邮件
- 《机器学习实战》学习笔记-[13]-无监督学习-利用K-均值聚类对未标注数据分组
- Java创建多线程
- Java多线程(三)——手动实现Future模式
- 设置virtualbox5.1.18和主机win10共享文件夹
- exynos4412启动流程