分頁查詢無處不在。使用Hibernate+jsp+HQL進行分頁查詢。
第一步:編寫房屋實體類和House.hbm.xml映射。
/* * 房屋實體類 */public class House { PRivate int id;//房屋id private HouseType type;//房屋類型 private Users2 user;//用戶 private Street street;//街道 private String title;//標題 private String description;//描述 private String fdate;//日期 private String price;//價格 private String contact;//面積//省略get和set方法}
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping package="entity"> <class name="House" table="House"> <id name="id"> <generator class="increment"/> </id> <!--外鍵--> <many-to-one name="type" column="type_id" cascade="save-update" /> <many-to-one name="user" column="user_id" cascade="save-update" /> <many-to-one name="street" column="street_id" cascade="save-update" /> <property name="title" /> <property name="description" /> <property name="fdate" /> <property name="price" /> <property name="contact" /> </class></hibernate-mapping>
第二步:編寫hibernate.cfg.xml映射
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"><hibernate-configuration> <session-factory name="foo"> <!-- 數據庫方言 --> <property name="dialect"> org.hibernate.dialect.OracleDialect </property> <!-- 連接數據庫Url --> <property name="hibernate.connection.url"> jdbc:oracle:thin:@localhost:1521:orcl </property> <!-- 連接驅動 --> <property name="hibernate.connection.driver_class"> oracle.jdbc.driver.OracleDriver </property> <!-- 用戶名 --> <property name="hibernate.connection.username">epet</property> <!-- 密碼 --> <property name="hibernate.connection.passWord">123456</property> <!-- 在控制臺打印sql信息 --> <property name="show_sql">true</property> <!-- 創建表結構 --> <property name="hibernate.hbm2ddl.auto">update</property> <!-- 配置映射信息 --> <mapping resource="entity/House.hbm.xml" /> </session-factory></hibernate-configuration>
第三步:HibernateUtil+fenye.java分頁語句
package com.msit.hibernate.HibernateUtil;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;public class HibernateUtil { private HibernateUtil(){ }; public static SessionFactory SessionFactory = null; static{ //hibernate Configuration cf = new Configuration(); cf.configure(); SessionFactory = cf.buildSessionFactory();//DriverManager.getconnection() //Session session = SessionFactory.openSession(); } public static Session getSession(){ return SessionFactory.openSession(); } public static void closeSession(Session session){ if(session!=null){ session.clear(); } }}
package Dao;import java.util.List;import org.hibernate.Query;import org.hibernate.Session;import org.hibernate.Transaction;import com.msit.hibernate.HibernateUtil.HibernateUtil;import entity.House;/* * 分頁 */public class fenye { //查詢所有房屋 public List<House> selecthouse() { // TODO Auto-generated method stub Session session = HibernateUtil.getSession(); //開啟事物 Transaction tran=session.beginTransaction(); String hql="from House"; Query q=session.createQuery(hql); List<House> list = q.list(); return list; } //房屋總數除于要分的條數 public int getTotalPages(int count,int pageSize){ int totalpages=0; totalpages=(count%pageSize==0)?(count/pageSize):(count/pageSize+1); return totalpages; } //獲取房屋總條數 public int getConut(){ Session session = HibernateUtil.getSession(); Transaction tran=session.beginTransaction(); String hql="select count(*) from House"; Query q=session.createQuery(hql); List list = q.list(); String li=list.get(0).toString(); Integer count=Integer.parseInt(li); return count; } public List<House> selechouse(int pageIndex,int pageSize){ // TODO Auto-generated method stub Session session = HibernateUtil.getSession(); //開啟事物 Transaction tran=session.beginTransaction(); String hql="from House"; Query query=session.createQuery(hql); query.setFirstResult((pageIndex-1)*pageSize); query.setMaxResults(pageSize); List<House> result=query.list(); return result; }}
jsp頁面:
<%//==============分頁=============== //設置新聞顯示條數 int pageSize=4;//實例化fenye newxw=new fenye(); //獲取數據庫有多少條數據int count=newxw.getConut();//獲取頁碼String page1=request.getParameter("pageIndex");//得到具體要分的頁int pag=newxw.getTotalPages(newxw.getConut(),pageSize);//得到當前頁int pageIndex=0;//判斷得到的值是否有值if(page1==null){ pageIndex=1; //查詢 }else{ //把當前頁賦值給pageIndex pageIndex=Integer.parseInt(page1); //判斷當前頁是否為最大頁 if(pageIndex>pag){ pageIndex=pag; } }List<House> list=newxw.selechouse(pageIndex,pageSize);request.setAttribute("list",list);%><% HouseBiz hou=new HouseBizImpl(); List<House> hoi=hou.selecthouse(); request.setAttribute("list",list);%> <c:forEach var="mind" items="${requestScope.list}">/省略顯示數據/</c:forEach >
<% //判斷當前頁是否為末頁 if(pageIndex>1){ %> <LI><a href="list.jsp?pageIndex=<%=1 %>"> 首頁</a></LI> <LI> <a href="list.jsp?pageIndex=<%=pageIndex-1%>"> 上一頁 </a></LI>
<% } //判斷當前頁是否為末頁 if(pageIndex<pag){ %> <LI> <a href="list.jsp?pageIndex=<%=pageIndex+1 %>"> 下一頁</a></LI> <LI> <a href="list.jsp?pageIndex=<%=pag%>"> 末頁 </a></LI>
<% }
%>
</UL> <SPAN class=total>[<%=pageIndex %>/<%=pag%>]頁</SPAN> </DIV></DIV>
您可以通過點擊 右下角 的按鈕 來對文章內容作出評價, 也可以通過左下方的 關注按鈕 來關注我的博客的最新動態。 如果文章內容對您有幫助, 不要忘記點擊右下角的 推薦按鈕 來支持一下哦 如果您對文章內容有任何疑問, 可以通過評論或發郵件的方式聯系我: 2276292708@QQ.com如果需要轉載,請注明出處,謝謝??!
新聞熱點
疑難解答