最基础的三层架构实现最基础的分页查询

164 阅读1分钟

以下是一个示例的三层架构的Java代码来实现分页查询:

表示层(Presentation Layer):

import java.util.Scanner;
import com.example.businesslogiclayer.BusinessLogic;

public class Main {
    public static void main(String[] args) {
        //开启键盘录入
        Scanner scanner = new Scanner(System.in);
        
        System.out.print("Enter page number: ");
        // 设置页数
        int pageNumber = scanner.nextInt();
        
        System.out.print("Enter page size: ");
        //设置一页展示多少数据
        int pageSize = scanner.nextInt();
        
        // 可以使用sringboot的依赖注入方式,创建业务层对象
        BusinessLogic businessLogic = new BusinessLogic();
        //调用业务层对象中的 某页数据,并设置展示多少数据
        businessLogic.getPageData(pageNumber, pageSize);
        
        scanner.close();
    }
}

业务逻辑层(Business Logic Layer):

import com.example.dataaccesslayer.DataAccess;

public class BusinessLogic {
    // 分页的方法
    public void getPageData(int pageNumber, int pageSize) {
        //一样可以依赖注入,创建访问层对象
        DataAccess dataAccess = new DataAccess();
        // 这一步是去除上一页或者当前页之前出现的数据
        int offset = (pageNumber - 1) * pageSize;
        //分页
        dataAccess.getDataFromSource(offset, pageSize);
    }
}

数据访问层(Data Access Layer):

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class DataAccess {
    //用sql语句实现数据的访问,不用如此麻烦,不用看这些
    public void getDataFromSource(int offset, int pageSize) {
        try {
            Connection connection = DriverManager.getConnection("your_database_url", "username", "password");
            
            PreparedStatement statement = connection.prepareStatement("SELECT * FROM your_table LIMIT ? OFFSET ?");
            statement.setInt(1, pageSize);
            statement.setInt(2, offset);
            
            ResultSet resultSet = statement.executeQuery();
            
            while (resultSet.next()) {
                // 处理数据
            }
            
            resultSet.close();
            statement.close();
            connection.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

请注意,上述代码只是一个简单的示例,你需要根据你的实际情况进行适当的修改,比如替换数据库连接信息、表名和字段名等。另外,你还可以根据需要添加异常处理、数据验证等功能来完善代码。

这里还可以将分页提取成一个实体类,就不需要使用键盘录入了,下次再写个实体类的分页查询;