SSM+JSP实现销售记录展示,带分页功能、模糊查询
SSM+JSP实现销售记录展示,带分页功能、模糊查询
本文将介绍使用SSM框架和JSP技术实现销售记录展示功能,包含分页功能、模糊查询以及最近数据优先展示。以下将提供详细的代码示例,涵盖实体类、DAO接口、Service接口、Controller类和JSP页面。
功能需求
- 销售记录展示,带分页功能、模糊查询(产品、客户、区域、门店、日期)、最近的数据展示在第一条;
- 销售记录表(sale_record):
- id(主键)
- user_id(用户ID,外键)
- product_id(产品ID,外键)
- customer_id(客户ID,外键)
- salesperson_id(销售员ID,外键)
- quantity(销售数量)
- sale_date(销售日期)
代码实现
- 创建SaleRecord实体类
public class SaleRecord {
private Integer id;
private Integer userId;
private Integer productId;
private Integer customerId;
private Integer salespersonId;
private Integer quantity;
private Date saleDate;
// 省略getter和setter方法
}
- 创建SaleRecordDao接口和SaleRecordDao的实现类
- SaleRecordDao.java
public interface SaleRecordDao {
List<SaleRecord> getSaleRecords(int start, int pageSize, String keyword);
int getSaleRecordCount(String keyword);
}
- SaleRecordDaoImpl.java
@Repository
public class SaleRecordDaoImpl implements SaleRecordDao {
@Autowired
private SqlSession sqlSession;
@Override
public List<SaleRecord> getSaleRecords(int start, int pageSize, String keyword) {
Map<String, Object> params = new HashMap<>();
params.put('start', start);
params.put('pageSize', pageSize);
params.put('keyword', keyword);
return sqlSession.selectList('getSaleRecords', params);
}
@Override
public int getSaleRecordCount(String keyword) {
return sqlSession.selectOne('getSaleRecordCount', keyword);
}
}
- 创建SaleRecordService接口和SaleRecordServiceImpl类
- SaleRecordService.java
public interface SaleRecordService {
PageInfo<SaleRecord> getSaleRecords(int pageNum, int pageSize, String keyword);
}
- SaleRecordServiceImpl.java
@Service
public class SaleRecordServiceImpl implements SaleRecordService {
@Autowired
private SaleRecordDao saleRecordDao;
@Override
public PageInfo<SaleRecord> getSaleRecords(int pageNum, int pageSize, String keyword) {
PageHelper.startPage(pageNum, pageSize);
List<SaleRecord> saleRecords = saleRecordDao.getSaleRecords((pageNum - 1) * pageSize, pageSize, keyword);
PageInfo<SaleRecord> pageInfo = new PageInfo<>(saleRecords);
return pageInfo;
}
}
- 创建SaleRecordController类
@Controller
public class SaleRecordController {
@Autowired
private SaleRecordService saleRecordService;
@RequestMapping('/saleRecords')
public String getSaleRecords(@RequestParam(defaultValue = '1') int pageNum, @RequestParam(defaultValue = '10') int pageSize, String keyword, Model model) {
PageInfo<SaleRecord> pageInfo = saleRecordService.getSaleRecords(pageNum, pageSize, keyword);
model.addAttribute('pageInfo', pageInfo);
model.addAttribute('keyword', keyword);
return 'saleRecords';
}
}
- 创建saleRecords.jsp页面
<%@ page language='java' contentType='text/html; charset=UTF-8' pageEncoding='UTF-8'%>
<!DOCTYPE html>
<html>
<head>
<meta charset='UTF-8'>
<title>销售记录展示</title>
</head>
<body>
<h1>销售记录展示</h1>
<form action='${pageContext.request.contextPath}/saleRecords' method='get'>
<input type='text' name='keyword' value='${keyword}' placeholder='请输入关键字'>
<input type='submit' value='查询'>
</form>
<table>
<tr>
<th>ID</th>
<th>用户ID</th>
<th>产品ID</th>
<th>客户ID</th>
<th>销售员ID</th>
<th>销售数量</th>
<th>销售日期</th>
</tr>
<c:forEach var='saleRecord' items='${pageInfo.list}'>
<tr>
<td>${saleRecord.id}</td>
<td>${saleRecord.userId}</td>
<td>${saleRecord.productId}</td>
<td>${saleRecord.customerId}</td>
<td>${saleRecord.salespersonId}</td>
<td>${saleRecord.quantity}</td>
<td>${saleRecord.saleDate}</td>
</tr>
</c:forEach>
</table>
<div>
<c:if test='${pageInfo.hasPreviousPage}'>
<a href='${pageContext.request.contextPath}/saleRecords?pageNum=${pageInfo.prePage}&pageSize=${pageInfo.pageSize}&keyword=${keyword}'>上一页</a>
</c:if>
<c:if test='${pageInfo.hasNextPage}'>
<a href='${pageContext.request.contextPath}/saleRecords?pageNum=${pageInfo.nextPage}&pageSize=${pageInfo.pageSize}&keyword=${keyword}'>下一页</a>
</c:if>
</div>
</body>
</html>
代码解析
以上示例代码实现了销售记录的展示、分页和模糊查询功能。
- 在SaleRecordController中,根据pageNum和pageSize调用SaleRecordService的getSaleRecords方法获取对应页码的销售记录数据,并将数据传递给saleRecords.jsp页面进行展示。
- 在saleRecords.jsp页面中,通过使用JSTL的forEach标签循环遍历销售记录数据,并使用PageInfo对象获取分页信息和生成上一页和下一页链接。
- 用户可以在查询框中输入关键字进行模糊查询。
总结
本文详细讲解了使用SSM框架和JSP技术实现销售记录展示功能,包括分页功能、模糊查询以及最近数据优先展示。代码示例涵盖实体类、DAO接口、Service接口、Controller类和JSP页面代码,方便开发者快速理解和实现类似功能。
建议
- 可根据实际需求对代码进行修改和扩展,例如添加其他查询条件、数据校验等功能。
- 建议使用数据库连接池、缓存等技术优化系统性能。
- 建议使用单元测试对代码进行测试,确保代码质量。
原文地址: https://www.cveoy.top/t/topic/hNTn 著作权归作者所有。请勿转载和采集!