使用hibernate和struts2实现分页功能的示例

使用Hibernate和Struts2实现分页功能可以分为以下几个步骤:

  1. 添加依赖

在pom.xml文件中添加Hibernate和Struts2的依赖,示例代码如下:

<dependencies>
    <!-- Hibernate -->
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>5.4.32.Final</version>
    </dependency>

    <!-- Struts2 -->
    <dependency>
        <groupId>org.apache.struts</groupId>
        <artifactId>struts2-core</artifactId>
        <version>2.5.26</version>
    </dependency>
</dependencies>
  1. 配置Hibernate

在项目的配置文件中添加Hibernate的配置信息,包括数据源、映射文件、SessionFactory等,示例代码如下:

<hibernate-configuration>
    <session-factory>
        <!-- 数据源配置 -->
        <property name="hibernate.connection.driver_class">com.mysql.cj.jdbc.Driver</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test_db?useUnicode=true&amp;characterEncoding=UTF-8&amp;serverTimezone=UTC</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.connection.password">root</property>

        <!-- 映射文件 -->
        <mapping class="com.example.User"/>

        <!-- SessionFactory配置 -->
        <property name="hibernate.show_sql">true</property>
        <property name="hibernate.format_sql">true</property>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQL8Dialect</property>
    </session-factory>
</hibernate-configuration>
  1. 编写数据访问层代码

使用Hibernate实现数据访问层,包括实体类、DAO类、以及相关的HQL查询,示例代码如下:

@Entity
@Table(name = "user")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    @Column(name = "name")
    private String name;

    @Column(name = "age")
    private Integer age;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}

public class UserDao {
    private SessionFactory sessionFactory;

    public void setSessionFactory(SessionFactory sessionFactory) {
        this.sessionFactory = sessionFactory;
    }

    public List<User> findPage(int page, int size) {
        Session session = sessionFactory.openSession();
        Query query = session.createQuery("from User order by id");
        query.setFirstResult((page - 1) * size);
        query.setMaxResults(size);
        List<User> users = query.list();
        session.close();
        return users;
    }

    public Long getCount() {
        Session session = sessionFactory.openSession();
        Query query = session.createQuery("select count(*) from User");
        Long count = (Long) query.uniqueResult();
        session.close();
        return count;
    }
}
  1. 编写业务逻辑层代码

使用Struts2实现业务逻辑层,包括Action类和相应的视图,示例代码如下:

public class UserAction extends ActionSupport {
    private UserDao userDao;
    private List<User> users;
    private int total;
    private int page;
    private int size = 10;

    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }

    public List<User> getUsers() {
        return users;
    }

    public int getTotal() {
        return total;
    }

    public void setPage(int page) {
        this.page = page;
    }

    public void setSize(int size) {
        this.size = size;
    }

    public String execute() {
        users = userDao.findPage(page, size);
        total = (int) (userDao.getCount() + size - 1) / size;
        return SUCCESS;
    }
}
  1. 编写视图

使用JSP编写视图,包括显示用户列表和分页条,示例代码如下:

<%@ taglib prefix="s" uri="/struts-tags" %>

<ul>
<s:iterator value="users">
    <li><s:property value="name"/> (age: <s:property value="age"/>)</li>
</s:iterator>
</ul>

<div class="pagination">
<s:url var="url" value="/user.action"/>
<s:set name="params" value="'&amp;size='+size"/>

<s:if test="page==1">
    <span class="disabled">&laquo;</span>
