一.SPU 和 SKU:
二.属性分组:
1)获取属性分组:(模糊检索.分页)
a:分页 请求参数:
b:返回 JSON:
{
"msg": "success",
"code": 0,
"page": {
"totalCount": 0,
"pageSize": 2,
"totalPage": 0,
"currPage": 1,
"list": [
{
"attrGroupId": 1,
"attrGroupName": "信息",
"sort": 0,
"descript": "荣耀",
"icon": "https://mall-fire.oss-cn-shenzhen.aliyuncs.com/1.jpg",
"catelogId": 225
},
{
"attrGroupId": 2,
"attrGroupName": "基本信息",
"sort": 0,
"descript": "华为",
"icon": "https://mall-fire.oss-cn-shenzhen.aliyuncs.com/1.jpg",
"catelogId": 225
}
]
}
}
c:Controller 信息:
/**
* 列表
*/
@RequestMapping("/list/{catelogId}")
public R list(@RequestParam Map<String, Object> params, @PathVariable Long catelogId) {
PageUtils page = attrGroupService.queryPage(params, catelogId);
return R.ok().put("page", page);
}
d:service 实现:(拼接 QueryWrapper)(模糊检索)
@Override
public PageUtils queryPage(Map<String, Object> params, Long catelogId) {
if (catelogId == 0) {
IPage<AttrGroupEntity> page = this.page(
new Query<AttrGroupEntity>().getPage(params),
new QueryWrapper<AttrGroupEntity>());
return new PageUtils(page);
} else {
//构造 MybatisPlus 查询条件
String key = (String) params.get("key");
QueryWrapper<AttrGroupEntity> catelog_id = new QueryWrapper<AttrGroupEntity>().eq("catelog_id", catelogId);
//追加条件()
if (!(StringUtils.isEmpty(key))) {
catelog_id.and(attrGroupEntityQueryWrapper -> {
attrGroupEntityQueryWrapper.like("attr_group_id", key).or().like("attr_group_name", key);
});
}
//进行查询和分页
IPage<AttrGroupEntity> page = this.page(
new Query<AttrGroupEntity>().getPage(params),
catelog_id
);
//返回
return new PageUtils(page);
}
}
2)操作技巧:
a:在配置文件中 添加 日志,可以打印出 sql :
logging:
level:
com.guigu.gulimail: debug
b:MybatisPlus 可以进行 条件拼接:
//构造 MybatisPlus 查询条件
String key = (String) params.get("key");
QueryWrapper<AttrGroupEntity> catelog_id = new QueryWrapper<AttrGroupEntity>().eq("catelog_id", catelogId);
//追加条件()
if (!(StringUtils.isEmpty(key))) {
catelog_id.and(attrGroupEntityQueryWrapper -> {
attrGroupEntityQueryWrapper.like("attr_group_id", key).or().like("attr_group_name", key);
});
}
c:如果 接受条件 为 map,可用 postman 的 param 进行传参数:
@RequestMapping("/list/{catelogId}")
public R list(@RequestParam Map<String, Object> params, @PathVariable Long catelogId) {
}
d:bean 实体类里面:标注设置 (为空不显示 和 不是表字段)
/**
* 保存此菜单 所有子分类
*
* @TableField(exist = false) : 表示表中不包含 此字段
* @JsonInclude(value = JsonInclude.Include.NON_EMPTY) 字段不为空时候才返回
*/
@JsonInclude(value = JsonInclude.Include.NON_EMPTY)
@TableField(exist = false)
private List<CategoryEntity> children;
e:快速注解:(Lombok 包下)
@Slf4j
log.info("123");
三.Mybatis 分页(不显示总条数和总页数):
1)MybatisPlus 官网查询,分页操作方法:
//Spring boot方式
@EnableTransactionManagement
@Configuration
@MapperScan("com.guigu.gulimail.product.dao")
public class MybatisPlusConfig {
// 旧版
@Bean
public PaginationInterceptor paginationInterceptor() {
PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
// 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求 默认false
// paginationInterceptor.setOverflow(false);
// 设置最大单页限制数量,默认 500 条,-1 不受限制
// paginationInterceptor.setLimit(500);
// 开启 count 的 join 优化,只针对部分 left join
paginationInterceptor.setCountSqlParser(new JsqlParserCountOptimize(true));
return paginationInterceptor;
}
// 最新版
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.H2));
return interceptor;
}
}
2)发送 请求信息:(要第1页,每页五条数据)
3)更改完之后,返回 分页 JSON 为:
{
"msg": "success",
"code": 0,
"page": {
"totalCount": 2,
"pageSize": 5,
"totalPage": 1,
"currPage": 1,
"list": [
{
"attrGroupId": 1,
"attrGroupName": "信息",
"sort": 0,
"descript": "荣耀",
"icon": "https://mall-fire.oss-cn-shenzhen.aliyuncs.com/1.jpg",
"catelogId": 225,
"catelogPath": null
}
]
}
}