亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? dao.java

?? 個(gè)人Blog java編寫的Blog可以直接使用!
?? JAVA
字號:
/*
 *  DAO.java
 *  
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *  (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU Library General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program; if not, write to the Free Software
 *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 *  
 *  Author: Winter Lau (javayou@gmail.com)
 *  http://dlog4j.sourceforge.net
 */
package com.liusoft.dlog4j.dao;

import java.io.Serializable;
import java.sql.DatabaseMetaData;
import java.util.List;

import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;

import com.liusoft.dlog4j.db.HibernateUtils;

/**
 * 所有數(shù)據(jù)庫訪問接口的基類
 * 
 * 人之患,在于好為人師
 * 
 * @author liudong
 */
public abstract class DAO extends _DAOBase{

	public final static int MAX_TAG_COUNT = 5;//限制每篇文章的標(biāo)簽最多五個(gè)
	public final static int MAX_TAG_LENGTH = 20;//標(biāo)簽最大長度,字節(jié)

	/**
	 * 獲取數(shù)據(jù)庫的元信息 
	 * @return
	 */
	public static DatabaseMetaData metadata(){
		try{
			return getSession().connection().getMetaData();
		}catch(Exception e){
			e.printStackTrace();
		}
		return null;
	}
	
	/**
	 * 添加對象
	 * @param cbean
	 */
	public static void save(Object cbean){
		try{
			Session ssn = getSession();
			beginTransaction();
			ssn.save(cbean);
			commit();
		}catch(HibernateException e){
			rollback();
			throw e;
		}
	}

	/**
	 * 添加對象
	 * @param cbean
	 */
	protected static void saveOrUpdate(Object cbean){
		try{
			Session ssn = getSession();
			beginTransaction();
			ssn.saveOrUpdate(cbean);
			commit();
		}catch(HibernateException e){
			rollback();
			throw e;
		}
	}

	/**
	 * 刪除對象
	 * @param cbean
	 */
	protected static void delete(Object cbean){
		try{
			Session ssn = getSession();
			beginTransaction();
			ssn.delete(cbean);
			commit();
		}catch(HibernateException e){
			rollback();
			throw e;
		}
	}
	
	/**
	 * 根據(jù)主鍵刪除某個(gè)對象
	 * @param objClass
	 * @param key
	 * @return
	 */
	protected static int delete(Class objClass, Serializable key){
		StringBuffer hql = new StringBuffer("DELETE FROM ");
		hql.append(objClass.getName());
		hql.append(" AS t WHERE t.id=?");
		return commitUpdate(hql.toString(), new Object[]{key});
	}

	protected static int delete(Class objClass, int key){
		return delete(objClass, new Integer(key));
	}
	
	/**
	 * 寫臟數(shù)據(jù)到數(shù)據(jù)庫
	 */
	public static void flush(){
		try{
			Session ssn = getSession();
			if(ssn.isDirty()){
				beginTransaction();
				ssn.flush();
				commit();
			}
		}catch(HibernateException e){
			rollback();
			throw e;
		}
	}
	
	/**
	 * 根據(jù)主鍵加載對象
	 * @param beanClass
	 * @param ident
	 * @return
	 */
	protected static Object getBean(Class beanClass, int id){
		return getSession().get(beanClass, new Integer(id));
	}

	/**
	 * 執(zhí)行統(tǒng)計(jì)查詢語句
	 * @param hql
	 * @param args
	 * @return
	 */
	protected static Number executeStat(String hql, Object[] args){
		return (Number)uniqueResult(hql, args);
	}

	/**
	 * 執(zhí)行統(tǒng)計(jì)查詢語句
	 * @param hql
	 * @param args
	 * @return
	 */
	protected static int executeStatAsInt(String hql, Object[] args){
		return (executeStat(hql, args)).intValue();
	}

	protected static int executeStatAsInt(String hql, int parm1){
		return executeStatAsInt(hql, new Object[]{new Integer(parm1)});
	}

	protected static int executeStatAsInt(String hql, int parm1, int parm2){
		return executeStatAsInt(hql, new Object[]{new Integer(parm1), new Integer(parm2)});
	}

	protected static int executeStatAsInt(String hql, int parm1, int parm2, int parm3, int parm4){
		return executeStatAsInt(hql, new Object[]{new Integer(parm1), new Integer(parm2),new Integer(parm3), new Integer(parm4)});
	}

	/**
	 * 執(zhí)行統(tǒng)計(jì)查詢語句
	 * @param hql
	 * @param args
	 * @return
	 */
	protected static long executeStatAsLong(String hql, Object[] args){
		return (executeStat(hql, args)).longValue();
	}

