DAO层
这里用到关联查询产品与产品标签表
通过@Param(Constants.WRAPPER) Wrapper wrapper
使用条件构造器
package com.myelephant.module.mall.dao;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.myelephant.module.mall.entity.MallProduct;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
/**
* 产品实例(MallProduct)表数据库访问层
*
* @author makejava
* @since 2020-11-25 11:56:12
*/
@Mapper
public interface MallProductDao extends BaseMapper<MallProduct> {
/**
* 分页查询标签商品集合
*
* @param page
* @param wrapper
* @return IPage<MallProduct>
*/
@Select("select p.id,p.`name`,p.type,p.info,p.info_rich,p.publish,p.seq,p.img_urls,p.video_url,p.keywords,p.sales,p.total_sales " +
"from mall_product p inner join mall_product_tag_prod tp " +
"on p.id = tp.prod_id ${ew.customSqlSegment} ")
IPage<MallProduct> pageJoinTagProds(Page<MallProduct> page, @Param(Constants.WRAPPER) Wrapper<MallProduct> wrapper);
}
Service
package com.myelephant.module.mall.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.myelephant.module.mall.entity.MallProduct;
/**
* 产品实例(MallProduct)表服务接口
*
* @author makejava
* @since 2020-11-25 11:56:13
*/
public interface MallProductService extends IService<MallProduct> {
/**
* 分页查询标签商品集合
*
* @param page
* @param wrapper
* @return IPage<MallProduct>
*/
IPage<MallProduct> pageJoinTagProds(Page<MallProduct> page, QueryWrapper<MallProduct> wrapper);
}
ServiceImpl
package com.myelephant.module.mall.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dandandog.framework.core.service.impl.BaseServiceImpl;
import com.myelephant.module.mall.dao.MallProductDao;
import com.myelephant.module.mall.entity.MallProduct;
import com.myelephant.module.mall.service.MallProductService;
import org.springframework.stereotype.Service;
/**
* 产品实例(MallProduct)表服务实现类
*
* @author makejava
* @since 2020-11-25 11:56:14
*/
@Service
public class MallProductServiceImpl extends BaseServiceImpl<MallProductDao, MallProduct> implements MallProductService {
/**
* 分页查询标签商品集合
*
* @param page
* @param wrapper
* @return IPage<MallProduct>
*/
@Override
public IPage<MallProduct> pageJoinTagProds(Page<MallProduct> page, QueryWrapper<MallProduct> wrapper) {
wrapper.eq("p.publish", "1");
wrapper.orderByAsc("p.seq");
return baseMapper.pageJoinTagProds(page, wrapper);
}
}
具体使用
根据tag_id筛选并且指定产品类型
QueryWrapper<MallProduct> wrapper = new QueryWrapper<>();
wrapper.eq("tp.tag_id", tagId);
List<ProductType> types = new ArrayList<>(10);
types.add(ProductType.V_PRODUCT);
types.add(ProductType.P_PRODUCT);
types.add(ProductType.C_PRODUCT);
wrapper.in("p.type", types);
IPage<MallProduct> iPage = mallProductService.pageJoinTagProds(new Page<>(page, size), wrapper);