以下是一个示例的三层架构的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();
}
}
}
请注意,上述代码只是一个简单的示例,你需要根据你的实际情况进行适当的修改,比如替换数据库连接信息、表名和字段名等。另外,你还可以根据需要添加异常处理、数据验证等功能来完善代码。
这里还可以将分页提取成一个实体类,就不需要使用键盘录入了,下次再写个实体类的分页查询;