在学习struct的途中发现反射确实是一种构架框架和简化开发的有利工具,于是跟着网上的博客写了这个快速sql语句的小工具。
QuickSql
import java.lang.reflect.*;
import java.util.*;
public class QuickSql {
List<String> kList;
List vList;
String database;
public boolean init(Object obj) {
boolean isException = false;
kList = new ArrayList();
vList = new ArrayList();
Class c = obj.getClass();
Method[] methods = c.getMethods();
Field[] fields = c.getFields();
database = c.getName();
System.out.println(database);
database = database.substring(database.lastIndexOf('.')+1, database.length());
System.out.println(database);
for(Method method : methods) {
String name = method.getName();
if(name.startsWith("get")&&!name.startsWith("getClass")) {
kList.add(name.substring(3, name.length()));
try {
Object value = method.invoke(obj, null);
if(value instanceof String) {
vList.add("\""+value+"\"");
}else {
vList.add(value);
}
} catch (IllegalAccessException e) {
isException = true;
e.printStackTrace();
} catch (IllegalArgumentException e) {
isException = true;
e.printStackTrace();
} catch (InvocationTargetException e) {
isException = true;
e.printStackTrace();
}
}
}
return !isException ;
}
public String insert() {
StringBuffer sql = new StringBuffer("insert into ");
sql.append(database+" value(");
for(int i=0;i<kList.size();i++) {
if(i<kList.size()-1) {
sql.append(kList.get(i)+",");
}else {
sql.append(kList.get(i)+") values(");
}
}
for(int i=0;i<vList.size();i++) {
if(i<vList.size()-1) {
sql.append(vList.get(i)+",");
}else {
sql.append(vList.get(i)+")");
}
}
return sql.toString();
}
}
user
public class user {
int id;
String username;
String password;
String email;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
test
public class test {
public static void main(String[] args) {
user u = new user();
u.setId(1);
u.setEmail("ssss@hhh.com");
u.setUsername("sdsdsd");
u.setPassword("123456");
QuickSql qs = new QuickSql();
if(qs.init(u)) System.out.println(qs.insert());
else System.err.println("err");
}
}