因为我比较懒,而且还怕出错,每次生成增删改查SQL的时候,我都希望直接传入表名或者class就能自动生成遍历全字段的sql。
所以反射是必须的,如果你不懂,可能这篇文章对你来说就没什么意义,更何况还用了代理模式。
/**
*
* 生成查询基本SQL语句
* @param entiy 实体类
* @param a 查询时用的别名
* @return 查询的SQL语句
*/
public static String BasicSelcet(Class entity,String a){
Field[] f=entity.getDeclaredFields();
String sql=" select ";
Annotation[] an=entity.getAnnotations();
javax.persistence.Table et=(Table) entity.getAnnotation(Table.class);
String t= et.name();
for(int i=0;i<f.length;i++){
if(i<f.length-1){
// System.out.println(entiy.getSimpleName());
sql=sql+a+"."+mingan(f[i].getName())+", ";
}else{
sql=sql+a+"."+mingan(f[i].getName())+ " from "+t+" "+a;
}
}
sql=sql+" where 1=1";
return sql;
}