1 public class SQLUtil {
2 public static void main(String[] args) {
3 User user = new User();
4 user.setId("001");
5 user.setName("wzq");
6 insert(user);
7 }
8
9 @SuppressWarnings("unchecked")
10 public static <T extends Model> void insert(T t) {
11 Class<T> clz = (Class<T>) t.getClass();
12 if (clz.isAnnotationPresent(TableName.class)) {
13 // 表名
14 String tableName = clz.getAnnotation(TableName.class).value();
15 // 字段名
16 Field[] flds = clz.getDeclaredFields();
17 String[] fields = new String[flds.length];
18 // 字段值
19 String[] values = new String[flds.length];
20 for (int i = 0; i < flds.length; i++) {
21 Field fld = flds[i];
22 fld.setAccessible(true);
23 // String fields[i] =
24 // fld.getAnnotation(FieldProperty.class).value();
25 fields[i] = fld.getAnnotation(FieldProperty.class).value();
26 try {
27 values[i] = (String) fld.get(t);
28 } catch (IllegalArgumentException e) {
29 e.printStackTrace();
30 } catch (IllegalAccessException e) {
31 e.printStackTrace();
32 }
33 }
34 String sql = "insert into " + tableName + "(" + join(fields, ',')
35 + ")values(" + join(values, ',') + ')';
36 System.out.println(sql);
37 }
38 }
39
40 public static final String join(Object[] arrs, char symbol) {
41 if (arrs == null) {
42 return "";
43 }
44 StringBuffer sb = new StringBuffer();
45 for (int i = 0; i < arrs.length; i++) {
46 Object obj = arrs[i];
47 sb.append(obj);
48 if (i != arrs.length - 1) {
49 sb.append(symbol);
50 }
51 }
52 return sb.toString();
53 }
54 }