</s:if>
<s:else>
    <a href="<s:url includeParams="true"><s:param name="page" value="1"/><s:param name="size" value="%{#size}"/></s:url>">&laquo;</a>
</s:else>

<s:iterator value="1..total">
    <s:if test="page==#this">
        <span class="current"><s:property value="#this"/></span>
    </s:if>
    <s:else>
        <a href="<s:url includeParams="true"><s:param name="page" value="%{#this}"/><s:param name="size" value="%{#size}"/></s:url>"><s:property value="#this"/></a>
    </s:else>
</s:iterator>

<s:if test="page==total">
    <span class="disabled">&raquo;</span>
</s:if>
<s:else>
    <a href="<s:url includeParams="true"><s:param name="page" value="%{total}"/><s:param name="size" value="%{#size}"/></s:url>">&raquo;</a>
</s:else>
</div>

至此,使用Hibernate和Struts2实现分页功能的示例就完成了。以下是两个示例:

示例1:查询用户列表并分页显示

public class UserAction extends ActionSupport {
    private UserDao userDao;
    private List<User> users;
    private int total;
    private int page;
    private int size = 10;

    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }

    public List<User> getUsers() {
        return users;
    }

    public int getTotal() {
        return total;
    }

    public void setPage(int page) {
        this.page = page;
    }

    public void setSize(int size) {
        this.size = size;
    }

    public String execute() {
        users = userDao.findPage(page, size);
        total = (int) (userDao.getCount() + size - 1) / size;
        return SUCCESS;
    }
}

示例2:在用户列表中增加搜索功能并分页显示搜索结果

public class UserAction extends ActionSupport {
    private UserDao userDao;
    private List<User> users;
    private int total;
    private int page;
    private int size = 10;
    private String search;

    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }

    public List<User> getUsers() {
        return users;
    }

    public int getTotal() {
        return total;
    }

    public void setPage(int page) {
        this.page = page;
    }

    public void setSize(int size) {
        this.size = size;
    }

    public void setSearch(String search) {
        this.search = search;
    }

    public String execute() {
        users = userDao.findPage(page, size, search);
        total = (int) (userDao.getCount(search) + size - 1) / size;
        return SUCCESS;
    }
}

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用hibernate和struts2实现分页功能的示例 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • java生成随机数(字符串)示例分享

    下面是详细的完整攻略: 标题:Java生成随机数(字符串)示例分享 1. 生成随机整数 Java生成随机整数可以通过使用Java中的random类实现。以下是一个示例代码,生成一个1-100之间的随机整数: import java.util.Random; public class GenerateRandomNumber { public static v…

    Java 2023年5月27日
    00
  • SpringMVC全局异常处理的三种方式

    下面我将详细讲解 SpringMVC 全局异常处理的三种方式。 1. 在 Controller 中捕获并处理异常 首先,我们可以在 Controller 中通过 @ExceptionHandler 注解来捕获并处理异常。这种方式实现起来比较简单,但只适用于当前 Controller。代码示例: @RestController public class MyC…

    Java 2023年5月27日
    00
  • Java语言实现Blowfish加密算法完整代码分享

    Java语言实现Blowfish加密算法完整代码分享 算法介绍 Blowfish算法是一种对称加密算法,它具有以下特点: 密钥长度可变,最长为448位 加密、解密速度较快 抵抗差分分析攻击和线性分析攻击的能力较强 安全性与密钥长度相关,密钥长度与加密强度呈正比关系 实现步骤 1. 导入依赖包 在开始使用Blowfish算法之前,需要导入相关的依赖包。在这里我…

    Java 2023年5月19日
    00
  • 详解SpringMVC从基础到源码

    以下是关于“详解SpringMVC从基础到源码”的完整攻略,其中包含两个示例。 详解SpringMVC从基础到源码 SpringMVC是一个基于MVC模式的Web框架,它提供了一种灵活、高效的方式来开发Web应用程序。在本攻略中,我们将从基础概念到源码实现,全面讲解SpringMVC的工作原理和实现细节。 SpringMVC基础概念 MVC模式 MVC模式是…

    Java 2023年5月16日
    00
  • Java如何手动创建线程池

    让我详细讲解一下 Java 如何手动创建线程池。 什么是线程池 线程池是一种用于管理线程的方法,它包含了多个线程,可以解决线程频繁创建和删除的问题。在 Java 中,线程池的实现是通过 Executor 框架来完成的。 为什么要手动创建线程池 Java 中提供了许多内置的线程池,如:FixedThreadPool、CachedThreadPool、Sched…

    Java 2023年5月26日
    00
  • hibernate-validator改进校验框架validator v0.4使用

    来讲一下“hibernate-validator改进校验框架validator v0.4使用”的完整攻略。 什么是Hibernate-Validator? Hibernate-Validator 是一款校验框架。这个框架的初衷是为了在 JavaBean 层面上提供一套统一、可重用的验证机制,使得我们在对 JavaBean 进行数据验证时能够更加方便、快捷、灵…

    Java 2023年5月20日
    00
  • SpringBoot中整合Shiro实现权限管理的示例代码

    下面我将为你详细讲解Spring Boot中整合Shiro实现权限管理的攻略。 一、前置知识 在学习本篇攻略之前,需要掌握以下知识: Spring Boot基础知识 Shiro基础知识 Maven依赖管理 二、步骤 1. 引入依赖 首先,我们需要在pom.xml文件中引入以下依赖: <!– Shiro –> <dependency&gt…

    Java 2023年6月2日
    00
  • Java实现购物管理系统

    Java实现购物管理系统攻略 1. 确定项目需求和功能 在 Java 实现购物管理系统之前,首先需要确定项目的需求和功能,包括: 用户登录和注册 商品浏览和搜索 商品添加、修改和删除 购物车功能 订单生成和支付 在确定了以上需求和功能之后,我们可以进行后续开发工作。 2. 创建数据库和数据表 为了存储商品信息、用户信息、订单信息等数据,我们需要创建相应的数据…

    Java 2023年5月18日
    00
合作推广
合作推广
分享本页
返回顶部