package com.casic.birmm; import com.casic.birmm.util.ByteUtil; import com.casic.birmm.util.ConnectionManager; import com.casic.birmm.util.IdWorker; import com.casic.birmm.util.RecIrisUtil; import org.apache.commons.dbutils.DbUtils; import org.apache.commons.dbutils.QueryRunner; import org.apache.commons.dbutils.handlers.ArrayListHandler; import org.apache.log4j.Logger; import java.sql.Connection; import java.sql.SQLException; import java.util.List; public class ExtractPersonIrisDataFromMySQLSxmk { public static void main(String[] args) { Connection conn = null; Connection connDest = null; Logger logger = Logger.getLogger(ExtractPersonIrisDataFromMySQLSxmk.class.getName()); String queryStr = "select b.u_id, b.id, b.name, b.worker_sn, b.gender, " + "b.depart_id, b.create_time, i.img_left, i.img_right " + "from base_worker_info b left join base_worker_iris i " + "on b.id = i.worker_id where b.del_flag=0"; IdWorker worker = new IdWorker(1); try { conn = ConnectionManager.getMySQLConnectionFromC3P0(); conn.setAutoCommit(false); connDest = ConnectionManager.getMySQLDestConnectionFromC3P0(); connDest.setAutoCommit(false); QueryRunner runner = new QueryRunner(); List<Object[]> tempList = (List<Object[]>) runner.query(conn, queryStr, new ArrayListHandler()); System.out.println(tempList.size()); for (int i = 0; i < tempList.size(); i++) { Object[] person = tempList.get(i); String content = ""; // 插入sys_person表 String insertPerson = "INSERT INTO SYS_PERSON (ID, DELFLAG, NAME, SEX, DEPTID, " + "ID_CARD_NO, PERSON_TYPE, PERSON_CODE, OPRATION_ID, DUTY, NATION, CARD_TYPE) " + "VALUES (?, '0', ?, ?, ?, ?, '1', ?, '1', '0', '0', '111')"; Object[] insertPersonParams = new Object[6]; insertPersonParams[0] = worker.nextId(); // id insertPersonParams[1] = (String) person[2]; // 姓名 insertPersonParams[2] = String.valueOf((Integer) person[4]); // 性别 insertPersonParams[3] = person[5]; // 所在部门 insertPersonParams[4] = ((String) person[0]).substring(0, 18); // 身份证号 insertPersonParams[5] = person[3]; runner.update(connDest, insertPerson, insertPersonParams); // 插入sys_person_ext表 String insertExt = "INSERT INTO SYS_PERSON_EXT (ID, TARGET_ID) VALUES (?, ?)"; Object[] insertExtParams = new Object[2]; insertExtParams[0] = insertPersonParams[0]; insertExtParams[1] = insertPersonParams[0]; runner.update(connDest, insertExt, insertExtParams); content += i + "\t" + person[0] + "\t" + person[2] + "\t" + person[3] + "\t" + person[5]; logger.info(content); if (null != person[7] && ((byte[] )person[7]).length > 0) { // 调用虹膜编码服务 byte[] leftCode = RecIrisUtil.getIrisCode((byte[]) person[7]); byte[] rightCode = RecIrisUtil.getIrisCode((byte[]) person[8]); // 插入iris_data表 String insertIris = "INSERT INTO IRIS_DATA (ID, PERSON_ID, ID_CARD_NO, LEFT_IRIS_CODE1, RIGHT_IRIS_CODE1) " + "VALUES (?, ?, ?, ?, ?)"; Object[] insertIrisParams = new Object[5]; insertIrisParams[0] = worker.nextId(); insertIrisParams[1] = insertPersonParams[0]; insertIrisParams[2] = insertPersonParams[4]; if (null != leftCode) { logger.info("left: " + ByteUtil.binToHexString(leftCode)); insertIrisParams[3] = leftCode; } else { logger.info("left code failed"); } if (null != rightCode) { logger.info("right: " + ByteUtil.binToHexString(rightCode)); insertIrisParams[4] = rightCode; } else { logger.info("right code failed"); } runner.update(connDest, insertIris, insertIrisParams); } } } catch (Exception ex) { ex.printStackTrace(); } finally { try { DbUtils.commitAndClose(connDest); } catch (SQLException e) { e.printStackTrace(); } } } }