首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Hibernate 完整 CRUD 與分頁實戰:從實體映射到 Servlet 展示

     編輯:Java 綜合教學

專案結構概覽

src/
├─ com.entity.Student          # 實體類
├─ com.entity.Student.hbm.xml  # 映射文件
├─ hibernate.cfg.xml           # 主配置
├─ com.util.Hibernate_Util     # Session 工具
├─ com.page.Page               # 分頁模型
├─ com.dao / impl              # 數據訪問層
├─ com.service / impl          # 業務邏輯層
├─ com.servlet.*               # 控制器
└─ webapp/*.jsp                # 視圖頁面

核心配置片段

hibernate.cfg.xml

<property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="connection.url">jdbc:oracle:thin:@127.0.0.1:1521:orcl</property>
<property name="dialect">org.hibernate.dialect.Oracle10gDialect</property>
<property name="show_sql">true</property>
<mapping resource="com/entity/Student.hbm.xml"/>

Student.hbm.xml

<class name="com.entity.Student" table="STUDENT">
  <id name="sid" column="SID">
    <generator class="sequence"><param name="sequence">SEQ_STUDENT</param></generator>
  </id>
  <property name="sname" column="SNAME"/>
  <property name="password" column="PASSWORD"/>
  <property name="sex" column="SEX"/>
  <property name="cid" column="CID"/>
</class>

分頁查詢實現

// DAO
public List findPage(Page page) {
    Session s = Hibernate_Util.getSession();
    Query q = s.createQuery("from Student");
    q.setFirstResult(page.getStartRow());
    q.setMaxResults(page.getPageSize());
    List list = q.list();
    Hibernate_Util.closeSession();
    return list;
}

public int getTotalCount() {
    Session s = Hibernate_Util.getSession();
    Long count = (Long) s.createQuery("select count(*) from Student").uniqueResult();
    Hibernate_Util.closeSession();
    return count.intValue();
}

Servlet 返回 JSON (Jackson)

ObjectMapper om = new ObjectMapper();
String json = om.writeValueAsString(list);
String pageJson = om.writeValueAsString(page);
out.print("{\"page\":" + pageJson + ",\"list\":" + json + "}");

JSP 分頁標籤

<c:forEach var="stu" items="${list}" varStatus="s">
  <tr><td>${stu.sid}</td><td>${stu.sname}</td><td>${stu.sex}</td>
  <td><a href="FindByIdSerlvet?sid=${stu.sid}">修改</a> ...</td></tr>
</c:forEach>
<a href="FindAllServlet?pageNo=1">首頁</a>
<c:choose><c:when test="${page.pageno gt 1}"><a href="...pageNo=${page.pageno-1}">上一頁</a></c:when>...</c:choose>
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved