📄 genibatiscode.java
字号:
package com.suncms.comm;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Reader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.DatabaseMetaData;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Types;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Vector;
public class GenIbatisCode {
private String filePath = "c:/";
private String[] mapTablename = { "Vote_q","Vote_a"};
private Connection conn = null;
public GenIbatisCode() {
conn = getConnection();
}
/**
* private List getTableNames() {
*
* List result = new Vector(); try { DatabaseMetaData dbmd =
* conn.getMetaData(); ResultSet rs = dbmd.getTableTypes(); String[] types = {
* "TABLE" }; rs = dbmd.getTables(null, dbmd.getUserName(), "%", types);
* while (rs.next()) { result.add(rs.getString("TABLE_NAME")); } rs.close(); }
* catch (SQLException e) { e.printStackTrace(); } return result; }
*/
private Connection getConnection() {
Connection conn = null;
try {
// 注册数据库驱动程序为oracle驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
} catch (Exception e) {
// 这样写是为了方便调试程序,出错打印mydb()就知道在什么地方出错了
System.err.println("mydb(): " + e.getMessage());
}
try {
conn = DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:xe", "suncms", "suncms");
} catch (Exception ex) {
System.err.println("conn:" + ex.getMessage());
}
return conn;
}
public void getMetaData() {
try {
Statement stmt = conn.createStatement();
// List list = getTableNames();
for (int i = 0; i < mapTablename.length; i++) {
String element = (String) mapTablename[i];
ResultSet rs = stmt.executeQuery("select * from " + element);
ResultSetMetaData rsmd = rs.getMetaData();
// int numberOfColumns = rsmd.getColumnCount();
getXml(rsmd, element);
getDomain(rsmd, element);
}
} catch (Exception e) {
e.printStackTrace();
}
}
private void getDomain(ResultSetMetaData rsmd, String tableName) {
try {
File file = new File(filePath);
if (!file.exists()) {
file.mkdir();
}
file = new File(filePath + tableName + ".java");
String javacode = "package com.suncms.domain; \n";
javacode += "import java.util.*; \n";
javacode += "import java.io.Serializable; \n";
javacode += "public class " + tableName
+ " implements Serializable { \n";
javacode += createColumnsStringForJava(rsmd);
javacode += "}\n";
FileWriter writer = new FileWriter(file);
writer.write(javacode);
writer.flush();
writer.close();
} catch (Exception e) {
e.printStackTrace();
}
}
private void getXml(ResultSetMetaData rsmd, String tableName) {
try {
File file = new File(filePath);
if (!file.exists()) {
file.mkdir();
}
file = new File(filePath + tableName.toLowerCase() + ".xml");
String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?> \n";
xml += "<!DOCTYPE sqlMap PUBLIC \"-//ibatis.apache.org//DTD SQL Map 2.0//EN\" \n";
xml += "\"http://ibatis.apache.org/dtd/sql-map-2.dtd\"> \n";
xml += "<sqlMap namespace=\"" + tableName + "\"> \n";
xml += "<typeAlias alias=\"" + tableName.toLowerCase()
+ "\" type=\"com.suncms.domain." + tableName + "\"/> \n\n";
xml += createResultMap(rsmd, tableName);
xml += (createInsertSql(rsmd, tableName));
// xml += (createUpdateSql(rsmd, numberOfColumns, tableName));
xml += "\n</sql-map>";
FileWriter writer = new FileWriter(file);
writer.write(xml);
writer.flush();
writer.close();
} catch (Exception e) {
e.printStackTrace();
}
}
private String createInsertSql(ResultSetMetaData rsmd, String tableName)
throws SQLException {
String result = "<insert id=\"insert" + tableName
+ "\" parameterClass=\"" + tableName.toLowerCase() + "\"> \n";
result += "INSERT INTO \n" + tableName + " (\n"
+ createColumnsString(rsmd) + "\n)\n values(\n"
+ createWheremapSql(rsmd) + "\n) \n";
result += "</insert> \n";
return result;
}
private String createResultMap(ResultSetMetaData rsmd, String tableName)
throws SQLException {
String result = "<resultMap id=\"" + tableName.toLowerCase()
+ "InfoResult\" class=\"" + tableName + "\"> \n";
int numberOfColumns = rsmd.getColumnCount();
for (int i = 1; i <= numberOfColumns; i++) {
String colName = rsmd.getColumnName(i);
result += "<result property=\""+colName.toLowerCase()+"\" column=\""+colName+"\"/> \n";
}
result += " </resultMap> \n";
return result;
}
private String createColumnsString(ResultSetMetaData rsmd)
throws SQLException {
String result = " ";
int numberOfColumns = rsmd.getColumnCount();
for (int i = 1; i <= numberOfColumns; i++) {
String colName = rsmd.getColumnName(i);
result += colName + ",\n";
}
return result.substring(1, result.length() - 2);
}
private String createColumnsStringForJava(ResultSetMetaData rsmd)
throws SQLException {
String result = "";
int numberOfColumns = rsmd.getColumnCount();
for (int i = 1; i <= numberOfColumns; i++) {
String colName = rsmd.getColumnName(i);
String coltype = rsmd.getColumnTypeName(i);
result += "private " + getType(coltype) + " " + colName.toLowerCase()
+ "; \n";
}
return result;
}
private String createWheremapSql(ResultSetMetaData rsmd)
throws SQLException {
String result = " ";
int numberOfColumns = rsmd.getColumnCount();
for (int i = 1; i <= numberOfColumns; i++) {
String colName = rsmd.getColumnName(i);
// String name = rsmd.getColumnTypeName(i);
result += "#" + colName.toLowerCase() + "#,\n";
}
return result.substring(1, result.length() - 2);
}
private String getType(String type){
String Type="";
if(type.equals("NUMBER")) Type="Integer";
if(type.equals("CLOB")) Type="String";
if(type.equals("VARCHAR2")) Type="String";
if(type.equals("CHAR")) Type="String";
if(type.equals("TIMESTAMP")) Type="Date";
if(type.equals("DATE")) Type="Date";
return Type;
}
/**
* @param args
* @throws SQLException
*/
public static void main(String[] args) throws SQLException {
// TODO Auto-generated method stub
GenIbatisCode gc = new GenIbatisCode();
gc.getMetaData();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -