有张表T包含100多列,我想将与之对应的固定格式的excel表(也100多列,每列都与T的字段对应,顺序完全一致)的数据插入到这张表T中,用hibernate tool按照表T自动生成了映射文件和pojo类。
刚接触hibernate如果按书上例子的方法插入的话,就需要给100多个属性分别赋值工作量巨大(类似T的这种表还有10多张),如果不考虑分表的情况下,还有什么简便方法插入吗?比如从Excel获得一个row,然后直接插入一行?网上查了好久也没有找到方法,求帮忙:(
刚接触hibernate如果按书上例子的方法插入的话,就需要给100多个属性分别赋值工作量巨大(类似T的这种表还有10多张),如果不考虑分表的情况下,还有什么简便方法插入吗?比如从Excel获得一个row,然后直接插入一行?网上查了好久也没有找到方法,求帮忙:(
读取Excel已经用poi实现了,只是插入方法过于繁杂(需要给pojo的上百属性个分别赋值然后save),想问有没有更加方便的办法,hibernate可以执行SQL中的insert 语句吗?用哪个方法执行?
package com.bean.util;import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;/**
* 读取excel
* @author Administrator
*
*/
public class ReadExcel {
@SuppressWarnings("unchecked")
public static List readExcel(String excelFileName) throws BiffException,
IOException { // 创建一个list 用来存储读取的内容
List list = new ArrayList();
Workbook rwb = null;
Cell cell = null; // 创建输入流
InputStream stream = new FileInputStream(excelFileName); // 获取Excel文件对象
rwb = Workbook.getWorkbook(stream); // 获取文件的指定工作表 默认的第一个
Sheet sheet = rwb.getSheet(0); // 行数(表头的目录不需要,从2开始)
for (int i = 2; i < sheet.getRows(); i++) { // 创建一个数组 用来存储每一列的值
String[] str = new String[sheet.getColumns()]; // 列数
for (int j = 0; j < sheet.getColumns(); j++) { // 获取第i行,第j列的值
cell = sheet.getCell(j, i);
str[j] = cell.getContents(); }
// 把刚获取的列存入list
list.add(str);
} // 返回值集合
return list;
}
}
没有必要单独封装成具体的类,如果是项目需要,可以使用JDBC,如果是练习,从某种角度上说,你直接使用hibernate执行sql,但是这就和JDBC一样了,如果非要封装的话,这种赋值也是必须的啊……
String sql = "insert into SHOP_MALL_ACCOUNT_MAP_T (MALL_NO,ACCOUNT) values ('"
+ mallNo + "','" + userId + "')";
SQLQuery query = getSession().createSQLQuery(sql);
query.executeUpdate();