mysql 模糊查询 查询条件为多个
程序员文章站
2022-03-11 18:41:29
...
模糊查询 查询条件为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
上一篇: ibatis 查询返回列数 不确定
下一篇: php date函数怎么用