实现了前端小程序搜索功能与后端数据库的完整连接,支持模糊查询所有书籍,包括:
接口地址: GET /api/book/search
请求参数:
keyword (必填): 搜索关键词page (可选): 页码,默认1size (可选): 每页数量,默认20响应示例:
{
"code": 200,
"message": "success",
"data": {
"list": [
{
"id": 1,
"title": "西游记",
"author": "吴承恩",
"cover": "https://example.com/cover.jpg",
"image": "https://example.com/image.jpg",
"brief": "简介",
"desc": "描述",
"introduction": "详细介绍"
}
],
"total": 100,
"page": 1,
"size": 20,
"totalPages": 5
}
}
接口地址: GET /api/book/popular-keywords
请求参数:
limit (可选): 返回数量,默认10响应示例:
{
"code": 200,
"message": "success",
"data": [
"西游记",
"三体",
"大侦探",
"窗边的小豆豆"
]
}
在 BookMapper.xml 中,使用 LIKE 语句实现模糊查询:
<if test="keyword != null and keyword != ''">
AND (title LIKE CONCAT('%', #{keyword}, '%')
OR author LIKE CONCAT('%', #{keyword}, '%')
OR brief LIKE CONCAT('%', #{keyword}, '%')
OR `desc` LIKE CONCAT('%', #{keyword}, '%'))
</if>
搜索范围:
查询特点:
新增了两个API函数:
// 搜索书籍
export function searchBooks(keyword, page = 1, size = 20)
// 获取热门搜索关键词
export function getPopularKeywords(limit = 10)
主要功能:
关键方法:
loadPopularSearches(): 加载热门搜索关键词searchBooks(keyword, page): 搜索书籍performSearch(keyword): 执行搜索loadMore(): 加载更多搜索结果searchBooks APIgetPopularKeywords APIGET /api/book/search?keyword=西游记&page=1&size=20
GET /api/book/search?keyword=吴承恩&page=1&size=20
GET /api/book/search?keyword=神魔&page=1&size=20
数据库索引:
title、author 字段有索引搜索结果缓存:
分页优化:
搜索建议:
搜索排序:
搜索筛选:
搜索统计:
搜索高亮:
搜索建议:
book/src/main/java/com/yu/book/controller/BookController.java - 添加搜索接口book/src/main/java/com/yu/book/service/BookService.java - 添加搜索方法和热门关键词方法book/src/main/resources/mapper/BookMapper.xml - 已支持模糊查询(无需修改)books/utils/api.js - 添加搜索API函数books/pages/search/search.vue - 更新搜索页面,调用真实API搜索关键词验证:
分页处理:
pageResult.list 获取数据列表pageResult.total 判断是否还有更多数据错误处理:
数据兼容性:
cover 和 image 字段的兼容性desc、brief、introduction 字段的兼容性