您的位置:首页 > 数据库 > MySQL

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");
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