Hibernate的小问题

小时候很凶_tusiji 2009-07-22 05:44:18
现在业务需要 需要从查询出一个list 集合 然后放到另一个表中
问下 sava 的方式 怎么才能保存 一个list集合呢
...全文
120 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
The-Venus 2009-07-23
  • 打赏
  • 举报
回复
mark
kiss_the_java 2009-07-23
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 fyjava1984 的回复:]
用一个循环遍历集合
Java codefor (int i=0; i< list.size(); i++){this.getHibernateTemplate().save(list.get(i));
}
[/Quote]
这个建议放在业务层做
  • 打赏
  • 举报
回复

public boolean save(ArrayList list) {
Session session = HibernateSessionFactory.getSession();
try {
Transaction tx = session.beginTransaction();
for (int i = 0; i < list.size(); i++) {
session.save(list.get(i));
}
tx.commit();
return true;
} catch (Exception e) {
tx.rollback();
// TODO: handle exception
e.printStackTrace();
return false;
} finally {
session.close();
}
}

  • 打赏
  • 举报
回复
mark
xuexijava 2009-07-23
  • 打赏
  • 举报
回复
关注学习
fyjava1984 2009-07-23
  • 打赏
  • 举报
回复
用一个循环遍历集合

for (int i = 0; i < list.size(); i++){
this.getHibernateTemplate().save(list.get(i));
}
yangxuebao123 2009-07-23
  • 打赏
  • 举报
回复
public List getList(String hql, List list) {

Session session = super.getSession();
try {
Query query = session.createQuery(hql);
if (list != null || list.size() > 0) {
for (int i = 0; i < list.size(); i++) {
query.setParameter(i, list.get(i));
}
}
return query.list();
} catch (Exception ex) {
ex.printStackTrace();
return null;
} finally {

session.close();

}
}

/**
* 根据hql查询 传入代替语句中?值的数组
*/
public List getList(String hql, Object[] obj) {
Session session = super.getSession();
try {
Query query = session.createQuery(hql);
if (obj != null || obj.length > 0) {
for (int i = 0; i < obj.length; i++) {
query.setParameter(i, obj[i]);
}
}
return query.list();
} catch (Exception ex) {
ex.printStackTrace();
return null;
} finally {

session.close();

}
}
红街咖啡 2009-07-22
  • 打赏
  • 举报
回复
想高手学习。帮顶一下
yangxuebao123 2009-07-22
  • 打赏
  • 举报
回复
package com.it.oa.dao.parent;

import java.io.Serializable;
import java.sql.SQLException;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.it.oa.dao.BaseSpringHibDao;

