java把excel表的数据导入到mysql数据库

xiaoxiao2025-05-21  73

用java把excel表的数据导入到数据库(可能有些类型还没考虑完全,抽空写的)

————————————————————————————代码下载————————————————————————————————

简单的思路

一、先获取数据库表的字段名、主键名,

二、读取excel文件的数据(注意:excel文件的数据表字段的顺序与该表的顺序一致,有空再做导出)

三、拼接sql

上代码:

一、先连接数据库

package com.cn.wjq.util; import java.io.IOException; import java.io.InputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Properties; public class DBConnectUtil { private static String driver; private static String username; private static String pwd; private static String url; static { try { ClassLoader classLoader = DBConnectUtil.class.getClassLoader(); InputStream resourceAsStream = classLoader.getResourceAsStream("config/props/db.properties"); Properties properties=new Properties(); properties.load(resourceAsStream); url = properties.getProperty("url"); username = properties.getProperty("user"); pwd = properties.getProperty("password"); driver = properties.getProperty("driver"); Class.forName(driver); }catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } } public static Connection getConnection() throws SQLException { Connection conn = (Connection) DriverManager.getConnection(url, username, pwd); if (conn == null) { System.out.println("Failed to connect database..."); } else { System.out.println("database connected successful..."); } return conn; } public static void release(ResultSet rs, PreparedStatement sta, Connection conn) { if (rs != null) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } if (sta != null) { try { sta.close(); } catch (SQLException e) { e.printStackTrace(); } } if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } System.out.println("Resource release successful..."); } public static void release(PreparedStatement sta, Connection conn) { if (sta != null) { try { sta.close(); } catch (SQLException e) { e.printStackTrace(); } } if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } System.out.println("Resource release successful..."); } }

二、获取表的信息(当时没想好,写了个生成实体类代码(也就拼接))

