package com.casic.birmm; import com.casic.birmm.util.ConnectionManager; import org.apache.commons.dbutils.DbUtils; import org.apache.commons.dbutils.QueryRunner; import org.apache.commons.dbutils.handlers.ArrayListHandler; import java.io.*; import java.sql.Connection; import java.sql.SQLException; import java.util.ArrayList; import java.util.Base64; import java.util.List; public class UpdatePersonPhoto { public static void main(String[] args) { Connection conn = null; String queryStr = "select id, name from sys_person"; try { conn = ConnectionManager.getMySQLConnectionFromC3P0(); conn.setAutoCommit(false); QueryRunner runner = new QueryRunner(); List<Object[]> personList = runner.query(conn, queryStr, new ArrayListHandler()); String base = "D:\\Download\\photo\\"; // 正确更新列表 List<String> correctList = new ArrayList<>(); // 没有照片列表 List<String> noPhotoList = new ArrayList<>(); // 重名列表 List<String> renameList = new ArrayList<>(); for (int i = 0; i < personList.size(); i++) { Long personId = (Long) personList.get(i)[0]; String name = (String) personList.get(i)[1]; // 查询工号 String queryFileStr = "select name, filename from temp where name = ?"; Object[] param = new Object[1]; param[0] = name; List<Object[]> fileList = runner.query(conn, queryFileStr, new ArrayListHandler(), param); if (null == fileList || fileList.size() == 0) { noPhotoList.add(name); } else if (fileList.size() == 1) { String filename = (String) fileList.get(0)[1]; File file = null; File file1 = new File(base + filename + ".jpg"); File file2 = new File(base + filename + name + ".jpg"); if (file1.exists() == true) { file = new File(base + filename + ".jpg"); } else if (file2.exists() == true) { file = new File(base + filename + name + ".jpg"); } else { // 没有找到照片 noPhotoList.add(name); continue; } String base64Str = byteConverterBASE64(file); if (null != base64Str && base64Str.equals("") == false) { String insertStr = "insert into iris_person_photo (person_id, photo_data) values (?, ?)"; Object[] params = new Object[2]; params[0] = personId; params[1] = "data:image/jpg;base64," + base64Str; int count = runner.update(conn, insertStr, params); System.out.println(count + " == " + name + "==" + filename); correctList.add(name); // 更新员工编号 String updateStr = "update sys_person set person_code = ? where id = ?"; Object[] uParams = new Object[2]; uParams[0] = filename; uParams[1] = personId; runner.update(conn, updateStr, uParams); } } else { renameList.add(name); } } System.out.println("正常录入照片:" + correctList.size()); for(int i = 0; i < correctList.size(); i++) { System.out.println(correctList.get(i)); } System.out.println("没有找到照片:" + noPhotoList.size()); for(int i = 0; i < noPhotoList.size(); i++) { System.out.println(noPhotoList.get(i)); } System.out.println("照片库重名:" + renameList.size()); for(int i = 0; i < renameList.size(); i++) { System.out.println(renameList.get(i)); } } catch (Exception ex) { ex.printStackTrace(); } finally { try { DbUtils.commitAndClose(conn); } catch (SQLException e) { e.printStackTrace(); } } } public static String byteConverterBASE64(File file){ long size = file.length(); byte[] imageByte = new byte[(int)size]; FileInputStream fs = null; BufferedInputStream bis = null; try { fs = new FileInputStream(file); bis = new BufferedInputStream(fs); bis.read(imageByte); } catch (FileNotFoundException e) { System.out.println("文件"+file.getName()+"不能被找到:"+e.getMessage()); e.printStackTrace(); } catch (IOException e) { System.out.println("byte转换BASE64出错:"+e.getMessage()); e.printStackTrace(); } finally{ if(bis != null){ try { bis.close(); } catch (IOException e) { e.printStackTrace(); } } if(fs != null){ try { fs.close(); } catch (IOException e) { e.printStackTrace(); } } } return (new sun.misc.BASE64Encoder()).encode(imageByte); } }