全部查询和搜索模糊查询

全部查询和搜索模糊查询

全部查询和搜索模糊查询的复用,包括Mapper.xml 代码,Controller.java代码,和遇到的问题及解决方法。
  • Mapper.xml 代码:
	<!--查询全部Book-->
    <select id="queryAllBook" resultType="Books">
        select * from ssmbuild.books
    </select>

    <!--搜索查询书籍-->
    <select id="queryBookName" resultType="Books">

        <!--这个是对的,可以为null,也可以模糊查询,  上面的select全部可以省略-->
        <!--select * from ssmbuild.books where bookName like concat('%', #{bookName}, '%') or #{bookName} is null-->

        <!--这个是模糊查询,  上面的select全部要保留-->
        <!--select * from ssmbuild.books where 1=1 and bookName like concat('%', #{bookName}, '%')-->

        <!--这个最好,可以为null,也可以模糊查询,  最好上面的select不要省略-->
        select * from ssmbuild.books where 1=1
        <if  test="bookName != null">
            <!--and bookName = #{bookName} 这句是完整查询 -->
            and bookName like concat('%', #{bookName}, '%')
        </if>
    </select>
  • 可以做到复用Controller的代码,Controller.java:
	//查询全部书籍,返回到一个书籍展示页面
    @RequestMapping("/allBook")
    public String list(Model model){
//        List<Books> list = bookService.queryAllBook();
//        model.addAttribute("list",list);
//        return "allBook";

		//复用下面queryBook()的代码,用上面代码不复用也可
        return queryBook(null,model);  
        
    }

	//搜索查询书籍
    @RequestMapping("/queryBook")
    public String queryBook(String queryBookName,Model model){
        List<Books> booksList =  bookService.queryBookName(queryBookName);
        //System.out.println(queryBookName == null);   //结果为:false  
        
        /* 测试前端传来的是      “空的字符串”
           用 queryBookName.equals("") 判断
           《搞了好久才发现解决》
        */
        if ( queryBookName.equals("")){
            model.addAttribute("error","未查到");
            System.out.println("queryBookName:(" + queryBookName +")  =========== 未查到");
        }

        model.addAttribute("list",booksList);
        return "allBook";
    }
  • 遇到问题:给前端的参数 error ,在没有输入值时,显示“未查到”;有输入值时,还显示“未查到”。
  • 分析:用System.out.println(queryBookName == null); 测试queryBookName 是否为空?
    输出结果为:false
  • 说明:虽然前端输入栏中没有传入数据,但是给后台还是给出了一个“空字符串”。
  • 解决if ( queryBookName.equals("")) ,如果 queryBookName 为空,显示“未查到”。
	//System.out.println(queryBookName == null);   //结果为:false  
        
    /* 测试前端传来的是      “空的字符串”
       用 queryBookName.equals("") 判断
       《搞了好久才发现解决》
    */
    
     if ( queryBookName.equals("")){
         model.addAttribute("error","未查到");
         System.out.println("queryBookName:(" + queryBookName +")  ======== 未查到");
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值