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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Hibernate hql getHibernateTemplate()常用方法汇总

發(fā)布時間:2025/3/15 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hibernate hql getHibernateTemplate()常用方法汇总 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
getHibernateTemplate()常用方法?
一、find(String?queryString);?? ?
??????示例: Java代碼??
  • this.getHibernateTemplate().find("from?bean.User");??
  • ?????????
    ????? 返回所有User對象???
    二、find(String?queryString?,?Object?value);?? ?
    ??????示例: Java代碼??
  • this.getHibernateTemplate().find("from?bean.User?u?where?u.name=?",?"test");????

  • ????? 或模糊查詢: Java代碼??
  • this.getHibernateTemplate().find("from?bean.User?u?where?u.name?like??",?"%test%");???
  • ??
    ????? 返回name屬性值為test的對象(模糊查詢,返回name屬性值包含test的對象)???
    三、find(String?queryString,?Object[]?values);??? ?
    示例: Java代碼??
  • String?hql=?"from?bean.User?u?where?u.name=??and?u.password=?"???
  • this.getHibernateTemplate().find(hql,?new?String[]{"test",?"123"});??
  • ???
    ????? 返回用戶名為test并且密碼為123的所有User對象??
    四、findByExample(Object?exampleEntity)?????? ??示例: Java代碼??
  • User?u=new??User();????????
  • ?????????????u.setPassword("123"?);//必須?符合的條件但是這兩個條件時并列的(象當(dāng)于sql中的and)?????????????????????
  • ?????????????u.setName("bb"?);????????
  • ?????????????list=this?.getHibernateTemplate().findByExample(u,start,max);??
  • ???????
    ???????????? 返回:用戶名為bb密碼為123的對象???
    五、 findByExample(Object?exampleEntity,?int?firstResult,?int??maxResults)?? ??????示例:?
    Java代碼??
  • User?u=new??User();????????
  • ????????????u.setPassword("123"?);//必須?符合的條件但是這兩個條件時并列的(象當(dāng)于sql中的and)????????????????????
  • ????????????u.setName("bb"?);????????
  • ????????????list=this?.getHibernateTemplate().findByExample(u,start,max);??
  • ???????
    ??????????? 返回:滿足用戶名為bb密碼為123,自start起共max個User對象。(對象從0開始計數(shù))???
    六、 findByNamedParam(String?queryString?,?String?paramName?,?Object?value) ???
    ????使用以下語句查詢:????
    Java代碼??
  • String?queryString?=?"select?count(*)?from?bean.User?u?where?u.name=:myName"??????
  • ?????????String?paramName=?"myName";?????????????
  • ?????????String?value=?"xiyue";????
  • ?????????this?.getHibernateTemplate().findByNamedParam(queryString,?paramName,?value);??System.out.println(list.get(0?));???
  • ????????
    ???????? 返回name為xiyue的User對象的條數(shù)???
    七、? findByNamedParam(String?queryString?,?String[]?paramName?,?Object[]?value)???????? 示例:???
    Java代碼??
  • String?queryString?=?"select?count(*)?from?bean.User?u?where?u.name=:myName?and?u.password=:myPassword"??????
  • ?????????String[]?paramName=?new?String[]{"myName",?"myPassword"};?????????????
  • ?????????String[]?value=?new?String[]{"xiyue",?"123"};????
  • ?????????this?.getHibernateTemplate().findByNamedParam(queryString,?paramName,?value);???

  • ???????? 返回用戶名為xiyue密碼為123的User對象???
    八、 findByNamedQuery(String?queryName)? ???????示例:???
    ????????1、首先需要在User.hbm.xml中定義命名查詢???
    Java代碼??
  • <hibernate-mapping>??????????????????????
  • ???????????????<class>......</class>????
  • ???????????????<query?name="queryAllUser?"><!--此查詢被調(diào)用的名字-->????
  • ???????????????????????<![CDATA[????
  • ????????????????????????????from?bean.User??
  • ??????????????????????????]]>???
  • ???????????????????</query>??
  • ?????????</hibernate-mapping>???????
  • ????????????????????
    ???????? 2、如下使用查詢:???
    ?????????????????? Java代碼??
  • this?.getHibernateTemplate().findByNamedQuery("queryAllUser?");???

  • 九、 findByNamedQuery(String?queryName,?Object?value) ?
    ?????????? ?1、首先需要在User.hbm.xml中定義命名查詢??
    ?????????? Java代碼??
  • ?<hibernate-mapping>??
  • ??????????????????<class>......</class>????
  • ??????????????????<query?name="queryByName?"><!--此查詢被調(diào)用的名字-->?????????????????????????<![CDATA[????
  • ????????????????????????????from?bean.User?u?where?u.name?=??????
  • ???????????????????????????]]>??
  • ????????????????????</query>??
  • ???????????????</hibernate-mapping>??

  • ???????????2、如下使用查詢:???
    ????????????? Java代碼??
  • this?.getHibernateTemplate().findByNamedQuery("queryByName?",?"test");????

  • 十、 findByNamedQuery(String?queryName,?Object[]?value) ????????示例:???
    ????????1、首先需要在User.hbm.xml中定義命名查詢?
    ??????????????? Java代碼??
  • <hibernate-mapping>??
  • ??????????????????<class>......</class>????
  • ??????????????????<query?name="queryByNameAndPassword?"><!--此查詢被調(diào)用的名字-->???
  • ???????????????????????<![CDATA[????
  • ????????????????????????????from?bean.User?u?where?u.name?=??and?u.password?=?????
  • ????????????????????????]]>???
  • ???????????????????</query>?????
  • ???????????????</hibernate-mapping>??

  • ???????????2、如下使用查詢:???
    ???????????? Java代碼??
  • ?String[]?values=?new?String[]{"test",?"123"};????
  • ?????????????this?.getHibernateTemplate().findByNamedQuery("queryByNameAndPassword?"?,?values);????

  • 十一、 findByNamedQueryAndNamedParam(String?queryName,?String?paramName,?Object?value)??? ?示例:???
    ???? 1、首先需要在User.hbm.xml中定義命名查詢????
    ???????????? Java代碼??
  • <hibernate-mapping>??
  • ??????????????????<class>......</class>????
  • ??????????????????<query?name="queryByName?"><!--此查詢被調(diào)用的名字-->?????????????????????????<![CDATA[????
  • ????????????????????????????from?bean.User?u?where?u.name?=:myName??????????????????????????????????????????]]>??
  • ????????????????????</query>??
  • ???????????????</hibernate-mapping>??

  • ???????????2、如下使用查詢:???
    ????????????? Java代碼??
  • this?.getHibernateTemplate().findByNamedQuery("queryByName?"?,?"myName",?"test");??

  • 十二、 findByNamedQueryAndNamedParam(String?queryName,?String[]?paramName,?Object[]?value)? ???示例:???
    ????????1、首先需要在User.hbm.xml中定義命名查詢???
    ???????????? Java代碼??
  • ?<hibernate-mapping>??
  • ??????????????????<class>......</class>????
  • ??????????????????<query?name="queryByNameAndPassword?"><!--此查詢被調(diào)用的名字-->????
  • ???????????????????????<![CDATA[????
  • ????????????????????????????from?bean.User?u?where?u.name?=:myName?and?u.password=:myPassword???????????????????????????
  • ???????????????????????]]>??
  • ????????????????????</query>??
  • ??????????????</hibernate-mapping>?????
  • ?????????
    2、如下使用查詢:???
    ????????????? Java代碼??
  • String[]?names=?new?String[]{"myName",?"myPassword"};??
  • ?????????????String[]?values=?new?String[]{"test",?"123"};????
  • ?????????????this?.getHibernateTemplate().findByNamedQuery("queryByNameAndPassword?"?,?names,?values);??

  • 十?三、 findByValueBean(String?queryString?,?Object?value); ???示例:???
    ??????1、定義一個ValueBean,屬性名必須和HSQL語句中的:后面的變量名同名,此處必須至少有兩個屬性,分別為myName和?myPassword,使用setter方法設(shè)置屬性值后???
    ?????????? Java代碼??
  • ValueBean?valueBean=?new?ValueBean();???
  • ??????????valueBean.setMyName("test");??
  • ??????????valueBean.setMyPasswrod("123");???
  • ??
    ??????2、? Java代碼??
  • String?queryString=?"from?bean.User?u?where?u.name=:myName?and?u.password=:myPassword";????
  • ??????????this?.getHibernateTemplate().findByValueBean(queryString?,?valueBean);???

  • 十?四、 findByNamedQueryAndValueBean(String?queryName?,?Object?value); ???示例:???
    ???????1、首先需要在User.hbm.xml中定義命名查詢????
    ???????????? Java代碼??
  • <hibernate-mapping>????
  • ??????????????????<class>......</class>????
  • ??????????????????<query?name="queryByNameAndPassword?"><!--此查詢被調(diào)用的名字-->????
  • ???????????????????????<![CDATA[????
  • ????????????????????????????from?bean.User?u?where?u.name?=:myName?and?u.password=:myPassword?????
  • ???????????????????????]]>??
  • ????????????????????</query>??
  • ??????????????</hibernate-mapping>??

  • ?????? 2、定義一個ValueBean,屬性名必須和User.hbm.xml命名查詢語句中的:后面的變量名同名,此處必須至少有兩個屬性,分別為?myName和myPassword,使用setter方法設(shè)置屬性值后???
    ????????? Java代碼??
  • ?ValueBean?valueBean=?new?ValueBean();??
  • ??????????valueBean.setMyName("test");?????????
  • ??????????valueBean.setMyPasswrod("123");??
  • ????
    ????? 3、?? Java代碼??
  • String?queryString=?"from?bean.User?u?where?u.name=:myName?and?u.password=:myPassword";????
  • ??????????this?.getHibernateTemplate().findByNamedQueryAndValueBean("queryByNameAndPassword?",?valueBean);???


  • hibernatetemplate?hibernate?使用?總結(jié)??
    使用HibernateTemplate的方法進行CRUD操作,其中查詢操作通常可分為兩種,??????一種為固定條件查詢,??
    ?????另一種為動態(tài)多條件查詢(如查詢界面的實現(xiàn)),固定條件查詢可以很方便地通過createQuery,find()等方法實現(xiàn),但是我在動態(tài)條件查詢的實?現(xiàn)過程中,hibernate0可以實現(xiàn)英文的條件查詢,而中文條件則會出現(xiàn)亂碼。現(xiàn)將具體的過程描述如下:???????固定條件查詢??
    ????可以使用常規(guī)的方法,如?Java代碼??
    ????getHibernateTemplate().find(),getHibernateTemplate().createQuery()等????
    getHibernateTemplate().find(),getHibernateTemplate().createQuery()等??
    動態(tài)多條件查詢??
    由于查詢條件的不確定性,我曾嘗試用拼參數(shù)的方法將拼好的sql語句傳入?
    find(qlStr),但是查詢時hibernate會將中文的條件報為亂碼。?不過如果條件全部是英文參數(shù)的話拼sql是可以的。亂碼報錯如下:?3:49,946?INFO??[STDOUT]?Hibernate:??
    select?incometype0_.id?as?id,?incometype0_.name?as?name0_,??
    incometype0_.type_comment?as?type3_0_?from?income_type?incometype0_?where?1=1?and?incometype0_.type_comment='·á????×?????'??
    因此這種方法無法使用。另外find()的另一種find(String?arg0,Object[]?arg1),采用數(shù)組參數(shù)將sql的條件參數(shù)傳入的方式只是適合固定條件參數(shù)的查詢,不適合這種動態(tài)多條件的中文查詢,因此也無法使用。???
    說明:由于find(String?arg0,Object[]?arg1)采用數(shù)組參數(shù)的方式可以使用中文條件查詢,因此可以確定不是我的編碼問題。而是Hibernate0的find(sqlStr)方法本身的問?題。??
    為此只能換成另一種實現(xiàn)途徑,如下:?實現(xiàn)途徑:?得到session?,用Query?q?=?session.createQuery(sql);該方法返回一個Query?類型,利用q.setString(String?arg0,String?arg1)將參數(shù)賦值給sql的參數(shù)條件。在sql語句中拼一次參數(shù),在setString()中也拼一次賦值。?如:??
    Java代碼?
    Java代碼??
  • public?List?phraseQuery(final?String?id,?final?String?name,final?String?typecomment)?{?????
  • ??????????????StringBuffer?sql?=?new?StringBuffer();??
  • ??????????????sql.append("from?IncomeType?where?1=1?");??
  • ??????????????if?(id?!=?null?&&?id.length()?>?0)??
  • ??????????????????????sql.append("?and?id?=?:id?");?????
  • ??????????????if?(name?!=?null?&&?name.length()?>?0)??
  • ??????????????????????sql.append("?and?name?=?:name?");?????
  • ?????????????if?(typecomment?!=?null?&&?typecomment.length()?>?0)????????
  • ???????????????sql.append("?and?typeComment?=?:tc?");??????????????????
  • ???????????????final?String?typeSql?=?new?String(sql);?????
  • ?????????????return?(List)?getHibernateTemplate().execute(new?HibernateCallback()?{?????
  • ????????????????????????????public?Object?doInHibernate(Session?session)??throws?HibernateException,?SQLException?{?????
  • ?????????????????????????????????Query?q?=?session.createQuery(typeSql);?????
  • ?????????????????????????????????if?(id?!=?null?&&?id.length()?>?0)?????????????????????????????????????????????????????q.setString("id",?id);?????
  • ?????????????????????????????????if?(name?!=?null?&&?name.length()?>?0)?????????????????????????????????????????????????q.setString("name",?name);???
  • ?????????????????????????????????if?(typecomment?!=?null?&&?typecomment.length()?>?0)?????
  • ??????????????????????????????????????q.setString("tc",?typecomment);???????????
  • ?????????????????????????????????return?q.list();????
  • ?????????????????????????????}???????????????????????????
  • ?????????????????});??
  • ???????????}??????
  • ????public?List?phraseQuery(final?String?id,?final?String?name,final?String?typecomment)?{???
  • ??????????StringBuffer?sql?=?new?StringBuffer();????
  • ??????????sql.append("from?IncomeType?where?1=1?");??
  • ???????????if?(id?!=?null?&&?id.length()?>?0)??
  • ????????????????sql.append("?and?id?=?:id?");???
  • ??????????if?(name?!=?null?&&?name.length()?>?0)??
  • ????????????????sql.append("?and?name?=?:name?");???
  • ??????????if?(typecomment?!=?null?&&?typecomment.length()?>?0)??
  • ????????????????sql.append("?and?typeComment?=?:tc?");????
  • ??????????final?String?typeSql?=?new?String(sql);????
  • ??????????return?(List)?getHibernateTemplate().execute(new?HibernateCallback()?{public?Object?doInHibernate(Session?session)throws?HibernateException,?SQLException?{???
  • ??????????Query?q?=?session.createQuery(typeSql);??
  • ??????????if?(id?!=?null?&&?id.length()?>?0)??????????????????????????????
  • ??????????q.setString("id",?id);???
  • ??????????if?(name?!=?null?&&?name.length()?>?0)??????????????
  • ??????????q.setString("name",?name);????
  • ??????????if?(typecomment?!=?null?&&?typecomment.length()?>?0)??
  • ??????????q.setString("tc",?typecomment);????
  • ??????????return?q.list();??
  • ??????????}??
  • ?????});???????
  • ?}??

  • 以上方法可以實現(xiàn)動態(tài)中文條件查詢,在有的書中看到并不推薦用find()方法,find()只提供一些簡單的HQL查詢,不具有動態(tài)綁定參數(shù)的功能,在?將來的hibernate新版本中,有可能會淘汰find()方法,而Query接口才是真正的HQL查詢接口,提供更為豐富的功能。基于此,可能對于一?個將被淘汰的方法find()不支持中文也就不足為奇了。^_^畢竟人家重心轉(zhuǎn)移了。而且find()中拼sql字符串的方式雖然是實現(xiàn)查詢的常用手段,?實現(xiàn)起來也比較方便,但是不利于hibernate更好地利用緩存,而采用Query接口可以更好地利用緩存,提高程序執(zhí)行效率。??
    HibernateTemplate的常用方法簡介:?
    q??????void?delete(Object?entity):刪除指定持久化實例???????????
    ????q??????deleteAll(Collection?entities):刪除集合內(nèi)全部持久化類實例???????????
    ????q??????find(String?queryString):根據(jù)HQL查詢字符串來返回實例集合???????????
    ????q??????findByNamedQuery(String?queryName):根據(jù)命名查詢返回實例集合???????????
    ????q??????get(Class?entityClass,?Serializable?id):根據(jù)主鍵加載特定持久化類的實例??????????
    ???q??????save(Object?entity):保存新的實例??????????
    ???q??????saveOrUpdate(Object?entity):根據(jù)實例狀態(tài),選擇保存或者更新??????????
    ???q??????update(Object?entity):更新實例的狀態(tài),要求entity是持久狀態(tài)??????????
    ???q??????setMaxResults(int?maxResults):設(shè)置分頁的大小?????
    q??????void?delete(Object?entity):刪除指定持久化實例???
    q??????deleteAll(Collection?entities):刪除集合內(nèi)全部持久化類實例???
    q??????find(String?queryString):根據(jù)HQL查詢字符串來返回實例集合?
    q??????findByNamedQuery(String?queryName):根據(jù)命名查詢返回實例集合???
    q??????get(Class?entityClass,?Serializable?id):根據(jù)主鍵加載特定持久化類的實例???
    q??????save(Object?entity):保存新的實例?
    q??????saveOrUpdate(Object?entity):根據(jù)實例狀態(tài),選擇保存或者更新???
    q??????update(Object?entity):更新實例的狀態(tài),要求entity是持久狀態(tài)???
    q??????setMaxResults(int?maxResults):設(shè)置分頁的大小

    總結(jié)

    以上是生活随笔為你收集整理的Hibernate hql getHibernateTemplate()常用方法汇总的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 黄色美女毛片 | 欧美v亚洲| 黄色无遮挡 | 天堂8在线天堂资源bt | 深夜福利1000 | av黄色在线看 | 综合精品久久 | 国产一区二区av在线 | 成人28深夜影院 | 男人日女人在线观看 | 日韩一区二区免费视频 | 99精品欧美 | 88福利视频 | 性――交――性――乱a | 91高清国产| 在线高清观看免费 | 亚洲一区二区自偷自拍 | 日韩av高清无码 | 在线麻豆 | 日韩在线观看视频一区二区三区 | 四虎精品一区二区三区 | 羞羞的网站在线观看 | 欧美另类视频在线 | 九九在线观看视频 | 国产精品视频第一页 | 无码人妻精品一区二 | 色成人综合 | 黑人操中国女人视频 | 快色污| 一个人看的毛片 | 日韩电影精品 | 丝袜诱惑一区二区 | 国产视频一区在线 | 成人亚洲天堂 | 性欧美日本| 丰满尤物白嫩啪啪少妇 | 日欧视频 | 国产精品亚洲αv天堂无码 伊人性视频 | 欧美日韩国产成人 | 亚洲色图激情小说 | 在线看黄色网址 | 国产午夜精品在线观看 | a男人天堂 | 一区二区三区 日韩 | 日韩天堂在线 | 日韩在线视频二区 | 97香蕉超级碰碰久久免费软件 | 天天天天天天干 | 午夜视频网站在线观看 | 精品在线播放视频 | 免费av中文字幕 | 免费在线观看黄视频 | av在线一区二区三区 | 国产欧美a | 欧美丰满熟妇bbbbbb百度 | 美女视频污 | 免费人成在线观看网站 | 国产一级片毛片 | 麻豆传媒网站 | a免费视频 | 国产精品久久国产精麻豆96堂 | 天堂俺去俺来也www 欧美大片在线播放 | 一二区在线观看 | 日日摸日日碰夜夜爽无码 | 波多野结衣电车痴汉 | 久久aaaa片一区二区 | 乳女教师の诱惑julia | chinesepron hd videos国产91 | 中文字幕日韩精品在线 | 好吊操av | 少妇太爽了| 色眯眯影视 | 欧美成人高潮一二区在线看 | 日韩黄色精品 | 亚洲三级大片 | 狠狠干狠狠干狠狠干 | 大尺度做爰啪啪床戏 | 快色视频在线观看 | 中文字幕成人 | chinese麻豆gay勾外卖 | 亚洲天堂va| 小辣椒导航 | 黄色网址链接 | 不卡av在线 | 久久综合久久久 | 国产欧美一区二区三区精华液好吗 | 香蕉视频在线免费看 | 尹人综合网 | 在线观看污污网站 | 美美女高清毛片视频免费观看 | 黄色一级片免费看 | va在线播放 | 亚洲国产中文在线 | 国产免费黄色小视频 | 日本一本二本三区免费 | 欧美大片高清 | 粉嫩一区二区三区 | 不卡的av在线免费观看 | av片在线观看网站 |