SSM+JSP实现销售记录展示,带分页功能、模糊查询

本文将介绍使用SSM框架和JSP技术实现销售记录展示功能,包含分页功能、模糊查询以及最近数据优先展示。以下将提供详细的代码示例,涵盖实体类、DAO接口、Service接口、Controller类和JSP页面。

功能需求

  1. 销售记录展示,带分页功能、模糊查询(产品、客户、区域、门店、日期)、最近的数据展示在第一条;
  2. 销售记录表(sale_record):
    • id(主键)
    • user_id(用户ID,外键)
    • product_id(产品ID,外键)
    • customer_id(客户ID,外键)
    • salesperson_id(销售员ID,外键)
    • quantity(销售数量)
    • sale_date(销售日期)

代码实现

  1. 创建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方法
}
  1. 创建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);
    }
}
  1. 创建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;
    }
}
  1. 创建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';
    }
}
  1. 创建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页面代码,方便开发者快速理解和实现类似功能。

建议

  • 可根据实际需求对代码进行修改和扩展,例如添加其他查询条件、数据校验等功能。
  • 建议使用数据库连接池、缓存等技术优化系统性能。
  • 建议使用单元测试对代码进行测试,确保代码质量。
SSM+JSP实现销售记录展示,带分页功能、模糊查询

原文地址: https://www.cveoy.top/t/topic/hNTn 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录