	/**
	 * 執(zhí)行普通查詢語句
	 * @param hql
	 * @param args
	 * @return
	 */
	protected static List findAll(String hql, Object[] args){
		return executeQuery(hql, -1, -1, args);
	}
	
	/**
	 * 執(zhí)行普通查詢語句
	 * @param hql
	 * @param args
	 * @return
	 */
	protected static List executeQuery(String hql, int fromIdx, int fetchCount, Object[] args){
		Session ssn = getSession();
		Query q = ssn.createQuery(hql);
		for(int i=0;args!=null&&i<args.length;i++){
			q.setParameter(i, args[i]);
		}
		if(fromIdx > 0)
			q.setFirstResult(fromIdx);
		if(fetchCount > 0)
			q.setMaxResults(fetchCount);
		return q.list();
	}

	protected static List executeQuery(String hql, int fromIdx, int fetchCount, int parm1){
		return executeQuery(hql, fromIdx, fetchCount, new Object[]{new Integer(parm1)});
	}
	
	protected static List executeQuery(String hql, int fromIdx, int fetchCount, int parm1, int parm2){
		return executeQuery(hql, fromIdx, fetchCount, new Object[]{new Integer(parm1),new Integer(parm2)});
	}

	protected static List executeQuery(String hql, int fromIdx, int fetchCount, int parm1, int parm2, int parm3){
		return executeQuery(hql, fromIdx, fetchCount, new Object[]{new Integer(parm1),new Integer(parm2),new Integer(parm3)});
	}
	
	/**
	 * 執(zhí)行更新語句
	 * @param hql
	 * @param args
	 * @return
	 */
	protected static int executeUpdate(String hql, Object[] args){
		Session ssn = getSession();
		Query q = ssn.createQuery(hql);
		for(int i=0;args!=null&&i<args.length;i++){
			q.setParameter(i, args[i]);
		}
		return q.executeUpdate();
	}
	
	protected static int executeUpdate(String hql, int parm1){
		return executeUpdate(hql, new Object[]{new Integer(parm1)});
	}

	/**
	 * 執(zhí)行更新語句
	 * @param hql
	 * @param args
	 * @return
	 */
	protected static int commitUpdate(String hql, Object[] args){
		try{
			Session ssn = getSession();
			beginTransaction();
			Query q = ssn.createQuery(hql);
			for(int i=0;args!=null&&i<args.length;i++){
				q.setParameter(i, args[i]);
			}
			int er = q.executeUpdate();
			commit();
			return er;
		}catch(HibernateException e){
			rollback();
			throw e;
		}
	}

	protected static int commitUpdate(String hql, int parm1, int parm2){
		return commitUpdate(hql, new Object[]{new Integer(parm1),new Integer(parm2)});
	}
	
	/**
	 * 執(zhí)行返回單一結(jié)果的查詢語句
	 * @param hql
	 * @param args
	 * @return
	 */
	protected static Object uniqueResult(String hql, Object[] args){
		Session ssn = getSession();
		Query q = ssn.createQuery(hql);
		for(int i=0;args!=null&&i<args.length;i++){
			q.setParameter(i, args[i]);
		}
		q.setMaxResults(1);
		return q.uniqueResult();
	}

	/**
	 * 執(zhí)行統(tǒng)計(jì)查詢語句
	 * @param hql
	 * @param args
	 * @return
	 */
	protected static Number executeNamedStat(String hql, Object[] args){
		return (Number)namedUniqueResult(hql, args);
	}

	protected static Number executeNamedStat(String hql, int parm1){
		return executeNamedStat(hql, new Object[]{new Integer(parm1)});
	}
	
	protected static Number executeNamedStat(String hql, int parm1, int parm2){
		return executeNamedStat(hql, new Object[]{new Integer(parm1),new Integer(parm2)});
	}
	
	/**
	 * 執(zhí)行統(tǒng)計(jì)查詢語句
	 * @param hql
	 * @param args
	 * @return
	 */
	protected static int executeNamedStatAsInt(String hql, Object[] args){
		return (executeNamedStat(hql, args)).intValue();
	}

	/**
	 * 執(zhí)行統(tǒng)計(jì)查詢語句
	 * @param hql
	 * @param args
	 * @return
	 */
	protected static int executeNamedStatAsInt(String hql, int parm1){
		return executeNamedStatAsInt(hql, new Object[]{new Integer(parm1)});
	}
	protected static int executeNamedStatAsInt(String hql, String parm1){
		return executeNamedStatAsInt(hql, new Object[]{parm1});
	}

