我是靠谱客的博主 纯情棉花糖,这篇文章主要介绍实体类创建数据库字段,现在分享给大家,希望可以做个参考。

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
package top.zjtie.qingningmaicai3; import com.google.common.collect.Lists; import top.zjtie.qingningmaicai3.entity.*; import java.lang.reflect.Field; import java.lang.reflect.Modifier; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.stream.Collectors; /** * @author QianJiajie * @date 2020-11-07 15:20 */ public class DaoGenUtils { public static void genParam(List<String> params) { StringBuilder sb = new StringBuilder(); StringBuilder sb1 = new StringBuilder(); sb1.append(" where "); for (String p : params) { sb.append("@Param(" + p + ") " + p + ","); sb1.append(p + " = #{" + p + "} and "); } System.out.println(sb); System.out.println(sb1); } public static void genDataSchema(Class clazz) { if (clazz == null) { return; } String tableName = "Green_" + clazz.getSimpleName().substring(5); //获取关联的所有类,本类以及所有父类 boolean ret = true; List<Class> clazzs = new ArrayList<Class>(); //需要关联父类时候打开这个注释 while (ret) { clazzs.add(clazz); clazz = clazz.getSuperclass(); if (clazz == null || clazz == Object.class) { break; } } StringBuilder sb = new StringBuilder(); sb.append("CREATE TABLE `" + tableName + "` (n"); for (int i = 0; i < clazzs.size(); i++) { Field[] declaredFields = clazzs.get(i).getDeclaredFields(); List<Field> declaredFieldsList = Lists.newArrayList(declaredFields); declaredFieldsList = declaredFieldsList.stream() .collect(Collectors.toList()); Field[] fields = declaredFieldsList.toArray(new Field[0]); int length = fields.length; for (int j = 0; j < length; j++) { Field field = fields[j]; int mod = field.getModifiers(); //过滤 static 和 final 类型 if (Modifier.isStatic(mod) || Modifier.isFinal(mod)) { continue; } field.setAccessible(true); String fieldName = field.getName(); String schemaStr = "`" + fieldName + "` " + getSchemaType(field) + " n"; if (j == length-1){ schemaStr = schemaStr.replace(",", ""); } sb.append(" " +schemaStr); } } sb.append(") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;n"); System.out.println(sb); } private static String getSchemaType(Field field) { Class<?> fieldType = field.getType(); if (fieldType == String.class) { return "VARCHAR(50) NOT NULL,"; } else if (fieldType == Double.class || fieldType == double.class || fieldType == BigDecimal.class) { return "BIGDECIMAL(10,2) NOT NULL,"; } else if (fieldType == Integer.class || fieldType == int.class) { if (field.getName().toLowerCase().contains("type") || field.getName().toLowerCase().contains("status")) { return "TINYINT(4) NOT NULL,"; } else { return "INT(11) NOT NULL,"; } } else if (fieldType == Date.class) { if (field.getName().contains("add")) { return "timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,"; } else if (field.getName().contains("update")) { return "timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,"; } return "timestamp,"; } return "VARCHAR(50) NOT NULL,"; } public static void main(String[] args) { //genParam(Lists.newArrayList("orderId", "ticketAmount", "speedPackAmount", "convertStatus", "realTicketGroupId", "failType")); genDataSchema(GreenAds.class); } }

最后

以上就是纯情棉花糖最近收集整理的关于实体类创建数据库字段的全部内容,更多相关实体类创建数据库字段内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(82)

评论列表共有 0 条评论

立即
投稿
返回
顶部