リバースエンティティクラス生成されたSQLデータベーステーブル

com.xq.tmall.utilパッケージ; 

インポートorg.slf4j.Logger;
インポートorg.slf4j.LoggerFactory;

インポートはjava.io.File;
インポートjava.io.FileOutputStreamは、
をjava.lang.reflect.Fieldとしてインポート;
java.utilのインポートクラス.ArrayList;
インポートjava.util.Listに、

パブリッククラスSqlGenerator {
プライベート静的ロガーロガー=最終LoggerFactory.getLogger(SqlGenerator.class);

{パブリック静的な無効メイン(文字列[] args)
//ディスクエンティティクラスのパッケージ絶対パス
文字列のpackageName = "E:/ Javaの/ resourcesproject /マイクロ/ 925 / Tmall_demo / srcに/メイン/ Javaの/ COM / XQ / Tmall /エンティティ";
//は、SQLフォルダ生成
文字列filePathに=「Eを:/作成/ ";
パス項目のエンティティクラス//
文字列の接頭辞=" com.xq.tmall.entity」。
クラス名=文字列"";

StringBufferのは(= StringBufferの新しい新しいのSQL文);
//は、パッケージ内のすべてのクラス名を取得する
一覧<文字列>リスト= getAllClasses(のpackageName);
(STR文字列:リスト)のための{
クラス名=接頭辞+ str.substring( 0、str.lastIndexOf( ""));
文字列のSQL = generateSql(クラス名ファイルパス);
sqls.append(SQL);
}
のSystem.out.println(sqls.toString());
StringToSql(sqls.toString()ファイルパス+「report.sql」);

}
/ **
*表文生成エンティティ・クラスに従って構築
* @author
* @date 2018インディアン4越11 Riを
* @paramクラス名完全なクラス名
など* @paramファイルパスディスクパス:D :/ワークスペース/
* /
公共の静的な文字列generateSql(文字列クラス名、文字列filePathに){
{試みる
クラスをCLZ = Class.forNameの(クラス名)<?>;
クラス名= clz.getSimpleName()。
フィールド[]フィールド= clz.getDeclaredFields()。
StringBufferのカラム=新しいStringBufferの();
文字列のVARCHAR = "VARCHAR(255)文字セットのutf8 COLLATE utf8_general_ciデフォルトのNULL、";
用(フィールドF:フィールド){
column.append( "\ n ' "+ f.getName()+"'").append(VARCHAR)。
}
のStringBufferのSQL =新規のStringBuffer()。
sql.append( "\ nはDROP TABLE IFは` EXISTS" +クラス名+ "`; ")
.append(" \ nはCREATE TABLEを`" +クラス名+」
.append( "\ n型id``のINT(11)AUTO_INCREMENT NOT NULL、。 ")
.append(" \ nの- " +カラム)
.append( "\ nは、PRIMARY KEY(` id`)を用いBTREE")
.append( "\ N-id` INDEX`(` id`)BTREE、使用")
.append( "\ N-1)のInnoDB文字セットエンジン= = = UTF8 COLLATEは= AUTO_INCREMENTをutf8_general_ci;");
(sql.toStringを返す);
}キャッチ( EにClassNotFoundException){
logger.debug( "クラスが見つかりません!");
戻り値はnullを;
}

}

/ **
* xxx.java得られた結果と、同様のパッケージのすべてのクラスの名前を取得します
* @author
* 2018年@dateを4月11日
* @paramのpackageName
* @return
* /
公共の静的リストの<string> getAllClasses(文字列のpackageName){
リストの<string> CLASSLIST =新規のArrayList <ストリング>();
文字列クラス名=「」;
ファイルf =新しいファイル(のpackageName);
IF(f.exists()&& f.isDirectory()){
ファイル[] =ファイルのf.listFiles()。
(ファイルのファイル:ファイル)の{
クラス名= file.getName();
classList.add(クラス名)。
}
戻りCLASSLIST。
}他{
logger.debug( "包路径未找到!");
ヌルを返します。
}
}
/ **
*将ストリング写入SQL文件
* @author
* @date 2018年4月11日
* @paramのSTR
@paramパス*
* /
パブリック静的な無効StringToSql(STR文字列、文字列のパス){
バイト[] = sourceByte str.getBytes();
IF(ヌル= sourceByte!){
試み{
ファイルファイル=新しい新しいファイル(パス); //ファイルパス(パス+ファイル名)
(File.Exists()!){//ファイルが存在し、ファイルを作成し、ディレクトリを作成しない場合は
、ファイルDIR =新しい新しいファイル(file.getParent())を、
dir.mkdirs();
ファイル.createNewFile();
}
のFileOutputStream OUTSTREAM新しい新=のFileOutputStream(ファイル);ファイルにデータを書き込む//ファイル出力ストリーム
outStream.write(sourceByte);
outStream.flush();
outStream.close(); //近いファイル出力ストリーム
System.out.println( "成功した世代");
}キャッチ(例外E){
e.printStackTrace();
}
}
}
}

おすすめ

転載: www.cnblogs.com/cjeandailynotes/p/11584306.html
おすすめ