mysql 模糊查询 查询条件为多个

模糊查询 查询条件为2个

一般写模糊查询。我们通过用一个字段用于模糊查询也就是 name Like CONCAT(’%, #{name}, ‘%’) ,这样比较简单 但是如果条件为两个或多个怎么办? 我们一步步来。以下是一个完整的例子
有一张表book 里面有两个字段 如book_name 和 author 我们现在根据这两个字段模糊查询

// 我们遵从mvc模式
// dao 层
// BookMapper.java 
    /**
     * @Title: listLikeBookNameOrAuthor
     * @Description: 根据书名或者作者模糊查询
     * @param bookName
     * @param author
     * @return: list
     * @throws
     * @author: zyy
     * @Date:  2021/2/22  14:02
     */
    List<Book> listLikeBookNameOrAuthor(String bookName, String author);

// serive接口
// IBookService.java
    /**
     * @Title: search
     * @Description: 根据书名或者作者模糊查询
     * @param searchText
     * @return: list
     * @throws
     * @author: zyy
     * @Date:  2021/2/22  14:04
     */
    List<BookResponseVO> search(String searchText);

// impl实现类
// BookServiceImpl.java 实现service接口
  @Override
    public List<BookResponseVO> search(String searchText) {
        return bookMapper.listLikeBookNameOrAuthor(searchText, searchText);
    }

// controller层
// BookController
    @GetMapping("/api/search/{searchText}")
    public List<BookResponseVO> search(@PathVariable("searchText") String searchText) {
        return bookService.search(searchText);
    }

需要注意的是,我在service层里面 只有一个参数,在dao层有两个参数,这是因为我们在进行查询的时候,只通过一个输入框输入需要查询的内容 ,这个查询内容可以是book_name 或者 author 都可以。

以下是BookMapper.xml
delete_flag 是一个删除标志。。为0表示未删除

       SELECT 
        book_name
        author
        FROM  book b
        WHERE b.book_name LIKE CONCAT('%',#{bookName},'%')
        OR b.author LIKE CONCAT('%',#{author},'%')
        AND delete_flag=0
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值