public class BaseSpringHibDaoImpl extends HibernateDaoSupport implements BaseSpringHibDao {

/**
* 添加新的对象
*/
public boolean add(Object obj) {
try {

super.getHibernateTemplate().save(obj);

return true;

} catch (Exception e) {
e.printStackTrace();
return false;
}

}

/**
* 根据id和类删除对象
*/
public boolean del(Class clz,Serializable id) {
Object itme = null;

try {
//获取到对象的实体
itme = this.get(clz, id);

super.getHibernateTemplate().delete(itme);
return true;

} catch (Exception e) {
e.printStackTrace();
return false;
}

}
/**
* 根据对象删除
* @param obj
* @return
*/
public boolean del(Object obj){

try {

super.getHibernateTemplate().delete(obj);
return true;

} catch (Exception e) {
e.printStackTrace();
return false;
}

}

/**
* 在spring中使用delete语句进行删除并返回它的影响行数
* @param hql
* @return
*/
public int deleteByHql(final String hql){

Object number = super.getHibernateTemplate().execute(
new HibernateCallback(){

public Object doInHibernate(Session session) throws HibernateException, SQLException {

Query query = session.createQuery(hql);

int num = query.executeUpdate();

return num;
}

}
);

return Integer.parseInt(number.toString());
}

/**
* 根据ID查询具体的详细信息
*/
public Object get(Class clz,Serializable id) {

Object item = null;
try {

item = super.getHibernateTemplate().get(clz, id);

} catch (Exception e) {
e.printStackTrace();
}
return item;
}

/**
* 修改对象信息
*/
public boolean update(Object obj) {
try {

super.getHibernateTemplate().update(obj);

return true;

} catch (Exception e) {
e.printStackTrace();
return false;
}

}

/**
* 查询所有用户详细信息
* 根据类的对象进行查询
* 分页查询
*/
public List search(final Class clz,final int pageNo ,final int pageSize) {

return super.getHibernateTemplate().executeFind(
new HibernateCallback(){

public Object doInHibernate(Session session)
throws HibernateException, SQLException {
//查询该类的所有信息
Criteria c = session.createCriteria(clz);

c.setFirstResult((pageNo-1)*pageSize);

c.setMaxResults(pageSize);

return c.list();
}
}
);

}


/**
* 根据类查询其所有信息
*/
public List search(final Class clz) {

return super.getHibernateTemplate().executeFind(
new HibernateCallback(){

public Object doInHibernate(Session session)
throws HibernateException, SQLException {
//查询该类的所有信息
Criteria c = session.createCriteria(clz);


return c.list();
}
}
);
}

/**
* 根据hql语句进行查询
* @param hql
* @return
*/
public List search(final String hql){
return super.getHibernateTemplate().executeFind(
new HibernateCallback(){

public Object doInHibernate(Session session)
throws HibernateException, SQLException {
//查询该类的所有信息
Query q = session.createQuery(hql);

return q.list();
}
}
);
}

/**
* 根据传递的hql执行查询
* 分页查询,
*/

public List search(final String hql,final int pageNo ,final int pageSize) {
return super.getHibernateTemplate().executeFind(
new HibernateCallback(){

public Object doInHibernate(Session session)
throws HibernateException, SQLException {
//查询该类的所有信息
Query q = session.createQuery(hql);

q.setFirstResult((pageNo-1)*pageSize);
q.setMaxResults(pageSize);

return q.list();
}
}
);

}


/**
* 获得表的总数据
* @param tableName
* @return
*/
public int getRowCounts(String tableName){

final String hql = "select count(table) from "+tableName+" as table";

List list = super.getHibernateTemplate().find(hql);
int rows = Integer.parseInt(list.get(0).toString());


return rows;

}

/**
* 获得总页数
* @param tableName
* @param pageSize
* @return
*/
public int getPageCounts(String tableName,int pageSize){
int count = this.getRowCounts(tableName);
int pageCount = 0;
if(count%pageSize==0){
pageCount = count/pageSize;
}
else{
pageCount = count/pageSize +1;
}
return pageCount;
}

/**
* 获得模糊查询的总数据量
* @param hql
* @return
*/
public int getRowCountsByLike(String hql,Map map){

List list = this.search(map, hql);

return Integer.parseInt(list.get(0).toString());
}

/**
* 使用map集合和hql语句进行分页查询
* @param mapValue 集合 保存了类的属性名和对应该属性的值 当中的key等于hql中的属性
* @param hql 执行的hql语句
* @param pageNo 当前页数
* @param pageSize 每页显示条数
* @return 返回list集合
*/
public List search(final Map mapValue,final String hql,final int pageNo,final int pageSize){
return super.getHibernateTemplate().executeFind(
new HibernateCallback(){

public Object doInHibernate(Session session) throws HibernateException, SQLException {

Query query = session.createQuery(hql);
//取出map中的key key等于hql语句中的属性名
Set setkey = mapValue.keySet();

Iterator it = setkey.iterator();

while(it.hasNext()){
//从集合中取出值
String key = it.next().toString();
//取出对应属性的值
String value = mapValue.get(key).toString();
query.setString(key, value);

}
query.setFirstResult((pageNo-1)*pageSize);
query.setMaxResults(pageSize);

return query.list();
}


}
);

}

/**
* 使用map集合和hql语句进行查询
* @param mapValue 集合 保存了类的属性名和对应该属性的值 当中的key等于hql中的属性
* @param hql 执行的hql语句
* @return 返回list集合
*/
public List search(final Map mapValue,final String hql){
return super.getHibernateTemplate().executeFind(
new HibernateCallback(){

public Object doInHibernate(Session session) throws HibernateException, SQLException {

Query query = session.createQuery(hql);
//取出map中的key key等于hql语句中的属性名
Set setkey = mapValue.keySet();

Iterator it = setkey.iterator();

while(it.hasNext()){
//从集合中取出值 这个值要对应到类的属性
String key = it.next().toString();
//取出对应属性的值
String value = mapValue.get(key).toString();
query.setString(key, value);

}

return query.list();
}


}
);

}


}
就这了,其他你自己想,底层

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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