📜  Struts 2-数据库访问(1)

📅  最后修改于: 2023-12-03 14:47:44.334000             🧑  作者: Mango

Struts 2-数据库访问

在进行Web应用开发时,经常需要与数据库进行交互。 Struts 2框架提供了许多选项来访问数据库。在本文中,我们将讨论这些选项。

JDBC访问

JDBC(Java Database Connectivity)是Java平台上连接数据库的标准API。 JDBC允许开发人员使用Java编程语言编写SQL语句,以及读取和写入与数据库相关的数据。

Struts 2框架提供了一个JDBC插件,其中包括了一个JDBC拦截器和一个JDBC动作映射器。这些插件允许Struts 2应用程序使用JDBC API访问数据库。

<dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-jdbc</artifactId>
    <version>2.x.x</version>
</dependency>

使用JDBC访问数据库的步骤如下:

  1. struts.xml文件中配置JDBC拦截器和动作映射器:
<action name="get-all-employees" class="com.example.EmployeeAction">
    <interceptor-ref name="defaultStack"/>
    <interceptor-ref name="jdbc"/>
    <result name="success">/employees.jsp</result>
</action>
  1. 在Action类中添加配置参数和业务逻辑,使用JDBC API访问数据库:
public class EmployeeAction extends ActionSupport {
    private List<Employee> employees;

    public String execute() {
        try {
            Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "root", "password");
            Statement stmt = conn.createStatement();
            ResultSet rs = stmt.executeQuery("SELECT * FROM employees");
            employees = new ArrayList<>();
            while (rs.next()) {
                Employee employee = new Employee(rs.getInt("id"), rs.getString("name"), rs.getString("address"));
                employees.add(employee);
            }
            conn.close();
            return SUCCESS;
        } catch (Exception e) {
            e.printStackTrace();
            return ERROR;
        }
    }

    // getters and setters
}
Hibernate访问

Hibernate是一个开源的对象关系映射框架。它简化了Java应用程序与关系型数据库之间的数据交互。

Struts 2框架提供了一个Hibernate插件,它允许应用程序使用Hibernate访问数据库。该插件提供了一个拦截器和一个动作映射器,可以在Struts 2中使用Hibernate进行数据持久化。

<dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-hibernate-plugin</artifactId>
    <version>2.x.x</version>
</dependency>

使用Hibernate访问数据库的步骤如下:

  1. struts.xml文件中配置Hibernate拦截器和动作映射器:
<action name="get-all-employees" class="com.example.EmployeeAction">
    <interceptor-ref name="defaultStack"/>
    <interceptor-ref name="hibernate"/>
    <result name="success">/employees.jsp</result>
</action>
  1. 在Action类中使用Hibernate API访问数据库:
public class EmployeeAction extends ActionSupport {
    private List<Employee> employees;

    public String execute() {
        Session session = HibernateUtil.getSessionFactory().openSession();
        Transaction tx = session.beginTransaction();
        employees = session.createQuery("FROM Employee").list();
        tx.commit();
        session.close();
        return SUCCESS;
    }

    // getters and setters
}
Mybatis访问

MyBatis是一个Java持久化框架。它提供了一种与SQL语句解耦的方式来管理数据。

Struts 2框架提供了一个Mybatis插件,它允许应用程序使用Mybatis访问数据库。该插件提供了一个拦截器和一个动作映射器,可以在Struts 2中使用Mybatis进行数据持久化。

<dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-mybatis-plugin</artifactId>
    <version>2.x.x</version>
</dependency>

使用Mybatis访问数据库的步骤如下:

  1. struts.xml文件中配置Mybatis拦截器和动作映射器:
<action name="get-all-employees" class="com.example.EmployeeAction">
    <interceptor-ref name="defaultStack"/>
    <interceptor-ref name="mybatis"/>
    <result name="success">/employees.jsp</result>
</action>
  1. 在Action类中使用Mybatis API访问数据库:
public class EmployeeAction extends ActionSupport {
    private List<Employee> employees;

    public String execute() {
        SqlSession sqlSession = MybatisUtil.getSqlSessionFactory().openSession();
        employees = sqlSession.selectList("com.example.EmployeeMapper.getAllEmployees");
        sqlSession.close();
        return SUCCESS;
    }

    // getters and setters
}
总结

通过本文,您可以了解到Struts 2提供的不同选项来访问数据库。 JDBC访问是直接访问数据库的一种最基本的方法,而Hibernate和Mybatis提供了更高级的、更容易使用的方法来访问数据库。 选择哪种方法取决于您的需求和技能。