8.商品类目显示

1.我们先来理清一下思路。那就是我们如果要把所有的商品类目显示出来,我们需要怎么做?首先,当我们点击显示菜单时,就会通过URL来调用对应的方法,这时候应该有一个默认值,默认值可以把所有的菜单全部都显示出来。然后我们需要怎么才能查出所有的子级菜单呢?因为最上面的父菜单的父ID默认为0,所以通过这个查下去,然后递归的查询,直到没有为止。

2.当然,这又需要和数据库进行交互,我们首先要完成dubbo的代码。我们是通过父ID来查询出所有的子ID。下面给出dubbo的service代码和其实现的代码。

public interface TbItemCatDubboService {
	/**
	 * 根据父类目ID,,查询所有的子类目
	 */
	List<TbItemCat> show(long pid);
}

 

public class TbItemCatDubboServiceImpl implements TbItemCatDubboService{
	@Resource
	private TbItemCatMapper tbItemCatMapper;//调用mapper
	//根据父ID查询出所有的子ID
        @Override
	public List<TbItemCat> show(long pid) {
		// TODO Auto-generated method stub
                //实例化一个条件
		TbItemCatExample example=new TbItemCatExample();
                //设置这个条件,也就是ParentIdequalTo(pid),父Id等于pid的
		example.createCriteria().andParentIdEqualTo(pid);
		//返回根据条件查询的结果
		return tbItemCatMapper.selectByExample(example);
	}

}

 

3.接下来我们需要在配置文件中把这个dubbo服务注册一下。

<!-- 商品类目服务 -->
	<dubbo:service interface="com.ego.dubbo.service.TbItemCatDubboService" ref="tbItemCatDubboServiceImpl"></dubbo:service>
	<bean id="tbItemCatDubboServiceImpl" class="com.ego.dubbo.service.impl.TbItemCatDubboServiceImpl"></bean>
	<import resource="../../applicationContext.xml"/>

4.然后我们需要在manager项目中写对应的代码来实现上述功能。在用到数据库方面只需要调用dubbo的代码就可以了。我们还需要思考一个问题,那就是dubbo里面返回的是一个List<TbItemCat>,但是我们这里用到的是什么呢?我们想象一下,一个餐单,我们需要显示的应该只是它的名字,然后我们要知道它什么时候就没有子菜单了,这里需要一个状态,然后就是pid了。所以我们考虑建立一个实体类来放这些东西。然后把这个实体类作为manager项目里面菜单服务的返回值。在Commons里面建立pojo代码如下:

public class EasyUiTree {
	private long id;      //父ID
	private String text;  //名字
	private String state; //状态
	public long getId() {
		return id;
	}
	public void setId(long id) {
		this.id = id;
	}
	public String getText() {
		return text;
	}
	public void setText(String text) {
		this.text = text;
	}
	public String getState() {
		return state;
	}
	public void setState(String state) {
		this.state = state;
	}
}

5.接下来我们来写manager里面的服务及其实现代码。也是根据父ID来进行查询,然后返回的就不是像Dubbo里面的一串TbItemCat了,而是里面的每个TbItemCat的部分状态。

public interface TbItemCatService {
	/**
	 * 根据父菜单ID显示所有子菜单,返回值为EasyUITree
	 * 
	 */
	List<EasyUiTree> show(long pid);
}
@Service
public class TbItemCatServiceImpl implements TbItemCatService{
	@Reference
	private TbItemCatDubboService tbItemCatDubboServiceImpl;
	@Override
	public List<EasyUiTree> show(long pid) {
                //查询出该pid所有的子类目
		List<TbItemCat> list=tbItemCatDubboServiceImpl.show(pid);
                //建立一个List<EasyUITree>,作为返回值的容器
		List<EasyUiTree> listTree=new ArrayList<>();
                //遍历得到我们要的List<EasyUiTree>
		for(TbItemCat cat:list) {
			EasyUiTree tree=new EasyUiTree();
			tree.setId(cat.getId());
			tree.setText(cat.getName());
			tree.setState(cat.getIsParent()?"closed":"open");
			listTree.add(tree);
			}
		return listTree;
	}

}

 

6.最后我们把控制器方法写好就可以了。


@Controller
public class TbItemCatController {
	@Resource
	private TbItemCatService tbItemCatServiceImpl;

	@RequestMapping("item/cat/list")
	@ResponseBody
	public List<EasyUiTree> showCat(@RequestParam(defaultValue = "0") long id) {
		return tbItemCatServiceImpl.show(id);
	}
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值