功能预期:
前端通过搜索框输入,需要查询的书籍名的部分文字。
后端根据该段文字,到数据库模糊查询与该段文字相关书籍信息,通过列表返回。
实现环境:
若依框架、Mybatis Plus、MySQL
Controller层:
//根据书名分页查询
@ApiOperation("书名查询")
@GetMapping("/bookName/{bookName},{pageNum},{pageSize}")
public TableDataInfo selectBookNameList(@PathVariable("bookName") String bookName,@PathVariable("pageNum") Integer pageNum,@PathVariable("pageSize") Integer pageSize){
List<MsBookAuthorVo> msBookAuthorVos=iMsBookService.selectBookName(bookName,pageNum,pageSize);
return getDataTable(msBookAuthorVos);
}
service层:
//分页查询:书名
List<MsBookAuthorVo> selectBookName(String bookName,Integer pageNum,Integer pageSize);
serviceImpl实现类:
//分页查询:书名
@Override
public List<MsBookAuthorVo> selectBookName(String bookName,Integer pageNum,Integer pageSize) {
PageUtils.startPage(pageNum,pageSize);
List<MsBookAuthorVo> msBookAuthorVos=msBookMapper.selectBookName(bookName);
return msBookAuthorVos;
}
Mapper层:
//模糊、分页查询:书名
List<MsBookAuthorVo> selectBookName(String bookName);
Mapper.xml:
<resultMap id="bookListBybName" type="com.mashang.novel.domain.vo.MsBookAuthorVo">
<id property="bookId" column="bookId"></id>
<result property="bookName" column="bookName"></result>
<result property="synopsis" column="synopsis"></result>
<result property="authorId" column="authorId"></result>
<result property="authorName" column="authorName"></result>
</resultMap>
<select id="selectBookName" resultMap="bookListBybName">
SELECT
b.book_id AS bookId,
b.book_name AS bookName,
b.synopsis AS synopsis,
b.author_id AS authorId,
a.author_name AS authorName
FROM
ms_book AS b
LEFT JOIN ms_author AS a ON a.author_id = b.author_id
WHERE
b.book_name LIKE CONCAT(CONCAT('%',#{bookName}), '%')
</select>
总结:
controller层:只负责接收参数及调用Service接口方法,
serviceImpl实现类:则根据接收到的分页数据插入Mapper.xml的SQL语句尾部实现分页,为数据库节省查询资源。