javaweb模糊查询的实现

该博客展示了如何在Java环境中使用Dao层、Service层以及Servlet实现分页查询。Dao层通过PreparedStatement执行SQL,根据传入的连接、条件、当前页数和页面大小获取User数据。Service层检查输入字符串是否为数字,然后调用Dao方法进行查询。Servlet层接收前端请求参数,计算分页信息,并调用Service方法获取用户列表,最后将结果传递到JSP页面显示。
摘要由CSDN通过智能技术生成

成果展示
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Dao层实现

public List<User> someUserList(Connection connection, String str, String number, int currentPage, int pageSize) throws SQLException {
        PreparedStatement pstm = null;
        ResultSet rs = null;
        int sum = currentPage*pageSize;
        List<User> userList = new ArrayList<>();

        if (connection != null){
            StringBuffer sql = new StringBuffer();
            sql.append("select * from chaindx_user where ");
            List<Object> list = new ArrayList<>();
            if (!StringUtils.isNullOrEmpty(str)){
                sql.append("userCode like ? || username like ?");
                list.add("%"+str+"%");
                list.add("%"+str+"%");
            }else if (!StringUtils.isNullOrEmpty(number)){
                sql.append("number like ?");
                list.add("%"+number+"%");
            }
            sql.append(" order by id limit ?,?");
            list.add(sum);
            list.add(pageSize);

            Object[] params =list.toArray();
            rs = BaseDao.execute(connection,pstm,rs,sql.toString(),params);
            while (rs.next()){
                User user = new User();
                user.setId(rs.getInt("id"));
                user.setUserCode(rs.getString("userCode"));
                user.setUsername(rs.getString("username"));
                user.setPassword(rs.getString("password"));
                user.setAge(rs.getInt("age"));
                user.setSex(rs.getString("sex"));
                user.setBirth(rs.getString("birth"));
                user.setNumber(rs.getInt("number"));
                user.setAddress(rs.getString("address"));
                userList.add(user);
            }
            BaseDao.closeResource(null,pstm,rs);
        }
        return userList;
    }

service层实现

public List<User> someList(String str, int currentPage, int pageSize) {
        boolean flag = false;
        String number = null;
        SysDao sysDao = new SysDaoImpl();
        Connection connection = null;
        List<User> userList = new ArrayList<>();

        for (int i = 0; i < str.length(); i++){
            if (!Character.isDigit(str.charAt(i))){
                flag = true;
                break;
            }
        }
        if (!flag){
            number = str;
            str = null;
        }
        try {
            connection = BaseDao.getConnection();
            userList = sysDao.someUserList(connection,str,number,currentPage,pageSize);
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        return userList;
    }

servlet层

public class PageServlet extends HttpServlet {
    @Override
    //分页
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        int currentPage = 0;
        String currentPage1 = req.getParameter("currentPage");
        String pageSize1 = req.getParameter("pageSize");
        String mohu = req.getParameter("mohu");

        if (!StringUtils.isNullOrEmpty(currentPage1)){
            currentPage = Integer.parseInt(currentPage1)-1;
        }


        SysService sysService = new SysServiceImpl();
        PageUtil pages = new PageUtil();

        if (!StringUtils.isNullOrEmpty(pageSize1)){
            int pageSize = Integer.parseInt(pageSize1);
            Constants.session = pageSize;
            if (pageSize<=0){
                pageSize = 1;
                Constants.session = 1;
            }
            pages.setPageSize(pageSize);
        }else {
            pages.setPageSize(Constants.session);
        }


        pages.setTotalCount(sysService.getTotalCount());

        if (currentPage<0){
            currentPage=0;
        }else if (currentPage>pages.getTotalPage()){
            currentPage = pages.getTotalPage();
        }
        pages.setCurrentPage(currentPage);

        //模糊查询
        if (!StringUtils.isNullOrEmpty(mohu)){
            Constants.session2 = mohu;
            if (!Constants.session2.equals("所有人")){
                List<User> userList = sysService.someList(mohu,currentPage,pages.getPageSize());
                pages.setUserList(userList);
            }else{
                List<User> userList = sysService.userList(currentPage,pages.getPageSize());
                pages.setUserList(userList);
            }
        }else if (Constants.session2.equals("所有人")){
            List<User> userList = sysService.userList(currentPage,pages.getPageSize());
            pages.setUserList(userList);
        }else {
            List<User> userList = sysService.someList(Constants.session2,currentPage,pages.getPageSize());
            pages.setUserList(userList);
        }

        req.setAttribute("pages",pages);
        req.setAttribute("Constants.session2",Constants.session2);
        req.getRequestDispatcher("jsp/select.jsp").forward(req,resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doPost(req, resp);
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值