Log4j日志SQL生成器
代码拿到后可以直接运行。
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class SQLGenerator extends JFrame implements ActionListener{
private static final int WIDTH = 800;
private static final int HEIGHT = 600;
JLabel jl1=new JLabel(“Log4j日志:”);
JTextArea jta1 = new JTextArea(10,10);
JScrollPane jsp1 = new JScrollPane(jta1);
JButton jb = new JButton(“transport”);
JLabel jl2=new JLabel(“SQL:”);
JTextArea jta2 = new JTextArea(10,10);
JScrollPane jsp2 = new JScrollPane(jta2);
public SQLGenerator(){
Container con = getContentPane();
con.setLayout(new GridLayout(5,1,1,1));
con.add(jl1);
con.add(jsp1);
con.add(jl2);
con.add(jsp2);
jb.addActionListener(this);
con.add(jb);
this.setTitle("Log4j Mybatis日志sql生成器");
this.setSize(WIDTH,HEIGHT);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
@Override
public void actionPerformed(ActionEvent e) {
String log4j = jta1.getText();
System.out.println(log4j);
String[] obj = log4j.split("\n");
String sql1 = obj[0];
String value = obj[1];
String result = this.getSql(sql1, value);
jta2.setText(result);
}
public static void main(String[] args) {
new SQLGenerator();
}
public String getSql(String sql1, String value){
String sql = sql1;
String preparingSql = sql.split(">")[1].replace("Preparing: “, “”);
String argSql = value;
String argV = argSql.split(”>")[1].replace("Parameters: ", “”);
// System.out.println(argV);
String[] argArr = argV.split(",");
// System.out.println(argArr);
for (String s: argArr) {
if (s.contains("(String)")){
// 处理字符串类型
s = ("\'" + s.split("\\(")[0] + "\'").replace(" ", "");
// System.out.println(s);
} else if (s.contains("(Integer)")) {
//处理整形
s = s.split("\(")[0].replace(" “, “”);
// System.out.println(s);
} else if (s.contains(”(Long)")) {
//处理Long
s = s.split("\(")[0].replace(" “, “”);
// System.out.println(s);
} else {
// System.out.println(s);
}
String ts = preparingSql.replaceFirst(”\?", s);
// System.out.println(ts);
preparingSql = ts;
}
String sysOut = preparingSql.replaceFirst(" ", "").replaceFirst(" ", "");
System.out.println(sysOut);
return sysOut;
}
}