這篇文章用於總結hibernate操做數據庫的各類方法sql
1、query方式數據庫
一、hibernate使用原生態的sql語句執行數據庫查詢編程
有些時候有些開發人員總以爲用hql語句不踏實,程序出現了錯誤,就猜想由於不是原生態的sql語句,數據庫不支持,所以情願選擇回到jdbc時 代。這樣既耗時耗力,又破壞面向對象的編程。其實,hibernate已經考慮到這個問題,hibernate能夠執行原生態的sql語句,正對每種數據 庫,你能夠寫對應的sql語句,而後用createSQLQuery(sql)便可。session
/** * 本地sql的檢索方式,使用原生態的sql語句檢索 * */ Session session = this.getSession(); String sql = "select * from course where cid=:id"; Query query = session.createSQLQuery(sql);// 本地SQL檢索方式 query.setInteger("id", c_id); query.list();// 返回持久化的list
二、query執行查詢操做(基本方式,字符串鏈接方式生成hql語句)this
query執行查詢操做,能夠返回惟一對象或者是對象列表hibernate
(1)query返回對象列表對象
/** * hql的檢索方式,執行查詢數據庫操做,返回對象的列表 * 採用hql語句鏈接方式 */ Session session = this.getSession(); String hql = "select * from CourseDO where CId="+id+""; Query query = session.createQuery(hql);// 本地SQL檢索方式 query.list();// 返回持久化的list
(2)query返回惟一對象ci
/** * hql的檢索方式,執行查詢數據庫操做,返回惟一對象 * 採用hql語句鏈接方式 */ Session session = this.getSession(); String hql = "select * from CourseDO where CId="+id+""; Query query = session.createQuery(hql);// 本地SQL檢索方式 query.uniqueResult();// 返回持久化的list
三、query執行查詢操做開發
hql採用參數方式,其中參數綁定方式分爲兩種:按照名字綁定,按照位置綁定字符串
(1)hql參數綁定採用按照名字綁定
/** * hql的檢索方式,執行查詢數據庫操做,返回對象的列表 * * 參數綁定的形式分爲按名字綁定,按位置綁定 此處是按照名字綁定 */ Session session = this.getSession(); String hql = "select * from CourseDO where CId=:id"; Query query = session.createQuery(hql);// 本地SQL檢索方式 query.setInteger("id", c_id);// 名字綁定參數 query.list();// 返回持久化對象的list列表
(2)hql參數綁定採用按照位置綁定
/** * hql的檢索方式,參數綁定的形式分爲按名字綁定,按位置綁定 此處是按照位置綁定 */ String hql = "from CourseDO where CId=?"; Session session = this.getSession(); Query query = session.createQuery(hql); query.setParameter(0, c_id);// 位置綁定方式 query.uniqueResult();// 檢索單個對象,返回惟一值
四、query執行更新,刪除操做
利用query的executeUpdate()方法實現
/** * query執行更新,刪除等非查詢語句 * */ String hql = "delete from CourseDO where CId=? and Time=?"; Session session = this.getSession(); Query query = session.createQuery(hql); query.setParameter(0, c_id);// 位置綁定方式 query.setDate(1, new Date());// 位置綁定方式,設置爲Date類型 query.executeUpdate();// 執行delete,update和insert into 語句
2、hibernate模版方法
利用hibernate模版方法執行hql語句很是簡單,可是有時候不是那麼方便,能夠本身選擇使用。
一、hibernateTemplate查詢數據庫
/** * 利用hibernate模版方法進行查詢,綁定參數形式 * */ String hql = "from CourseDO where CId=? and Date=?"; List<CourseDO> courseDOs = getHibernateTemplate().find(hql, c_id, new Date());
二、hibernateTemplate更新數據
/** * 利用hibernate模版方法進行更新,綁定參數形式 * */ List<CourseDO> courseDOs = getHibernateTemplate().update(courseDO);
三、hibernateTemplate插入數據
/** * 利用hibernate模版方法進行插入,綁定參數形式 * */ List<CourseDO> courseDOs = getHibernateTemplate().save(courseDO);
四、hibernateTemplate刪除數據
/** * 利用hibernate模版方法進行刪除,綁定參數形式 * */ List<CourseDO> courseDOs = getHibernateTemplate().delete(courseDO);