Java中使用SSH导出Excel

在实际开发中,我们经常需要从数据库中查询数据并导出到Excel文件中。使用SSH(Spring + Struts2 + Hibernate)框架,可以方便地实现这个功能。本文将介绍如何在Java中使用SSH导出Excel文件,并提供相应的代码示例。

准备工作

在开始之前,我们需要进行一些准备工作。

添加相关依赖

首先,需要在项目的pom.xml文件中添加以下依赖:

<dependencies>
    <!-- Spring -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>5.2.11.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.2.11.RELEASE</version>
    </dependency>
    <!-- Struts2 -->
    <dependency>
        <groupId>org.apache.struts</groupId>
        <artifactId>struts2-core</artifactId>
        <version>2.5.26</version>
    </dependency>
    <!-- Hibernate -->
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>5.4.22.Final</version>
    </dependency>
    <!-- MySQL Connector -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.22</version>
    </dependency>
    <!-- Apache POI -->
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>4.1.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>4.1.2</version>
    </dependency>
</dependencies>

这些依赖包括Spring、Struts2、Hibernate、MySQL驱动和Apache POI。

配置数据库连接

接下来,需要在项目的配置文件中配置数据库连接。在src/main/resources目录下创建一个名为application.properties的文件,并添加以下内容:

# Database Configuration
jdbc.driverClassName=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/your_database?useSSL=false&serverTimezone=UTC
jdbc.username=your_username
jdbc.password=your_password

jdbc.urljdbc.usernamejdbc.password替换为你的数据库连接信息。

创建实体类和DAO层

在Java中使用SSH框架进行开发,通常会按照MVC(Model-View-Controller)结构组织代码。首先,我们需要创建一个实体类和DAO(Data Access Object)接口。

假设我们要导出一个名为User的实体类,包含idname两个属性。我们可以创建一个名为User的Java类:

package com.example.model;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    private String name;

    // Getters and Setters
}

同时,我们需要创建一个名为UserDao的接口,定义数据库操作的方法:

package com.example.dao;

import com.example.model.User;

import java.util.List;

public interface UserDao {

    List<User> getAllUsers();
}

然后,在DAO接口的实现类中,使用Hibernate进行数据库查询操作:

package com.example.dao.impl;

import com.example.dao.UserDao;
import com.example.model.User;
import org.hibernate.Session;
import org.hibernate.SessionFactory;

import java.util.List;

public class UserDaoImpl implements UserDao {

    private SessionFactory sessionFactory;

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

    @Override
    public List<User> getAllUsers() {
        Session session = sessionFactory.getCurrentSession();
        return session.createQuery("FROM User", User.class).list();
    }
}

创建Action类

在Struts2中,Action是处理请求的控制器。我们需要创建一个名为ExportExcelAction的Action类,负责导出Excel文件的操作。

首先,我们需要在struts.xml文件中配置Action:

<struts>
    <package name="default" extends="struts-default">
        <action name="exportExcelAction" class="com.example.action.ExportExcelAction">
            <result name="success" type="stream">
                <param name="contentType