读取TXT中sql自动生成相关配置文件
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.List;
public class ConvertProcess {
static String bmx4p1 = "";
static String bmx4p2 = "";
static String bmx5 = "";
/**
* @param args
* @throws IOException
*/
private static void buildSql(String lastTable,String fieldString,String valueMarkString) {
fieldString = fieldString.substring(0, fieldString.length()-1);
bmx4p1 = "<insert id=\"insert_"+lastTable+"\" parameterType=\"HybridDataModel\">\n"+
"\tinsert into "+lastTable+ "_tmp (mpoint_id,freeze_time,read_time,";
bmx4p1 += fieldString+")\n";
bmx4p1 += "\tvalues (#{pointId}, #{dataTime},#{readMeterTime}"+valueMarkString+")\n"+
"</insert>\n";
String[] fieldArray = fieldString.split(",");
String[] valueMarkArray = valueMarkString.substring(3).split(",#");
bmx5 = "<insert id=\"insert_"+lastTable+"\" parameterType=\"HybridDataModel\">\n"+
"\treplace into "+lastTable+ " (mpoint_id,freeze_time,read_time,";
bmx5 += fieldString+")\n";
bmx5 += "\tselect * from (\n"+
"\tselect\n"+
"\tifnull(#{pointId},mpoint_id),\n"+
"\tifnull(#{dataTime},freeze_time),\n"+
"\tifnull(#{readMeterTime},read_time),\n";
for (int i = 0; i < valueMarkArray.length; i++) {
bmx5 += "\tifnull(#"+valueMarkArray[i]+","+fieldArray[i]+"),\n";
}
bmx5 += "\tfrom "+lastTable+"\n"+
"\twhere mpoint_id = #{pointId} and freeze_time = #{dataTime}\n"+
"\tunion\n"+
"\tselect\n"+
"\t#{pointId},\n"+
"\t#{dataTime},\n"+
"\t#{readMeterTime},\n";
for (int i = 0; i < valueMarkArray.length; i++) {
bmx5 += "\t#"+valueMarkArray[i]+",\n";
}
bmx5 += "\tfrom DUAL\n"+
"\t) S limit 1\n"+
"</insert>\n\n";
bmx4p2 = "<insert id=\"merge_"+lastTable+"\">\n"+
"\tmerge into "+lastTable+" t using (select mpoint_id,freeze_time";
for (String field : fieldArray) {
bmx4p2 += ",max(" + field +") as "+ field;
}
bmx4p2 += "from "+ lastTable +"_tmp group by mpoint_id,freeze_time) s on (t.mpoint_id=s.mpoint_id and t.freeze_time=s.freeze_time )\n";
bmx4p2 += "\twhen matched then update set ";
for (String field : fieldArray) {
bmx4p2 += "t."+field+" = nvl(s."+field+",t."+field+"),";
}
bmx4p2 = bmx4p2.substring(0, bmx4p2.length()-1) + "\n";
bmx4p2 += "\twhen not matched then insert (t.mpoint_id,t.freeze_time,t.read_time";
for (String field : fieldArray) {
bmx4p2 += ",t."+field;
}
bmx4p2 += ") values (s.mpoint_id,s.freeze_time,s.read_time";
for (String field : fieldArray) {
bmx4p2 += ",s."+field;
}
bmx4p2 += ")\n</insert>\n\n";
}
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
File f1 = new File("C:\\Users\\xs\\Desktop","1.txt");
File f2 = new File("C:\\Users\\xs\\Desktop","2.txt");
File f3 = new File("C:\\Users\\xs\\Desktop","3.txt");
File f4 = new File("C:\\Users\\xs\\Desktop","4.txt");
File f5 = new File("C:\\Users\\xs\\Desktop","5.txt");
if(!f1.exists())
{
try {
f1.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else {
f1.delete();
f1.createNewFile();
}
if(!f2.exists())
{
try {
f2.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else {
f2.delete();
f2.createNewFile();
}
if(!f3.exists())
{
try {
f3.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else {
f3.delete();
f3.createNewFile();
}
if(!f4.exists())
{
try {
f4.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else {
f4.delete();
f4.createNewFile();
}
if(!f5.exists())
{
try {
f5.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else {
f5.delete();
f5.createNewFile();
}
BufferedReader bReader = new BufferedReader(new InputStreamReader(new FileInputStream("C:\\Users\\xs\\Desktop\\insert.txt")));
String dataLineStr = null;
List<String> dataItemIdList = new ArrayList<String>();
List<String> dataItemTableList = new ArrayList<String>();
List<String> dataItemFieldList = new ArrayList<String>();
while ((dataLineStr = bReader.readLine()) != null) {
//System.out.println(dataLineStr);
if (!dataLineStr.equals("")) {
String subLineString = dataLineStr.substring(dataLineStr.indexOf("("), dataLineStr.indexOf(")"));
String[] ddList = subLineString.split(",");
dataItemIdList.add(ddList[1].trim());
dataItemTableList.add(ddList[2].trim());
dataItemFieldList.add(ddList[3].trim());
}
}
BufferedWriter bWriter1 = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(f1)));
BufferedWriter bWriter2 = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(f2)));
BufferedWriter bWriter3 = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(f3)));
BufferedWriter bWriter4 = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(f4)));
BufferedWriter bWriter5 = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(f5)));
// for (String string : dataItemIdList) {
// //System.out.println(Integer.parseInt(string.substring(string.length() - 2)));
//
// }
int lastTableId = 0;
int indexV = 1;
int indexS = 1;
int indexT = 1;
String fieldString = "";
String valueMarkString = "";
String lastTable = "";
for (int i = 0; i < dataItemIdList.size(); i++) {
String dataItemIdStr = dataItemIdList.get(i);
int tableId = Integer.parseInt(dataItemIdStr.substring(0,dataItemIdStr.length() - 2));
if (lastTableId != tableId) {
String bms1 = "\tpublic void insert_"+dataItemTableList.get(i).replace("'", "").toLowerCase()+"(BaseDataModel data);\n"+
"\tpublic void merge_"+dataItemTableList.get(i).replace("'", "").toLowerCase()+"();\n\n";
bWriter1.write(bms1);
String bms2 = "\tpublic void insert_"+dataItemTableList.get(i).replace("'", "").toLowerCase()+"(BaseDataModel data);\n\n";
bWriter2.write(bms2);
if (!lastTable.equals("")) {
buildSql(lastTable,fieldString,valueMarkString);
bWriter4.write(bmx4p1+bmx4p2);
bWriter5.write(bmx5);
fieldString="";
valueMarkString="";
}
lastTableId = tableId;
indexV = 1;
indexS = 1;
indexT = 1;
}
lastTable = dataItemTableList.get(i).replace("'", "").toLowerCase();
fieldString+=dataItemFieldList.get(i).replace("'", "").toLowerCase()+",";
String dITDM = "\t<void method=\"put\">\n"+
"\t\t<long>"+dataItemIdStr+"</long>\t<!--"+dataItemFieldList.get(i).toLowerCase()+"-->\n"+
"\t\t<object class=\"com.linyang.db.batch.model.HybridDataModel\"> \n"+
"\t\t<void property=\"methodName\">\n"+
"\t\t\t<string>";
String field = dataItemFieldList.get(i).toLowerCase();
if (field.indexOf("_time")!=-1) {
dITDM += "setTime" + indexT;
valueMarkString += " ,#{time" + indexT +",jdbcType=TIMESTAMP}";
indexT++;
}else if (field.indexOf("_status")!=-1) {
dITDM += "setString" + indexS;
valueMarkString += " ,#{string" + indexS +",jdbcType=VARCHAR}";
indexS++;
}else {
dITDM += "setValue" + indexV;
valueMarkString += " ,#{value" + indexV +",jdbcType=DOUBLE}";
indexV++;
}
dITDM += "</string>\n"+
"\t\t</void>\n"+
"\t\t<void property=\"mapperName\">\n"+
"\t\t\t<string>com.linyang.db.batch.mapper.BatchMapper</string>\n"+
"\t\t</void>\n"+
"\t\t<void property=\"tableName\">\n"+
"\t\t\t<string>"+dataItemTableList.get(i).replace("'", "").toLowerCase()+"</string>\n"+
"\t\t</void>\n"+
"\t\t</object> \n"+
"\t</void>\n";
bWriter3.write(dITDM);
}
buildSql(lastTable,fieldString,valueMarkString);
bWriter4.write(bmx4p1+bmx4p2);
bWriter5.write(bmx5);
bWriter1.close();
bWriter2.close();
bWriter3.close();
bWriter4.close();
bWriter5.close();
}
}
浙公网安备 33010602011771号