package com.cn.wjq.util; import java.io.FileOutputStream; import java.lang.annotation.Annotation; import java.lang.reflect.Field; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.cn.wjq.model.BeanInfo; import com.cn.wjq.model.ClassType; import com.cn.wjq.model.ColumnInfo; public class Generator { private final static Logger LOGGER = LoggerFactory.getLogger(DatabaseUtil.class); private static final String SQL = "SELECT * FROM "; public static final String packagePath = "com.cn.wjq.beam"; // 生成文件路径 public static final String nextLine = "\r\n"; public static final String tab = "\t"; public static final String towtab = "\t\t"; public static final String ent = "\r\n\t"; public static final String pub = "public "; public static final String pri = "private "; public static final String imp = "import "; public static final String filePath = System.getProperty("user.dir"); public static final String dirPath = filePath + "\\src\\"; public static Pattern linePattern = Pattern.compile("_(\\w)"); public static Pattern linePattern2 = Pattern.compile("^[a-z]"); public static int createNum = 0; // 获取数据库下的表字段信息 public static BeanInfo getColumnInfos(String tableName) throws SQLException { BeanInfo beanInfo = new BeanInfo(); // 存入表名 beanInfo.setTableName(tableName); // 存入表对应的类名 String tableN = formChangeToLower(tableName); StringBuilder className = upCaseFirstWord(tableN); beanInfo.setClassName(className.toString()); // 获取列的信息 List<ColumnInfo> columnInfos = new ArrayList<>(); // 获取列名 List<String> columnNames = new ArrayList<>(); // 获取列的类型种类 List<String> columnTypes = new ArrayList<>(); // 连接数据库 Connection connection = DBConnectUtil.getConnection(); PreparedStatement pStatement = null; String tableSql = SQL + tableName; try { pStatement = connection.prepareStatement(tableSql); // 结果集元数据 ResultSetMetaData resultSetMetaData = pStatement.getMetaData(); // 得到表的列数 int columnCount = resultSetMetaData.getColumnCount(); for (int i = 0; i < columnCount; i++) { ColumnInfo columnInfo = new ColumnInfo(); // 获取列名 String columnName = resultSetMetaData.getColumnName(i + 1); // 获取列的类型 String columnType = resultSetMetaData.getColumnTypeName(i + 1); columnInfo.setColumnName(columnName); columnInfo.setColumnType(columnType); columnNames.add(columnName); columnInfos.add(columnInfo); // 获取列的类型种类 String columnTypeString = columnType.toString(); if (!columnTypes.contains(columnTypeString)) { columnTypes.add(columnType); } } } catch (SQLException e) { LOGGER.error("getColumnNames failure", e); } finally { DBConnectUtil.release(pStatement, connection); } beanInfo.setColumnNames(columnNames); beanInfo.setColumnInfos(columnInfos); beanInfo.setColumnTypes(columnTypes); return beanInfo; } // 生成javaBean public static void generateInJava(BeanInfo beanInfo) throws Exception { StringBuilder javaBuilder = new StringBuilder(); FileOutputStream fos = null; javaBuilder.append("package " + packagePath + ";"); javaBuilder.append(nextLine); // 拼接导入的jar String importJar = pieceImportJar(beanInfo); javaBuilder.append(importJar); // 拼接类名 javaBuilder.append(nextLine); javaBuilder.append(pub + "class " + beanInfo.getClassName() + "{"); javaBuilder.append(nextLine); // 开始拼接属性 List<ColumnInfo> columnInfos = beanInfo.getColumnInfos(); String propertyString = pieceProperty(columnInfos); javaBuilder.append(propertyString); // 拼接get与set方法 String methodString = pieceGetAndSetMethod(columnInfos); javaBuilder.append(methodString); javaBuilder.append(nextLine); javaBuilder.append("}"); // 获取路径,打印 String sendPath = dotToSlash(packagePath); String javaFilePath = dirPath + dotToSlash2(sendPath) + "\\" + beanInfo.getClassName() + ".java"; fos = new FileOutputStream(javaFilePath, true); fos.write(javaBuilder.toString().getBytes()); createNum++; System.out.println("create " + beanInfo.getClassName() + ".java"); fos.close(); } // 对import的jar包进行拼接 private static String pieceImportJar(BeanInfo beanInfo) { StringBuilder javaBuilder = new StringBuilder(); // 获取字段的类型 List<String> columnTypes = beanInfo.getColumnTypes(); // List columnTypes = getColumnTypes(beanInfo); // 拼接导入的jar for (Object type : columnTypes) { if ("DATE".equals(type.toString()) || "DATETIME".equals(type.toString())) { javaBuilder.append("import java.util.Date;"); javaBuilder.append(nextLine); } } return javaBuilder.toString(); } // 对表属性进行拼接 private static String pieceProperty(List<ColumnInfo> columnInfos) { StringBuilder javaBuilder = new StringBuilder(); // 开始拼接属性 for (ColumnInfo columnInfo : columnInfos) { if ("INT".equals(columnInfo.getColumnType().toString())) { javaBuilder.append(tab + pri + " Integer " + formChangeToLower(columnInfo.getColumnName()) + ";"); javaBuilder.append(nextLine); } else if ("VARCHAR".equals(columnInfo.getColumnType().toString())) { javaBuilder.append(tab + pri + " String " + formChangeToLower(columnInfo.getColumnName()) + ";"); javaBuilder.append(nextLine); } else if ("DECIMAL".equals(columnInfo.getColumnType().toString())) { javaBuilder.append(tab + pri + " Long " + formChangeToLower(columnInfo.getColumnName()) + ";"); javaBuilder.append(nextLine); } else if ("DATE".equals(columnInfo.getColumnType().toString()) || "DATETIME".equals(columnInfo.getColumnType().toString())) { javaBuilder.append(tab + pri + " Date " + formChangeToLower(columnInfo.getColumnName()) + ";"); javaBuilder.append(nextLine); } else if ("DOUBLE".equals(columnInfo.getColumnType().toString())) { javaBuilder.append(tab + pri + " Double " + formChangeToLower(columnInfo.getColumnName()) + ";"); javaBuilder.append(nextLine); } javaBuilder.append(nextLine); } return javaBuilder.toString(); } // 拼接get与set方法 private static String pieceGetAndSetMethod(List<ColumnInfo> columnInfos) { StringBuilder javaBuilder = new StringBuilder(); // 拼接get与set方法 for (ColumnInfo columnInfo : columnInfos) { if ("INT".equals(columnInfo.getColumnType().toString())) { // 单词首字母要大写 get javaBuilder.append(tab + pub + " Integer get" + upCaseFirstWord(formChangeToLower(columnInfo.getColumnName())) + "(){"); javaBuilder.append(nextLine); javaBuilder.append(towtab + "return " + formChangeToLower(columnInfo.getColumnName()) + ";"); javaBuilder.append(nextLine); javaBuilder.append(tab + "}"); javaBuilder.append(nextLine); // 单词首字母要大写 set javaBuilder .append(tab + pub + " void set" + upCaseFirstWord(formChangeToLower(columnInfo.getColumnName())) + "(Integer " + formChangeToLower(columnInfo.getColumnName()) + "){"); javaBuilder.append(nextLine); javaBuilder.append(towtab + "this." + formChangeToLower(columnInfo.getColumnName()) + "=" + formChangeToLower(columnInfo.getColumnName()) + ";"); javaBuilder.append(nextLine); javaBuilder.append(tab + "}"); javaBuilder.append(nextLine); } else if ("VARCHAR".equals(columnInfo.getColumnType().toString())) { // 单词首字母要大写 get javaBuilder.append(tab + pub + " String get" + upCaseFirstWord(formChangeToLower(columnInfo.getColumnName())) + "(){"); javaBuilder.append(nextLine); javaBuilder.append(towtab + "return " + formChangeToLower(columnInfo.getColumnName()) + ";"); javaBuilder.append(nextLine); javaBuilder.append(tab + "}"); javaBuilder.append(nextLine); // 单词首字母要大写 set javaBuilder .append(tab + pub + " void set" + upCaseFirstWord(formChangeToLower(columnInfo.getColumnName())) + "(String " + formChangeToLower(columnInfo.getColumnName()) + "){"); javaBuilder.append(nextLine); javaBuilder.append(towtab + "this." + formChangeToLower(columnInfo.getColumnName()) + "=" + formChangeToLower(columnInfo.getColumnName()) + ";"); javaBuilder.append(nextLine); javaBuilder.append(tab + "}"); javaBuilder.append(nextLine); } else if ("DECIMAL".equals(columnInfo.getColumnType().toString())) { // 单词首字母要大写 get javaBuilder.append(tab + pub + " Long get" + upCaseFirstWord(formChangeToLower(columnInfo.getColumnName())) + "(){"); javaBuilder.append(nextLine); javaBuilder.append(towtab + "return " + formChangeToLower(columnInfo.getColumnName()) + ";"); javaBuilder.append(nextLine); javaBuilder.append(tab + "}"); javaBuilder.append(nextLine); // 单词首字母要大写 set javaBuilder .append(tab + pub + " void set" + upCaseFirstWord(formChangeToLower(columnInfo.getColumnName())) + "(Long " + formChangeToLower(columnInfo.getColumnName()) + "){"); javaBuilder.append(nextLine); javaBuilder.append(towtab + "this." + formChangeToLower(columnInfo.getColumnName()) + "=" + formChangeToLower(columnInfo.getColumnName()) + ";"); javaBuilder.append(nextLine); javaBuilder.append(tab + "}"); javaBuilder.append(nextLine); } else if ("DATE".equals(columnInfo.getColumnType().toString()) || "DATETIME".equals(columnInfo.getColumnType().toString())) { // 单词首字母要大写 get javaBuilder.append(tab + pub + " Date get" + upCaseFirstWord(formChangeToLower(columnInfo.getColumnName())) + "(){"); javaBuilder.append(nextLine); javaBuilder.append(towtab + "return " + formChangeToLower(columnInfo.getColumnName()) + ";"); javaBuilder.append(nextLine); javaBuilder.append(tab + "}"); javaBuilder.append(nextLine); // 单词首字母要大写 set javaBuilder .append(tab + pub + " void set" + upCaseFirstWord(formChangeToLower(columnInfo.getColumnName())) + "(Date " + formChangeToLower(columnInfo.getColumnName()) + "){"); javaBuilder.append(nextLine); javaBuilder.append(towtab + "this." + formChangeToLower(columnInfo.getColumnName()) + "=" + formChangeToLower(columnInfo.getColumnName()) + ";"); javaBuilder.append(nextLine); javaBuilder.append(tab + "}"); javaBuilder.append(nextLine); } else if ("DOUBLE".equals(columnInfo.getColumnType().toString())) { // 单词首字母要大写 get javaBuilder.append(tab + pub + " Double get" + upCaseFirstWord(formChangeToLower(columnInfo.getColumnName())) + "(){"); javaBuilder.append(nextLine); javaBuilder.append(towtab + "return " + formChangeToLower(columnInfo.getColumnName()) + ";"); javaBuilder.append(nextLine); javaBuilder.append(tab + "}"); javaBuilder.append(nextLine); // 单词首字母要大写 set javaBuilder .append(tab + pub + " void set" + upCaseFirstWord(formChangeToLower(columnInfo.getColumnName())) + "(Double " + formChangeToLower(columnInfo.getColumnName()) + "){"); javaBuilder.append(nextLine); javaBuilder.append(towtab + "this." + formChangeToLower(columnInfo.getColumnName()) + "=" + formChangeToLower(columnInfo.getColumnName()) + ";"); javaBuilder.append(nextLine); javaBuilder.append(tab + "}"); javaBuilder.append(nextLine); } javaBuilder.append(nextLine); } return javaBuilder.toString(); } // 转换路径格式 // 例如:com/apache/convertor --> com\apache\convertor private static String dotToSlash2(String path) { String newPath = path.replace("/", "\\"); return newPath; } // 转换路径格式 // 例如:com.apache.convertor --> com/apache/convertor private static String dotToSlash(String name) { String newName = name.replace(".", "/"); return newName; } // 字符串转小写 private static String formChangeToLower(String name) { return name.toLowerCase().replace("_", ""); } // 属性首字母改成大写 private static StringBuilder upCaseFirstWord(String columnName) { StringBuilder stringBuilder = new StringBuilder(); String firstWord = columnName.substring(0, 1).toUpperCase(); String afertWord = columnName.substring(1); stringBuilder.append(firstWord + afertWord); return stringBuilder; } // 转换为驼峰命名 private static String formChangeToHump(String name) { name = name.toLowerCase(); Matcher m = linePattern.matcher(name); StringBuffer sb = new StringBuffer(); while (m.find()) { m.appendReplacement(sb, m.group(1).toUpperCase()); } m.appendTail(sb); StringBuffer sb1 = new StringBuffer(); Matcher m1 = linePattern2.matcher(sb.toString()); if (m1.find()) { m1.appendReplacement(sb1, m1.group(0).toUpperCase()); } m1.appendTail(sb1); return sb1.toString(); } public static void main(String[] args) throws Exception { String tableName = "gjjdepositeinfo"; BeanInfo beanInfo = getColumnInfos(tableName); List<ColumnInfo> columnInfos = beanInfo.getColumnInfos(); for (int i = 0; i < columnInfos.size(); i++) { System.out.println(columnInfos.get(i).getColumnName() + "..." + columnInfos.get(i).getColumnType()); } generateInJava(beanInfo); System.out.println(beanInfo.getColumnNames().toString()); } }

三、记录表格的信息实体类

package com.cn.wjq.model; import java.util.List; public class BeanInfo { //表名称 private String tableName; //表对应的类名 private String className; //列的信息 private List<ColumnInfo> ColumnInfos; //列的类型种类 private List<String> columnTypes; //列的类名 private List<String> columnNames; public String getTableName() { return tableName; } public void setTableName(String tableName) { this.tableName = tableName; } public String getClassName() { return className; } public void setClassName(String className) { this.className = className; } public List<ColumnInfo> getColumnInfos() { return ColumnInfos; } public void setColumnInfos(List<ColumnInfo> columnInfos) { ColumnInfos = columnInfos; } public List<String> getColumnTypes() { return columnTypes; } public void setColumnTypes(List<String> columnTypes) { this.columnTypes = columnTypes; } public List<String> getColumnNames() { return columnNames; } public void setColumnNames(List<String> columnNames) { this.columnNames = columnNames; } @Override public String toString() { return "BeanInfo [tableName=" + tableName + ", className=" + className + ", ColumnInfos=" + ColumnInfos + ", columnTypes=" + columnTypes + ", columnNames=" + columnNames + "]"; } }

四、读取excel

package com.cn.wjq.util; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.text.DecimalFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.Iterator; import java.util.List; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFDateUtil; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import com.cn.wjq.dao.MysqlImpl; import com.cn.wjq.model.BeanInfo; public class ExcelInsertPiece { public ExcelInsertPiece() { } public static void start(InputStream in, String path,BeanInfo beanInfo) throws Exception { Workbook book = getWorkBook(in, path); // 1.获取工作簿 List<Sheet> sheets = getSheets(book); // 2.获取所有工作表 SheetIterator(sheets,beanInfo); // 3.对所有工作表进行操作 } // 1.获取工作簿 public static Workbook getWorkBook(InputStream in, String path) throws FileNotFoundException, IOException { return path.endsWith(".xls") ? (new HSSFWorkbook(in)) : (path.endsWith(".xlsx") ? (new XSSFWorkbook(in)) : (null)); } // 2.获取所有工作表 private static List<Sheet> getSheets(Workbook book) { int numberOfSheets = book.getNumberOfSheets(); System.out.println("numberOfSheets:" + numberOfSheets); List<Sheet> sheets = new ArrayList<Sheet>(); for (int i = 0; i < numberOfSheets; i++) { sheets.add(book.getSheetAt(i)); } return sheets; } // 3.对所有工作表进行操作 private static void SheetIterator(List<Sheet> sheets,BeanInfo beanInfo) { for (int i = 0; i < sheets.size(); i++) { //循环每一张工作表 Sheet sheet = sheets.get(i); if (sheet.getLastRowNum() > 1) { //判断是否为空表,获取有数据的最后一行的行数。如果为零则为空表 System.out.println(sheet.getSheetName() + "============="); //打印不为空的工作表名字 } Iterator<Row> iterator = sheet.iterator(); //迭代器 //用两个while循环遍历所有单元格 while (iterator.hasNext()) { //遍历每一行 Row nextRow = iterator.next(); if (nextRow.getRowNum() < 1) { continue; //nextRow.getRowNum()就是获取行数,由表中看出第一行(getRowNum()=0)为表头,直接跳过 } //从第二行开始是有用的数据,要保存早数据库,第二行:nextRow.getRowNum()=1 Iterator<Cell> cellIterator = nextRow.cellIterator(); int size = beanInfo.getColumnNames().size(); List<Object> columnValues=new ArrayList<>(); while (cellIterator.hasNext()) { //遍历每一行的每一列 Cell cell = cellIterator.next(); if (cell.getColumnIndex()>=0&&cell.getColumnIndex()<size) { String cellValue = ""; DecimalFormat df = new DecimalFormat("#"); switch (cell.getCellType()) { case HSSFCell.CELL_TYPE_STRING: cellValue =cell.getRichStringCellValue().getString().trim(); columnValues.add(cellValue); break; case HSSFCell.CELL_TYPE_NUMERIC: //将单元格内容设置为number类型,也可以这样写cell.setCellType(Cell.CELL_TYPE_NUMERIC); cell.setCellType(0); SimpleDateFormat ftm = new SimpleDateFormat("yyyy-MM-dd"); double value = cell.getNumericCellValue(); System.out.println(value+"..."); Date date = org.apache.poi.ss.usermodel.DateUtil.getJavaDate(value); //判断是否属于时间类型 if (HSSFDateUtil.isCellDateFormatted(cell)) { columnValues.add(ftm.format(date)); //如果这里打印的话,还是会打印出数字,但是保存到数据库会变成日期格式 System.out.println(ftm.format(date).toString()); }else { //基本类型 columnValues.add(value); } break; case HSSFCell.CELL_TYPE_BOOLEAN: cellValue =String.valueOf(cell.getBooleanCellValue()).trim(); columnValues.add(cellValue); break; case HSSFCell.CELL_TYPE_FORMULA: cellValue =cell.getCellFormula(); columnValues.add(cellValue); break; default: cell.setCellType(1); columnValues.add(cell.getStringCellValue().toString()); break; } } } try { //到这里已经遍历完一行Execl的所有单元格,并存储到model里面了,现在调用方法保存到数据库 MysqlImpl mysqlImpl = new MysqlImpl(); System.out.println(columnValues.toString()); if (columnValues.size()==1&&columnValues.get(0)==null||columnValues.get(0)=="") { //判断excel表中的这条数据是否为空 continue; }else if (mysqlImpl.exist(beanInfo, columnValues)) { System.out.println("此对象已存在于数据库,不可重复添加"); continue; } else { mysqlImpl.save(beanInfo, columnValues); } } catch (Exception e) { e.printStackTrace(); } System.out.println(" "); } System.out.println(" "); } } }

五、开始拼接sql先查询是否存在该表主键存在,不存在在读取excel的代码中再执行插入

package com.cn.wjq.dao; import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.List; import com.cn.wjq.model.BeanInfo; import com.cn.wjq.util.DBConnectUtil; public class MysqlImpl { private static final String sql_findById = " SELECT * FROM "; private static final String sql_save = " INSERT INTO "; @SuppressWarnings("resource") public Integer save(BeanInfo beanInfo,List<Object> columnValus) throws Exception { Connection conn = null; PreparedStatement prep = null; int i = 0; try { conn = DBConnectUtil.getConnection(); StringBuilder sqlBuilder=new StringBuilder(); //拼接sql //" INSERT INTO t_reader(id,dept,course,credit,book_num,publish_date,book_name) VALUES(?,?,?,?,?,?,?)"; sqlBuilder.append(sql_save); sqlBuilder.append(beanInfo.getTableName()+"("); //拼接sql的属性 List<String> columnNames = beanInfo.getColumnNames(); int prepCount=0; ok: for(int j=0;j<columnNames.size();j++) { if (j==columnNames.size()-1) { prepCount++; sqlBuilder.append(columnNames.get(j)+") VALUES("); for (int j2 = 0; j2 < prepCount; j2++) { if (j2==prepCount-1) { sqlBuilder.append("?)"); break ok; } sqlBuilder.append("?,"); } } sqlBuilder.append(columnNames.get(j)+","); prepCount++; } String sqlString = sqlBuilder.toString(); prep = conn.prepareStatement(sqlString); for(int k=0;k<columnValus.size();k++) { prep.setObject(k+1, columnValus.get(k)); } i = prep.executeUpdate(); if(i>0){ System.out.println("1 row affected..."); }else if(i==0){ System.out.println("insert failed..."); } } catch (SQLException e) { e.printStackTrace(); }finally{ DBConnectUtil.release( prep, conn); } return i; } //判断该主键是否存在 //SELECT * FROM t_reader WHERE id = ? public boolean exist(BeanInfo beanInfo,List<Object> columnValus) { Connection connection=null; PreparedStatement prepareStatement=null; ResultSet resultSet=null; DatabaseMetaData dbMetaData = null; boolean exist=false; ResultSet primaryKeyResultSet =null; String primaryKeyColumnName =null; StringBuilder sqlBuilder=null; try { connection = DBConnectUtil.getConnection(); dbMetaData = connection.getMetaData(); String tableName = beanInfo.getTableName(); List<String> columnNames = beanInfo.getColumnNames(); primaryKeyResultSet = dbMetaData.getPrimaryKeys(null,null,tableName); while(primaryKeyResultSet.next()){ primaryKeyColumnName = primaryKeyResultSet.getString("COLUMN_NAME"); } if (primaryKeyColumnName!=null) { sqlBuilder=new StringBuilder(); sqlBuilder.append(sql_findById); sqlBuilder.append(beanInfo.getTableName()+" WHERE "+primaryKeyColumnName+"=?"); prepareStatement = connection.prepareStatement(sqlBuilder.toString()); ok: for(int i=0;i<columnValus.size();i++) { if (primaryKeyColumnName.equals(columnNames.get(i))) { prepareStatement.setObject(1, columnValus.get(i)); break ok; } } resultSet = prepareStatement.executeQuery(); if (resultSet.next()==true) { exist=true; }else { exist=false; } } } catch (Exception e) { // TODO: handle exception } return exist; } }

六、main方法

package com.cn.wjq.main; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.util.List; import com.cn.wjq.model.BeanInfo; import com.cn.wjq.model.ColumnInfo; import com.cn.wjq.util.ExcelInsertPiece; import com.cn.wjq.util.Generator; public class MyMain { public static void main(String[] args) throws Exception { String tableName1="t_cousre"; //输入表名 BeanInfo beanInfo = Generator.getColumnInfos(tableName1); List<ColumnInfo> columnInfos = beanInfo.getColumnInfos(); for (int i = 0; i < columnInfos.size(); i++) { System.out.println(columnInfos.get(i).getColumnName() + "..." + columnInfos.get(i).getColumnType()); } Generator.generateInJava(beanInfo); //String path = "c:/t_reader工作表.xls"; String path = "c:/couse工作表.xls"; InputStream in = new FileInputStream(new File(path)); ExcelInsertPiece.start(in,path,beanInfo); } }

估计还有不少漏洞,只是基本可用,新手小白鼠一只,欢迎大佬们点评;有需要修改的地方还请不吝赐教

转载请注明原文地址: https://www.6miu.com/read-5030477.html

最新回复(0)