模糊查询 - 使用StringBuilder类追加字符串扩展SQL语句

前段时间自己在做项目,在模糊查询的时候遇到一些问题,后面参考了一下别人的做法,再按自己的做法整理了一下。

在这里,模糊查询主要用到的是StringBuilder类追加字符串长度。通过前端界面搜索框输入对应的内容进行模糊查询。

sellLikeBookForm.java

public StringBuilder getSql() {

        private int sid;
        private String bookname;
        private String author;
    
        public int getSid() {
            return sid;
        }
        public void setSid(int sid) {
            this.sid = sid;
        }
        public String getBookname() {
            return bookname;
        }
        public void setBookname(String bookname) {
            this.bookname = bookname;
        }
        public String getAuthor() {
            return author;
        }
        public void setAuthor(String author) {
            this.author = author;
        }

        public StringBuilder getSql() {
            //给出sql模板, 为了便于后面添加sql语句
            StringBuilder sql = new StringBuilder("select * from book where 1=1");
            if(StringUtils.isNotBlank(bookname)) {
                sql.append(" and bookname like ? ");
            }
            if(StringUtils.isNotBlank(author)) {
                sql.append(" and author like ? ");
            }
            return sql;
        }
        
        public List<Object> getList(){
            //给出parameter
            List<Object> objs = new ArrayList<>();
            if(StringUtils.isNotBlank(bookname)) {
                objs.add("%"+bookname+"%");
            }
            if(StringUtils.isNotBlank(author)) {
                objs.add("%"+author+"%");
            }
            return objs;

        }
}

SellShowByPageServlet.java

public class SellShowByPageServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //设置字符集
        request.setCharacterEncoding("UTF-8");
        //获取登录标记
        int sid = (int) request.getSession().getAttribute("sid");        
        //业务逻辑层对象    
        SellBookService sellBookService = new SellBookServiceImpl();
        //构造查询的结果所存储的对象
        List<SellBook> books = null;
        //模糊查询 
        //获取查询的内容 
        String bookname = request.getParameter("bookname"); 
        String author = request.getParameter("author");
        SellLikeBookForm sellLikeBookForm = new SellLikeBookForm(); 
        sellLikeBookForm.setBookname = bookname; 
        sellLikeBookForm.setAuthor = author; 
        StringBuilder sql = sellLikeBookForm.getSql();
        List<Object> objs = sellLikeBookForm.getList();
        //获取对应销售商的列表信息
        sql.append(" and sid = ? ");
        objs.add(sid);        
        //查询图书
        books = sellBookService.selectBook(sql, objs);         
        request.setAttribute("sellLikeBookForm", sellLikeBookForm);
        //存入pagebean
        request.setAttribute("pageBean", pageBean);
        request.getRequestDispatcher("/WEB-INF/selljsp/SellBookInfo.jsp").forward(request, response);
    }
}

前端界面举例:
简单前端界面示例

猜你喜欢

转载自blog.csdn.net/weixin_43968842/article/details/86605709
今日推荐