解决方案:将实体对象转化为insert 插入语句
String value="";
Path path = Paths.get("C:/tableName.txt");
// 使用newBufferedWriter创建文件并写文件
// 这里使用了try-with-resources方法来关闭流,不用手动关闭
try (BufferedWriter writer =
Files.newBufferedWriter(path, StandardCharsets.UTF_8)) {
//在此处码业务数据查询逻辑
//......
value += insert_sql(bean,"tableName");
value+="\r\n"; //换行
writer.write(value);
} catch (IOException e) {
e.printStackTrace();
}
/**
*
* @param object 实体类
* @param class_name 表名
* @return 返回insert sql
*/
public static String insert_sql(Object object,String class_name) {
//利用反射 把对象装换成 insert 语句
String sql = " insert into "+class_name+" (";
try {
SimpleDateFormat df1 = new SimpleDateFormat("yyyy-MM-dd");
Field[] declaredFields = object.getClass().getDeclaredFields();
for (int i = 0; i < declaredFields.length; i++) {
if(!"dao".equals(declaredFields[i].getName())) {
//设置是否允许访问,不是修改原来的访问权限修饰词。
declaredFields[i].setAccessible(true);
//为空的不加入
if(declaredFields[i].get(object)!=null&&!"".equals(declaredFields[i].get(object))) {
sql+=declaredFields[i].getName()+",";
//System.out.println(i+"键==>"+declaredFields[i].getName() +"---------值"+declaredFields[i].get(object));
}
}
}
sql+="* values (";
for (int i = 0; i < declaredFields.length; i++) {
if(!"dao".equals(declaredFields[i].getName())) {
//设置是否允许访问,不是修改原来的访问权限修饰词。
declaredFields[i].setAccessible(true);
if(declaredFields[i].get(object)!=null&&!"".equals(declaredFields[i].get(object))) {
if("class java.util.Date".equals(declaredFields[i].getType().toString())) {
//如果是日期格式
String format = df1.format(declaredFields[i].get(object));
// sql+="to_date('"+format+"', 'dd-mm-yyyy'),";//oracle数据库
sql+="'"+format+"',";//mysql数据库
}else {
sql+="'"+declaredFields[i].get(object)+"',";
}
}
}
}
sql+="*";
sql=sql.replace(",*", ")");
} catch (Exception e) {
e.printStackTrace();
}
sql = sql.replace("'#pk#'", "pk.nextval") +";";
System.out.println(sql);
return sql;
}