	protected static int executeNamedStatAsInt(String hql, int parm1, int parm2){
		return executeNamedStatAsInt(hql, new Object[]{new Integer(parm1), new Integer(parm2)});
	}

	protected static int executeNamedStatAsInt(String hql, int parm1, int parm2, int parm3){
		return executeNamedStatAsInt(hql, new Object[]{new Integer(parm1), new Integer(parm2), new Integer(parm3)});
	}

	/**
	 * 執(zhí)行統(tǒng)計(jì)查詢語句
	 * @param hql
	 * @param args
	 * @return
	 */
	protected static long executeNamedStatAsLong(String hql, Object[] args){
		return (executeNamedStat(hql, args)).longValue();
	}

	/**
	 * 執(zhí)行普通查詢語句
	 * @param hql
	 * @param args
	 * @return
	 */
	protected static List executeNamedQuery(String hql, int fromIdx, int fetchCount, Object[] args){
		Session ssn = getSession();
		Query q = ssn.getNamedQuery(hql);
		for(int i=0;args!=null&&i<args.length;i++){
			q.setParameter(i, args[i]);
		}
		if(fromIdx > 0)
			q.setFirstResult(fromIdx);
		if(fetchCount > 0)
			q.setMaxResults(fetchCount);
		return q.list();
	}

	protected static List executeNamedQuery(String hql, int fromIdx, int fetchCount, int parm1){
		return executeNamedQuery(hql, fromIdx, fetchCount, new Object[]{new Integer(parm1)});
	}

	protected static List executeNamedQuery(String hql, int fromIdx, int fetchCount, int parm1, int parm2){
		return executeNamedQuery(hql, fromIdx, fetchCount, new Object[]{new Integer(parm1), new Integer(parm2)});
	}

	protected static List executeNamedQuery(String hql, int fromIdx, int fetchCount, int parm1, int parm2, int parm3){
		return executeNamedQuery(hql, fromIdx, fetchCount, new Object[]{new Integer(parm1), new Integer(parm2), new Integer(parm3)});
	}

	/**
	 * 執(zhí)行普通查詢語句
	 * @param hql
	 * @param args
	 * @return
	 */
	protected static List findNamedAll(String hql, Object[] args){
		return executeNamedQuery(hql, -1, -1, args);
	}
	
	protected static List findNamedAll(String hql, Object arg){
		return findNamedAll(hql, new Object[]{arg});
	}

	protected static List findNamedAll(String hql, int arg){
		return findNamedAll(hql, new Object[]{new Integer(arg)});
	}

	protected static List findNamedAll(String hql, int parm1, int parm2){
		return findNamedAll(hql, new Object[]{new Integer(parm1),new Integer(parm2)});
	}

	protected static List findNamedAll(String hql, int parm1, int parm2, int parm3){
		return findNamedAll(hql, new Object[]{new Integer(parm1),new Integer(parm2),new Integer(parm3)});
	}
	
	/**
	 * 執(zhí)行返回單一結(jié)果的查詢語句
	 * @param hql
	 * @param args
	 * @return
	 */
	protected static Object namedUniqueResult(String hql, Object[] args){
		Session ssn = getSession();
		Query q = ssn.getNamedQuery(hql);
		for(int i=0;args!=null&&i<args.length;i++){
			q.setParameter(i, args[i]);
		}
		q.setMaxResults(1);
		return q.uniqueResult();
	}

	protected static Object namedUniqueResult(String hql, int parm1){
		return namedUniqueResult(hql, new Object[]{new Integer(parm1)});
	}

	protected static Object namedUniqueResult(String hql, String parm1){
		return namedUniqueResult(hql, new Object[]{parm1});
	}

	protected static Object namedUniqueResult(String hql, int parm1, int parm2){
		return namedUniqueResult(hql, new Object[]{new Integer(parm1),new Integer(parm2)});
	}

	protected static Object namedUniqueResult(String hql, int parm1, int parm2, int parm3){
		return namedUniqueResult(hql, new Object[]{new Integer(parm1),new Integer(parm2),new Integer(parm3)});
	}

	/**
	 * 執(zhí)行更新語句
	 * @param hql
	 * @param args
	 * @return
	 */
	protected static int executeNamedUpdate(String hql, Object[] args){
		Session ssn = getSession();
		Query q = ssn.getNamedQuery(hql);
		for(int i=0;args!=null&&i<args.length;i++){
			q.setParameter(i, args[i]);
		}
		return q.executeUpdate();
	}

