流程分析 :
接口开发:
模糊查询
sql:(productMapper)
/**
* 根据关键字模糊搜索商品信息
* @param keyword
* @param start
* @param limit
* @return
*/
public List<ProductVO> selectProductByKeyword(@Param("kw") String keyword,
@Param("start") int start,
@Param("limit") int limit);
映射文件:
<select id="selectProductByKeyword" resultMap="ProductVOMap2">
select product_id,
product_name,
category_id,
root_category_id,
sold_num,
product_status,
content,
create_time,
update_time
from product
where product_name like #{kw}
limit #{start},#{limit}
</select>
service实现:
public R searchProduct(String kw,int pageNum,int limit);
@Override
public R searchProduct(String kw, int pageNum, int limit) {
//1.查询搜索结果
kw = "%"+kw+"%";
int start = (pageNum - 1)*limit;
List<ProductVO> productVOS = productMapper.selectProductByKeyword(kw, start, limit);
//2.查询总记录数
Example example = new Example(Product.class);
Example.Criteria criteria = example.createCriteria();
criteria.andLike("productName",kw);
int count = productMapper.selectCountByExample(example);
//3.计算总记录数
int pageCount = count%limit==0? count/limit:count/limit+1;
//4.封装,返回数据
PageHelper<ProductVO> pageHelper = new PageHelper<>(count,pageCount,productVOS);
R r = new R(ResStatus.OK,"success",pageHelper);
return r;
}
controller实现:
//根据关键字查询商品接口
@GetMapping("/listbykeyword")
public R searchProducts(String keyword,int pageNum,int pageSize){
return productService.searchProduct(keyword, pageNum, pageSize);
}
根据关键字查询对应商品的品牌:
sql:
数据库实现:productMapper:
/**
* 根据搜索关键字查询相关商品的品牌列表
* @param kw
* @return
*/
public List<String> selectBrandByKeyword(String kw);
映射文件:
<select id="selectBrandByKeyword" resultSets="java.util.List" resultType="String">
select Distinct brand
from product_params
where product_id in (
select product_id
from product
where product_name like #{kw}
)
</select>
service实现:
public R listBrandsByKeyword(String kw);
@Override
public R listBrandsByKeyword(String kw) {
kw = "%"+kw+"%";
List<String> strings = productMapper.selectBrandByKeyword(kw);
return new R(ResStatus.OK,"success",strings);
}
controller实现:
//根据关键字查询商品品牌接口
@GetMapping("/listbrandsByKeyword")
public R getBrandsByKeyword(String keyword){
return productService.listBrandsByKeyword(keyword);
}