hibernate插入数据的问题

c_shli 2011-01-01 04:01:09
有张表T包含100多列,我想将与之对应的固定格式的excel表(也100多列,每列都与T的字段对应,顺序完全一致)的数据插入到这张表T中,用hibernate tool按照表T自动生成了映射文件和pojo类。
刚接触hibernate如果按书上例子的方法插入的话,就需要给100多个属性分别赋值工作量巨大(类似T的这种表还有10多张),如果不考虑分表的情况下,还有什么简便方法插入吗?比如从Excel获得一个row,然后直接插入一行?网上查了好久也没有找到方法,求帮忙:(
...全文
145 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
zn85600301 2011-01-06
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 c_shli 的回复:]

首先多谢楼上各位,我现在的问题不是读取Excel而是从Excel读取一行数据后(Row)插入到相应数据库表的问题~~~。
读取Excel已经用poi实现了,只是插入方法过于繁杂(需要给pojo的上百属性个分别赋值然后save),想问有没有更加方便的办法,hibernate可以执行SQL中的insert 语句吗?用哪个方法执行?
[/Quote]

String sql = "insert into SHOP_MALL_ACCOUNT_MAP_T (MALL_NO,ACCOUNT) values ('"
+ mallNo + "','" + userId + "')";
SQLQuery query = getSession().createSQLQuery(sql);
query.executeUpdate();
tonytone2008 2011-01-06
  • 打赏
  • 举报
回复
hibernate可以直接执行sql语句啊
没有必要单独封装成具体的类,如果是项目需要,可以使用JDBC,如果是练习,从某种角度上说,你直接使用hibernate执行sql,但是这就和JDBC一样了,如果非要封装的话,这种赋值也是必须的啊……
jarymakej2ee 2011-01-05
  • 打赏
  • 举报
回复
你的意思就是不想给那么多字段赋值撒.那你用纯SQL插入就行了撒.
c_shli 2011-01-04
  • 打赏
  • 举报
回复
自己顶下~~~~~~~~~可能是我表述的不清楚,还是没能解决问题,我只是想弄明白通过hibernate怎样更简单的处理这样的问题,我只是为了学习,具体需求早已经jxl+jdbc搞定了
c_shli 2011-01-03
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 cscxxx 的回复:]
你这表包含100多个字段吗?
很少看到一个表包含这么多字段的
[/Quote]
是的,这些表都是业务部门从其他系统下载下来的,每一张Excel表都包含100多个列,这样的表少说得有10多张
c_shli 2011-01-03
  • 打赏
  • 举报
回复
首先多谢楼上各位,我现在的问题不是读取Excel而是从Excel读取一行数据后(Row)插入到相应数据库表的问题~~~。
读取Excel已经用poi实现了,只是插入方法过于繁杂(需要给pojo的上百属性个分别赋值然后save),想问有没有更加方便的办法,hibernate可以执行SQL中的insert 语句吗?用哪个方法执行?
ccycxy123 2011-01-03
  • 打赏
  • 举报
回复
同意楼上的,去找一个JXL,然后来操作。呵呵,本人昨天刚用过,感觉还不错……

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;
}
}

  • 打赏
  • 举报
回复
JXL(Java Excel API)是一个用来动态读写Excel文件的开源框架,利用它可以在任何支持Java的操作系统上动态读写Excel文件。
cscxxx 2011-01-01
  • 打赏
  • 举报
回复
你这表包含100多个字段吗?
很少看到一个表包含这么多字段的
UPC_思念 2011-01-01
  • 打赏
  • 举报
回复
用jxl来实现excel的导入数据

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