	protected static int executeNamedUpdate(String hql, int parm1){
		return executeNamedUpdate(hql, new Object[]{new Integer(parm1)});
	}

	protected static int executeNamedUpdate(String hql, int parm1, int parm2){
		return executeNamedUpdate(hql, new Object[]{new Integer(parm1), new Integer(parm2)});
	}

	protected static int executeNamedUpdate(String hql, int parm1, int parm2, int parm3) {
		return executeNamedUpdate(hql, new Object[] { new Integer(parm1),
				new Integer(parm2), new Integer(parm3) });
	}

	/**
	 * 執(zhí)行更新語句
	 * @param hql
	 * @param args
	 * @return
	 */
	protected static int commitNamedUpdate(String hql, Object[] args){
		try{
			Session ssn = getSession();
			beginTransaction();
			Query q = ssn.getNamedQuery(hql);
			for(int i=0;args!=null&&i<args.length;i++){
				q.setParameter(i, args[i]);
			}
			int er = q.executeUpdate();
			commit();
			return er;
		}catch(HibernateException e){
			rollback();
			throw e;
		}
	}

	protected static int commitNamedUpdate(String hql, int parm1, int parm2){
		return commitNamedUpdate(hql, new Object[]{new Integer(parm1), new Integer(parm2)});
	}
	protected static int commitNamedUpdate(String hql, int parm1, int parm2, int parm3){
		return commitNamedUpdate(hql, new Object[]{new Integer(parm1), new Integer(parm2), new Integer(parm2)});
	}
}

/**
 * 用于操作Hibernate的一些方法
 * @author Winter Lau
 */
abstract class _DAOBase {

	/**
	 * Get a instance of hibernate's session
	 * @return
	 * @throws HibernateException
	 */
	protected static Session getSession(){
		return HibernateUtils.getSession();
	}

	/**
	 * Start a new database transaction.
	 */
	protected static void beginTransaction(){
		HibernateUtils.beginTransaction();
	}

	/**
	 * Commit the database transaction.
	 */
	protected static void commit(){
		HibernateUtils.commit();
	}

