package cn.cnm.springboot.util;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.jdbc.datasource.SimpleDriverDataSource;
import java.sql.Connection;
import java.sql.Driver;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class TableToBean {
private String url="xxx";
private String username="root";
private String password="123456";
private String db="mysql";
private String way="jpa";
public TableToBean(String url,String username,String password,String db,String way){
this.url=url;
this.username=username;
this.password=password;
this.db=db;
this.way=way;
}
public TableToBean(){}
private static final String[] ts={"tinyint","smallint","mediumint","int","bigint",
"float","double","decimal","bit","bool"};
private static String in(String type){
if(type.contains("int") ||
type.equalsIgnoreCase("bit") ||
type.equalsIgnoreCase("bool"))
return "Integer";
else if(type.equalsIgnoreCase("float") ||
type.equalsIgnoreCase("double") ||
type.equalsIgnoreCase("decimal"))
return "Double";
else if(type.equalsIgnoreCase("datetime") ||
type.equalsIgnoreCase("datetime2"))
return "Date";
else
return "String";
}
private void connect(String name,String bean,String index,String _type){
StringBuffer sb=new StringBuffer();
Connection conn = null;
PreparedStatement pre = null;
SimpleDriverDataSource dd=new SimpleDriverDataSource();
try {
String sql=null;
if("mysql".equalsIgnoreCase(db)) {
sql = "select column_name,column_comment,data_type from INFORMATION_SCHEMA.Columns where table_name=?";
dd.setDriverClass(com.mysql.jdbc.Driver.class);
}
else if("sqlserver".equalsIgnoreCase(db)) {
sql = "select column_name,data_type from INFORMATION_SCHEMA.Columns where table_name=?";
dd.setDriverClass(com.microsoft.sqlserver.jdbc.SQLServerDriver.class);
}
if("jpa".equalsIgnoreCase(way))
sb.append("@Entity\n@Table(name=\""+name.toLowerCase()+"\")\n");
else if("elasticsearch".equalsIgnoreCase(way))
sb.append("@Document(indexName=\""+index+"\",type=\""+_type.toLowerCase()+"\")\n");
sb.append("public class "+bean+"{");
dd.setUrl(url);
dd.setUsername(username);
dd.setPassword(password);
conn = dd.getConnection();
conn.setAutoCommit(false);
pre=conn.prepareStatement(sql);
pre.setString(1, name);
ResultSet rs=pre.executeQuery();
while(rs.next()){
if("mysql".equalsIgnoreCase(db)) {
if (!"".equals(rs.getString("column_comment")) &&
rs.getString("column_comment") != null) {
sb.append("\n\t//" + rs.getString("column_comment") + "");
}
}
if("jpa".equalsIgnoreCase(way))
sb.append("\n\t@Column(name=\""+rs.getString("column_name")+"\")");
sb.append("\n\tprivate ");
String type=rs.getString("data_type");
sb.append(in(type));
String field=rs.getString("column_name").toLowerCase();
char[] cs=field.toCharArray();
for(int j=0;j<cs.length;j++){
if(cs[j]=='_'){
cs[j]=' ';
cs[j+1]=(cs[j+1]+"").toUpperCase().charAt(0);
}
}
sb.append(" "+String.valueOf(cs).replaceAll(" ","")+";");
}
sb.append("\n}");
System.out.println(sb.toString());
conn.commit();
pre.close();
conn.close();
}catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args){
TableToBean tb=new TableToBean(
"xxx",
"DEV",
"devsjit@123",
"sqlserver",
"elasticsearch"
);
tb.connect("srorders","Order","order_4","order");
}
}
复制即用