?? basedaoimpl.java
字號(hào):
package org.dao.impl;
import java.io.Serializable;
import java.util.List;
import org.HibernateSessionFactory;
import org.dao.IBaseDao;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.web.paging.PageInfo;
/**
*
* 實(shí)現(xiàn)基礎(chǔ)DAO接口的DAO基礎(chǔ)類,所有的DAO都要繼承該類
* @author songjun
* @version 1.0
*/
public class BaseDaoImpl implements IBaseDao {
/**
* 在hibernateSession工廠中取得session連接對(duì)象
*/
public Session getSession() {
return HibernateSessionFactory.getSession();
}
/**
* 關(guān)閉session對(duì)象
*/
public void closeSession() {
HibernateSessionFactory.closeSession();
}
/**
* 插入數(shù)據(jù)
* @param po Object 存放表數(shù)據(jù)的對(duì)象,需要在子類中指定具體的業(yè)務(wù)類
* @throws HibernateException 插入數(shù)據(jù)時(shí)發(fā)生的異常
* @return Object 返回插入成功后的業(yè)務(wù)對(duì)象
*/
public Object insert(Object po) {
Session session = getSession();
try {
Transaction tran = session.beginTransaction();
session.save(po);
//session.flush();
tran.commit();
return po;
} catch (HibernateException ex) {
throw ex;
}finally{
session.close();
}
}
/**
* 更新數(shù)據(jù)
*/
public void renew(Object po) {
Session session = getSession();
try {
Transaction tran = session.beginTransaction();
session.update(po); // 記錄不存在時(shí),update也不會(huì)出錯(cuò)
tran.commit();
} catch (HibernateException ex) {
throw ex;
}
try {
//session.flush();
session.close();
} catch (HibernateException ex1) {
throw ex1;
}
}
/**
* 刪除一條數(shù)據(jù);注意,大批量刪除時(shí),這個(gè)接口效率較低,因?yàn)樗炔樵円粭l記錄,再刪除一條記錄,
* @param businessClass Class 業(yè)務(wù)對(duì)象的class
* @param id String 主鍵
*/
public void delete(Class businessClass, java.io.Serializable id) {
Session session = getSession();
Object obj = null;
Transaction tran = session.beginTransaction();
try {
obj = session.get(businessClass, id);
} catch (HibernateException ex) {
throw ex;
}
if (obj != null) {
try {
session.delete(obj);
tran.commit();
} catch (HibernateException ex1) {
throw ex1;
}
}
try {
//session.flush();
session.close();
} catch (HibernateException ex2) {
throw ex2;
}
}
public void delete(Object obj) {
Session session = getSession();
try {
Transaction tran = session.beginTransaction();
session.delete(obj);
//session.flush();
tran.commit();
session.close();
} catch (HibernateException ex2) {
throw ex2;
}finally{
this.closeSession();
}
}
/**
* 查詢一組記錄
* @param hsql String HSQL語(yǔ)句
* @return List 一組結(jié)果對(duì)象
* @throws Exception
*/
public List search(String hsql) {
Session session = getSession();
List alist = null;
try {
alist = session.createQuery(hsql).list();
session.close();
} catch (HibernateException ex) {
ex.printStackTrace();
throw ex;
}
return alist;
}
/**
* 查詢一條特定的記錄
* @param businessClass Class 業(yè)務(wù)對(duì)象的class
* @param id SerialObject 主鍵,串行化對(duì)象
* @return Object 業(yè)務(wù)對(duì)象
*/
Session session = getSession();
try {
return session.load(businessClass, id); // 記錄不存在時(shí),會(huì)拋出ObjectNotFoundException
} catch (HibernateException ex) {
ex.printStackTrace();
throw ex;
}finally{
this.closeSession();
}
}
/*
* 保存或更新
*/
public void saveObject(Object o) {
Session session = this.getSession();
Transaction tran = session.beginTransaction();
session.saveOrUpdate(o);
tran.commit();
this.closeSession();
}
/**
* 按id查
*/
public Object getObject(Class clazz, Serializable id) {
Session session = this.getSession();
Object o = session.get(clazz, id);
this.closeSession();
return o;
}
/**
* 查所有的
*/
public List getObjects(Class clazz) {
Session session = this.getSession();
List alist = session.createQuery("from " + clazz.getName()).list();
this.closeSession();
return alist;
}
/**
* 分頁(yè)查詢
* @param session
* @param sqlString
* @param pageInfo
* @return list
*/
protected List getPage(String sqlString, final PageInfo pageInfo) {
Session session = getSession();
if (pageInfo != null) {
Query query = session.createQuery("select count(*) " + sqlString);//查詢總記錄數(shù)sql
Number count = (Number) query.uniqueResult();
pageInfo.setItemCount(String.valueOf(count.intValue()));//返回總記錄數(shù)
}
Query query = session.createQuery(sqlString);
if (pageInfo != null) {
int firstResult=Integer.parseInt(pageInfo.getFirstResult());
int maxResults=Integer.parseInt(pageInfo.getMaxResults());
query.setFirstResult(firstResult);//第幾條記錄開(kāi)始
if (maxResults != -1) {
query.setMaxResults(maxResults);//每頁(yè)最大記錄數(shù)
}
}
return query.list();
}
public static void main(String[] args) {
//BaseDaoImpl dao = new BaseDaoImpl();
}
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -