1.规格参数新增与vo
在查询全部的时候如果带了key值,我们也应该把key带上模糊查询
修改queryPage方法
//分页查询,需要匹配key的模糊查询 @Override public PageUtils queryPage(Map<String, Object> params, Long catlogId) { String key= (String) params.get("key"); QueryWrapper<AttrGroupEntity> wrapper = new QueryWrapper<AttrGroupEntity>(); if(!StringUtils.isEmpty(key)){ wrapper.and((obj)->{ obj.eq("attr_group_id",key).or().like("attr_group_name",key); }); } if(catlogId==0){ IPage<AttrGroupEntity> page = this.page(new Query<AttrGroupEntity>().getPage(params), wrapper); return new PageUtils(page); }else{ wrapper.eq("catelog_id",catlogId);//有id的时候才判断是否相等 IPage<AttrGroupEntity> page = this.page(new Query<AttrGroupEntity>().getPage(params), wrapper); return new PageUtils(page); } }
2.vo值对象:用于业务层之间的数据传递,用new关键字创建,由gc回收
在这里其实也可以叫view Object:视图对象,之前我们在实体类上添加了很多注解:例如JsonInclude,TableField这样的操作是不规范的
vo以后的作用就是:1.接收页面传递来的数据,封装对象 2.将业务处理完成的对象,封装成页面需要使用的工具
不需要任何与数据库相关的注解
Request URL: http://localhost:88/api/product/attr/save,现在的情况是,它在保存的时候,只是保存了attr,并没有保存attrgroup,为了解决这个问题,我们新建了一个vo/AttrVo.java
@Data public class AttrVo implements Serializable { private static final long serialVersionUID = 1L; /** * 属性id */ private Long attrId; /** * 属性名 */ private String attrName; /** * 是否需要检索[0-不需要,1-需要] */ private Integer searchType; /** * 属性图标 */ private String icon; /** * 可选值列表[用逗号分隔] */ private String valueSelect; /** * 属性类型[0-销售属性,1-基本属性 */ private Integer attrType; /** * 启用状态[0 - 禁用,1 - 启用] */ private Long enable; /** * 所属分类 */ private Long catelogId; /** * 快速展示【是否展示在介绍上;0-否 1-是】,在sku中仍然可以调整 */ private Integer showDesc; //分组的id private Long attrGroupId; }
3.修改attrController的save方法
改为使用Vo对象
@RequestMapping("/save") //@RequiresPermissions("product:attr:save") public R save(@RequestBody AttrVo attr){ attrService.saveAttr(attr); return R.ok(); }
实现的方法
@Override @Transactional//事务原子性 public void saveAttr(AttrVo attr) { AttrEntity attrEntity = new AttrEntity();//这是一个po持久对象用于保存数据库信息 BeanUtils.copyProperties(attr,attrEntity);//使用BeanUtils拷贝属性,两者属性名必须一一对应 this.save(attrEntity);//保存基本数据 //保存关联关系 AttrAttrgroupRelationEntity entity = new AttrAttrgroupRelationEntity(); entity.setAttrGroupId(attr.getAttrGroupId()); entity.setAttrId(attrEntity.getAttrId()); relationService.save(entity);//最好是注入service }
这样在保存规格参数的时候就可以关联表一起保存了
4.规格参数列表