flink代码中使用反射的目的:
1.获取pojo的所有属性字段,用于拼接sql语句.
反射常用三种方式:
获取class对象的三种方法:
1.class.forName(...)
2.类名.class
3.对象.getClass
代码案例:
Field[] fields = tClass.getDeclaredFields();
//拼接属性名
String cs = "";
String wh = "";
for (Field field : fields) {
//如果这个field有NoSink这个注解,则不要拼接到sql中
NoSink noSink = field.getAnnotation(NoSink.class);
if (noSink == null) {
cs += field.getName() + ",";
wh += "?,";
}
}
//insert into t(id,name,age)values(?,?,?)
StringBuilder sql = new StringBuilder();
sql
.append("insert into ")
.append(table)
.append("(")
//拼接字段
.append(cs, 0, cs.length() - 1)
.append(")values(")