Criteria與MyBatis學(xué)習(xí)總結(jié)_第1頁
Criteria與MyBatis學(xué)習(xí)總結(jié)_第2頁
Criteria與MyBatis學(xué)習(xí)總結(jié)_第3頁
Criteria與MyBatis學(xué)習(xí)總結(jié)_第4頁
Criteria與MyBatis學(xué)習(xí)總結(jié)_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、第九章 Criteria查詢及注解第十章 MyBatis入門什么是Criteria查詢QBC(Query By Criteria) 基本用法基本用法 1.獲取一個(gè)獲取一個(gè)Criteria查詢對象 Criteria criteria=session.createCriteria(Dept.class); 2.使用使用Restrictions添加查詢條件添加查詢條件 Criterion criterion=Restrictions.eq(deptno, 10); criteria.add(criterion);3.獲取返回結(jié)果獲取返回結(jié)果List depts=criteria.list();for

2、 (Dept dept : depts) System.out.println(dept.getDname();Criteria查詢是查詢是Hibernate提供的另一種查詢方式,比提供的另一種查詢方式,比HQL更加面向?qū)ο蟮牟樵兎绞?。更加面向?qū)ο蟮牟樵兎绞?。代碼可簡化為代碼可簡化為List depts=session.createCriteria(Dept.class).add(Restrictions.eq(deptno, 10).list();Criteria條件查詢 Restrictions的方法的方法 eq() 等于 = ne() 不等于 gt() 大于 ge() 大于等于 = lt

3、() 小于 le() 小于等于 = isNull() 是否為空 isNotNull() 不為空 in(屬性名,集合或數(shù)組) Restrictions.not( Restrictions.in() between(“屬性名”,值1,值2) Restrictions.not(Restrictions.between() allEq() 利用Map()來進(jìn)行多個(gè)等于的限制 and(條件1,條件2) 或 conjunction() or 或多個(gè)或disjunction() sqlRestriction 用SQL限定查詢 通過通過add(Restrictions.條件方法條件方法()來添加條件來添加條件

4、 like(屬性名,要匹配的值,字符匹配模式) ilike 忽略大小寫 ilike(屬性名,要匹配的值,字符匹配模式) 字符匹配模式MatchMode START 以x開頭 END 以x結(jié)束 ANYWHERE 包含有x的 EXACT 精確匹配 根根據(jù)姓名模據(jù)姓名模糊查詢出員工糊查詢出員工List emps = session.createCriteria(Emp.class, e).add(Restrictions.ilike(e.ename, s,MatchMode.ANYWHERE).list();for (Emp emp : emps) System.out.println(emp.ge

5、tEname();Criteria動態(tài)查詢根據(jù)對象的屬性值是否存在,添加條件根據(jù)對象的屬性值是否存在,添加條件 Criteria ct=session.createCriteria(Emp.class);if(con.getJob()!=null)ct.add(Restrictions.eq(job, con.getJob();if(con.getSal()!=null)ct.add(Restrictions.gt(sal, con.getSal();if(con.getBeginDate()!=null&con.getEndDate()!=null)ct.add(Restrictio

6、ns.between(hiredate, con.getBeginDate(), con.getEndDate();List emps=ct.list();for (Emp emp : emps) System.out.println(emp);投影查詢 .setProjection(Property.forName(要投影的屬性) 相當(dāng)于select 屬性名 from 對象 一般只查詢部分列時(shí)使用Criteria ct=session.createCriteria(Emp.class);/多個(gè)列List list=ct.setProjection(Pjection

7、List().add(Property.forName(ename).add(Property.forName(job).list();for (Object object : list) System.out.println(object0+t+object1);Criteria排序 .addOrder(Order.asc(“屬性名”)或Order.desc(“屬性名”); Criteria ct=session.createCriteria(Emp.class);List emps=ct.addOrder(Order.asc(job).addOrder(Order.desc(empno).

8、list();for (Emp emp : emps) System.out.println(emp);查詢所有員工,員工按查詢所有員工,員工按job升序,編號降序顯示升序,編號降序顯示Criteria分頁 設(shè)置開始的條數(shù):.setFirstResult() 設(shè)置一次查詢的記錄條數(shù).setMaxResults(); 統(tǒng)計(jì)記錄數(shù) .rowCount()Criteria ct=session.createCriteria(Emp.class);ct.setProjection(Projections.rowCount();Integer count=(Integer) ct.uniqueResul

9、t();Criteria ct1=session.createCriteria(Emp.class);List emps=ct1.setFirstResult(page-1)*rows).setMaxResults(rows).list();for (Emp emp : emps) System.out.println(emp);Criteria連接查詢 內(nèi)鏈接 方式一:.createCriteria(要連接的對象) 方式二:createAlias(要連接的對象,別名) 外鏈接 左外連接:setFetchMode(要連接的對象,FetchMode.JOIN) Criteria ct=sessi

10、on.createCriteria(Emp.class);ct.add(Restrictions.gt(sal, 2000D).createCriteria(dept).add(Restrictions.eq(dname, SALES);List emp=ct.list();for (Emp emp2 : emp) System.out.println(emp2);查詢部門名稱為查詢部門名稱為SALES并且工資大于并且工資大于2000的員工信息的員工信息Criteria連接查詢/在指定實(shí)體類的時(shí)候指定一個(gè)別名,在查詢中可能通過別名來確定屬性Criteria ct=session.createC

11、riteria(Emp.class,e).createAlias(e.dept, d).add(Restrictions.gt(e.sal, 2000D).add(Restrictions.eq(d.dname, SALES);List emp=ct.list();for (Emp emp2 : emp) System.out.println(emp2);查詢職位是查詢職位是“analyser”或或“accountant”或或“engineer”的員工的員工Criteria分組 用DetachedCriteria根據(jù)部門分組 查詢最大、最小、平均值DetachedCriteria ct=Det

12、achedCriteria.forClass(Emp.class,e).createAlias(e.dept, d).setProjection(PjectionList().add(Projections.avg(e.sal), avgsal).add(Projections.max(e.sal), maxsal).add(Projections.min(e.sal), minsal).add(Projections.groupProperty(d.dname), deptname).setResultTransformer(Transformers.aliasT

13、oBean(DeptEmpSal.class); /設(shè)置轉(zhuǎn)換返回的結(jié)果,設(shè)置轉(zhuǎn)換返回的結(jié)果,aliasToBean()把結(jié)果通過setter方法注入到指定的對像屬性中 List deps=ct.getExecutableCriteria(session).list();/獲取可執(zhí)行的Criteria對象Hibernate注解注解是配置持久化類映射關(guān)系的方式之一。添加jar包 hibernate-annotatinos.jar ejb3-persistence.jar 使用注解配置持久化類 建立AnnotationConfiguration會話工廠 在Hibernate主配置文件聲明持久化類 使

14、用注解的步驟使用注解的步驟 常用注解 Entity Id GeneratedValue Table UniqueConstraint Lob Colunm Transient OneToOne OneToMany ManyToOne ManyToMany 對象關(guān)聯(lián)關(guān)系注解對象關(guān)聯(lián)關(guān)系注解 MyBatisMyBatis入門入門n MyBatis是什么? n 使用MyBatis實(shí)現(xiàn)持久化操作 n MyBatis配置文件 n 使用MyBatis實(shí)現(xiàn)持久化操作的步驟 MyBatis是什么? MyBatis是一款一流的支持自定義SQL、存儲過程和高級映射的持久化框架。 MyBatis幾乎消除了所有的JD

15、BC代碼,也基本不需要手工去設(shè)置參數(shù)和獲取檢索結(jié)果。MyBatis能夠使用簡單的XML格式或者注解進(jìn)行來配置,能夠映射基本數(shù)據(jù)元素、Map接口和POJOs(普通java對象)到數(shù)據(jù)庫中的記錄。使用MyBatis實(shí)現(xiàn)持久化操作的步驟 準(zhǔn)備jar包、添加jar包mybatis-xxx.jar 創(chuàng)建配置主配置文件xml 創(chuàng)建持久化類和數(shù)據(jù)庫接口 創(chuàng)建SQL映射文件 (可略)創(chuàng)建接口實(shí)現(xiàn)類(可略是因?yàn)槟芡ㄟ^SqlSession的getMapper返回接口實(shí)例) 具體測試和操作 主配置文件主配置文件SQL映射文件 描述如何從結(jié)果集中加載對象 一個(gè)可以被其他語句復(fù)用的SQL 塊 SELECT * FROM t_personsql標(biāo)簽的用法使用MyBatis實(shí)現(xiàn)持久化操作 String resource = mybaits-config.xml;Reader reader = Resources.getResourceAsReader(resource);SqlSessionFactory sf = new SqlSessionFactoryB

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論