日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Hibernate写hql语句与不写hql语句的区别?

發(fā)布時間:2023/12/20 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hibernate写hql语句与不写hql语句的区别? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

hql語句與不寫hql語句的區(qū)別?

寫hql語句:書寫HQL語句,所有的查詢與投影的設計均使用HQL語句完成。

不寫hql語句:沒有任何查詢語句,所有的查詢與投影的設計使用面向對象格式完成。

二者選用的時機:

不寫hql語句,有時比較方便,在不考慮復雜的查詢的情況下,可以使用,此方法把某些Hibernate的方法封裝起來,不靈活。

hql語句,復雜的業(yè)務邏輯,建議使用,靈活方便。

?

以下通過倆種方法的對比來著重介紹一下hibernate不寫hql的一種簡單用法。

hql語句:

具有豐富的靈活性,可以提供強大的查詢功能。

如:String hql = “?from User “?,查詢所有的User實體類所對應的數據庫字段。

????????Session session?= this.getCurrentSession();

String hql?= "?from User ";

Query q?= session.createQuery(hql);

List<User> users?= q.list();

return?users;

?

如:String hql= “?update User user set user.age=22 where user.age=12 ”;更新User實體類所對應的數據記錄。

????????Session session?= this.getCurrentSession();

String hql?= "?update User user set user.age=22 where user.age=12 ";

Query q?= session.createQuery(hql);

q.uniqueResult();

return?null;

?

如:String hql=”?delete from User user where user.age=19 ”;??刪除User實體類所對應的數據記錄。

????????Session session?= this.getCurrentSession();

String hql?= "?delete from User user where user.age=? ";

Query q?= session.createQuery(hql);

q.setParameterList("age", age);

????????q.executeUpdate();

return?null;

?

?

不寫hql語句:

查詢User實體類所對應的數據庫字段數據,可以用一下方法:

//得到User對應的數據中的所有的數據記錄

public List<User> getDepList()throws Exception{

?????DetachedCriteria dc = ?DetachedCriteria.forClass(User.class);

?????????return getHibernateTemplate().find(dc);

}

DetachedCriteria 為離線查詢。

若要構造相應的條件查詢,可以如下所示:

public List<User> getDepList()throws Exception{

????DetachedCriteria dc = ?DetachedCriteria.forClass(User.class);

?????????if(user?!= null){

????????if(user?.getName()!=null && !user?.getName().equals("")){

??????????dc.add(Restrictions.ilike("name", user.getName(), MatchMode.ANYWHERE));

????}

????if(user.getTele()!=null && !user.getTele().equals("")){

??????????dc.add(Restrictions.ilike("tele",user.getTele(), MatchMode.ANYWHERE));

???????????}

????}

????return getHibernateTemplate().find(dc);

}

Restrictions為投影查詢,里面封裝了各種查詢條件,如上面,ilike()表示模糊查詢,里面的三個參數,分別代表“數據庫字段”、“所對應的字段值”、“模糊查詢匹配模式”。

另外模板中封裝了好多關于查詢條件的方法:

?

?

若要增加一條記錄,可以參照以下方法:

?????????getHibernateTemplate().save(user);

?????????直接用模板保存一個實體類,在此之前應把數據封裝到user實體類中。

另外模板中還封裝了其他的一些save類似的方法:

?

?

若要修改表中某條記錄,可以參照以下方法:

getHibernateTemplate().update(user);

同樣用模板直接更新即可。

另外模板中還有封裝了一些和更新有關的類似的方法:

?

?

若要刪除表中的某條記錄,可以參照如下的方法:

getHibernateTemplate().delete(user);

同樣直接使用模板即可完成。

另外模板中還有封裝了一些和刪除有關的類似的方法:

?

?

由于知識有限,寫的比較單薄,望指導賜教。

?

轉載于:https://www.cnblogs.com/wanghui1316/p/5498612.html

總結

以上是生活随笔為你收集整理的Hibernate写hql语句与不写hql语句的区别?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。