	/**
	 * Rollback the database transaction.
	 */
	protected static void rollback(){
		HibernateUtils.rollback();
	}
	
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
狠狠色丁香婷婷综合| 亚洲午夜av在线| 粉嫩绯色av一区二区在线观看 | 国产精品沙发午睡系列990531| 精品一区二区三区免费| 久久色中文字幕| 成人激情免费网站| 亚洲自拍与偷拍| 欧美成人伊人久久综合网| 国产精品亚洲一区二区三区在线 | 国产精品国产三级国产普通话99 | 26uuu亚洲综合色欧美| 国产大陆精品国产| 一区二区三区中文字幕在线观看| 在线亚洲精品福利网址导航| 五月激情六月综合| 久久蜜桃香蕉精品一区二区三区| 成人深夜福利app| 亚洲福利国产精品| 国产欧美一区二区精品性色| 色婷婷香蕉在线一区二区| 日韩精品一级中文字幕精品视频免费观看 | 欧美一区二区免费| 国产福利精品一区二区| 一区二区三区免费看视频| 欧美成人猛片aaaaaaa| 不卡av在线免费观看| 天堂成人国产精品一区| 国产亚洲一本大道中文在线| 欧美性受xxxx| 972aa.com艺术欧美| 精品一区二区在线观看| 亚洲精品乱码久久久久久| 精品国产人成亚洲区| 91精品福利视频| 国产一级精品在线| 亚洲3atv精品一区二区三区| 久久久五月婷婷| 欧美精品电影在线播放| av在线不卡观看免费观看| 日本不卡视频一二三区| 亚洲最大成人综合| 欧美国产精品v| 欧美一级免费大片| 欧美三级午夜理伦三级中视频| 国产精品99久久久久久宅男| 日韩精品五月天| 亚洲自拍另类综合| 成人免费视频在线观看| 久久久久久久免费视频了| 欧美肥妇bbw| 在线视频欧美区| www.在线成人| 成人美女在线观看| 国产suv一区二区三区88区| 青青国产91久久久久久| 亚洲一区二区三区中文字幕| 亚洲日本护士毛茸茸| 中文字幕精品在线不卡| 精品国产一区二区三区四区四| 欧美日韩精品免费观看视频| 在线看一区二区| 在线精品视频免费播放| 色偷偷一区二区三区| 99re热视频这里只精品| 99在线热播精品免费| 成人app在线观看| 风间由美性色一区二区三区| 国产精品一区二区久激情瑜伽| 免费欧美日韩国产三级电影| 婷婷久久综合九色综合伊人色| 亚洲精品欧美二区三区中文字幕| 国产精品传媒入口麻豆| 中文字幕在线一区免费| 中文字幕一区二区三区蜜月| 精品国产髙清在线看国产毛片| 日韩美女视频在线| 精品处破学生在线二十三| 精品免费国产二区三区| 久久夜色精品国产噜噜av| 26uuu欧美| 日本一区二区三区在线观看| 欧美高清在线一区| 亚洲欧洲另类国产综合| 亚洲精品国产品国语在线app| 亚洲乱码日产精品bd| 一级做a爱片久久| 丝袜诱惑亚洲看片| 精品一区二区三区免费观看| 国产精品资源在线观看| 99久久精品99国产精品| 欧美色电影在线| 精品日产卡一卡二卡麻豆| 国产欧美1区2区3区| 亚洲精品日日夜夜| 日本不卡免费在线视频| 成人午夜看片网址| 在线免费观看一区| 日韩一级二级三级| 国产人成亚洲第一网站在线播放 | 精品日韩一区二区三区免费视频| 久久久久久97三级| 亚洲男人的天堂av| 婷婷久久综合九色综合绿巨人| 久久国产欧美日韩精品| 成人av在线网站| 精品视频在线免费观看| 26uuu久久天堂性欧美| 亚洲人成网站精品片在线观看| 肉丝袜脚交视频一区二区| 国产高清在线精品| 欧美午夜精品久久久| 久久精品一区二区三区四区| 亚洲免费av观看| 国内偷窥港台综合视频在线播放| 91在线观看一区二区| 精品区一区二区| 亚洲老司机在线| 黑人巨大精品欧美一区| 欧美日韩一区二区三区高清| 久久久久久久久久看片| 亚洲一区二区偷拍精品| 国产精品 日产精品 欧美精品| 欧美在线一区二区| 国产精品久久网站| 狠狠色丁香久久婷婷综合_中| 91福利国产成人精品照片| 久久精品免视看| 首页亚洲欧美制服丝腿| 91麻豆国产香蕉久久精品| 欧美精品一区二区三区很污很色的| 尤物在线观看一区| 成人午夜电影网站| 精品剧情在线观看| 亚洲va韩国va欧美va精品| www.欧美亚洲| 欧美极品少妇xxxxⅹ高跟鞋 | 99久久免费国产| 日韩三级视频在线看| 亚洲丰满少妇videoshd| www.亚洲在线| 欧美激情一区二区三区蜜桃视频 | 色婷婷精品大在线视频| 久久久蜜桃精品| 麻豆中文一区二区| 欧美丝袜丝交足nylons| 成人免费在线观看入口| 国产成a人亚洲精品| 亚洲欧美视频在线观看视频| 极品少妇一区二区三区精品视频 | av在线播放成人| 国产欧美日产一区| 国产成人亚洲综合色影视| 久久综合色之久久综合| 久久精品国产一区二区三 | 7777精品伊人久久久大香线蕉超级流畅 | 性做久久久久久免费观看| 日本韩国欧美三级| 一区二区三区鲁丝不卡| 在线看国产日韩| 一区二区三区精品| 在线观看www91| 亚洲伊人色欲综合网| 欧美亚洲国产怡红院影院| 一卡二卡欧美日韩| 欧美日韩国产首页在线观看| 亚洲综合免费观看高清完整版| 一本色道亚洲精品aⅴ| 一区二区三区四区不卡在线 | 日韩1区2区日韩1区2区| 91精品国产色综合久久不卡电影| 日本女人一区二区三区| 日韩精品在线一区二区| 久久国产精品色| 国产视频一区在线播放| 99久久精品国产精品久久| 亚洲精品一二三| 欧美日韩另类一区| 蜜臀av一区二区在线免费观看| 欧美大白屁股肥臀xxxxxx| 国产精品一区专区| 亚洲区小说区图片区qvod| 欧美影视一区在线| 美日韩一级片在线观看| 欧美极品美女视频| 欧美视频一区二区在线观看| 日韩国产精品久久| 久久久亚洲精品一区二区三区| 成人app软件下载大全免费| 一区二区三区加勒比av| 91精品欧美综合在线观看最新| 国产真实精品久久二三区| 亚洲天堂免费看| 91精品国产一区二区三区蜜臀| 国产精品1024| 亚洲一区在线观看视频| 欧美大片在线观看| 色综合视频在线观看| 丝袜美腿成人在线| 国产精品三级av在线播放|