当前位置:实例文章 » JAVA Web实例» [文章]【外卖系统】员工信息分页查询

【外卖系统】员工信息分页查询

发布人:shili8 发布时间:2025-03-14 11:03 阅读次数:0

**外卖系统员工信息分页查询**

### 系统概述本系统用于管理外卖平台的员工信息,包括员工基本信息、联系方式等。为了方便管理和查询,我们采用了分页查询功能。

### 系统设计#### 数据库设计我们使用 MySQL 作为数据库管理系统,创建一个名为 `employee` 的表来存储员工信息:

sqlCREATE TABLE employee (
 id INT PRIMARY KEY AUTO_INCREMENT,
 name VARCHAR(255) NOT NULL,
 phone VARCHAR(20),
 email VARCHAR(100)
);


#### 后端设计我们使用 Java Spring Boot 作为后端开发框架,创建一个名为 `EmployeeController` 的控制器来处理员工信息的请求:

java@RestController@RequestMapping("/api/employees")
public class EmployeeController {
 @Autowired private EmployeeService employeeService;
 /**
 * 分页查询员工信息 */
 @GetMapping public ResponseEntity> getEmployees(@RequestParam(defaultValue = "1") int page,
 @RequestParam(defaultValue = "10") int size) {
 Pageable pageable = PageRequest.of(page -1, size);
 List employees = employeeService.getEmployees(pageable);
 return ResponseEntity.ok(employees);
 }
}


#### 前端设计我们使用 React 作为前端框架,创建一个名为 `EmployeeList` 的组件来展示员工信息:

jsximport React, { useState, useEffect } from 'react';
import axios from 'axios';

function EmployeeList() {
 const [employees, setEmployees] = useState([]);
 const [page, setPage] = useState(1);
 const [size, setSize] = useState(10);

 useEffect(() => {
 axios.get(`/api/employees?page=${page}&size=${size}`)
 .then(response => {
 setEmployees(response.data);
 })
 .catch(error => {
 console.error(error);
 });
 }, [page, size]);

 const handlePageChange = (newPage) => {
 setPage(newPage);
 };

 return (
 <div>
 <h1>员工列表</h1>
 <ul>
 {employees.map((employee) => (
 <li key={employee.id}>
 {employee.name} ({employee.phone})
 </li>
 ))}
 </ul>
 <Pagination page={page}
 size={size}
 onPageChange={handlePageChange}
 />
 </div>
 );
}

export default EmployeeList;


### 分页查询功能分页查询功能用于限制返回的数据量,避免一次性返回大量数据导致性能问题。我们使用 `PageRequest` 来指定每页显示多少条记录。

javapublic List getEmployees(Pageable pageable) {
 Page page = employeeRepository.findAll(pageable);
 return page.getContent();
}


### 总结本系统采用分页查询功能来管理员工信息,避免一次性返回大量数据导致性能问题。我们使用 Java Spring Boot 作为后端开发框架,React 作为前端框架,MySQL 作为数据库管理系统。

###代码注释* `EmployeeController` 控制器负责处理员工信息的请求。
* `getEmployees` 方法用于分页查询员工信息。
* `PageRequest` 用于指定每页显示多少条记录。
* `employeeService`服务类负责获取员工信息。
* `Pagination` 组件用于展示分页信息。

### 部分代码示例
java@RestController@RequestMapping("/api/employees")
public class EmployeeController {
 @Autowired private EmployeeService employeeService;
 /**
 * 分页查询员工信息 */
 @GetMapping public ResponseEntity> getEmployees(@RequestParam(defaultValue = "1") int page,
 @RequestParam(defaultValue = "10") int size) {
 Pageable pageable = PageRequest.of(page -1, size);
 List employees = employeeService.getEmployees(pageable);
 return ResponseEntity.ok(employees);
 }
}


jsximport React, { useState, useEffect } from 'react';
import axios from 'axios';

function EmployeeList() {
 const [employees, setEmployees] = useState([]);
 const [page, setPage] = useState(1);
 const [size, setSize] = useState(10);

 useEffect(() => {
 axios.get(`/api/employees?page=${page}&size=${size}`)
 .then(response => {
 setEmployees(response.data);
 })
 .catch(error => {
 console.error(error);
 });
 }, [page, size]);

 const handlePageChange = (newPage) => {
 setPage(newPage);
 };

 return (
 <div>
 <h1>员工列表</h1>
 <ul>
 {employees.map((employee) => (
 <li key={employee.id}>
 {employee.name} ({employee.phone})
 </li>
 ))}
 </ul>
 <Pagination page={page}
 size={size}
 onPageChange={handlePageChange}
 />
 </div>
 );
}

export default EmployeeList;


javapublic List getEmployees(Pageable pageable) {
 Page page = employeeRepository.findAll(pageable);
 return page.getContent();
}

其他信息

其他资源

Top