ztree的三级菜单动态加载(SpringMVC+MyBatis)

//1.页面树配置
var setting = {
		data : {
			simpleData : {
				enable : true,
				idKey : "id", // id编号命名   
				pIdKey : "pId", // 父id编号命名      
			}
		},
		async : {
			enable : true,
			url : "/loadCatalogTree",
			autoParam : [ "id" ]
		},
		callback:{
			beforeClick:function(treeId, treeNode, clickFlag){
			},
			onClick:function(treeId, name, treeNode){
				if(treeNode.level == 2){
					var id = treeNode.id;
					$("#catalogId").val(id);
					$.post( "/queryProductById",{"id":id},function(data){
							var body =  $("#tbody");
						 	body.html(data);
					   }

					);
				}
			}
		}
	};
	var zNodes;  
	$(function(){
		if(!zNodes){
			$.ajax({
			   type: "POST",
			   url: "/loadCatalogTree",
			   success: function(data){
				   $(document).ready(function(){  
				         $.fn.zTree.init($("#user_tree"), setting, zNodes);  
				   });  
			   }
			});
		}
	});

                //2.ul
                 <div class="zTreeDemoBackground left">
   			 <ul id="user_tree" class="ztree" 
   			 	style="border: 1px solid #617775;overflow-y: scroll;height: 300px;">
   			 </ul>
 		 </div>

 

//3.Controller

/**
	 * 根据前台传过来的id查询出对应的商品数据
	 * @return
	 */
	@RequestMapping("queryProductById")
	public String queryProductById(@ModelAttribute("qo") ProductQueryObject qo,
			Model model, Long id) {
		// 商品数据
		qo.setCatalogId(id);
		PageResult pageResult = productService.query(qo);
		model.addAttribute("pageResult", pageResult);
		//查询所有
		return "product/product_result";
	}
/**
	 *刷新页面时加载所有的一级菜单
	 * @return
	 */
	@RequestMapping("loadCatalogTree")
	@ResponseBody
	public List<CatalogVO> loadCatalogTree(Long id,Model model){
		//刷新页面先加载所有的父类菜单
		List<CatalogVO> list = catalogService.loadMenuByPid(id);
		return list;
	}

//Service
// 一开始加载所有的父类
	public List<CatalogVO> loadMenuByPid(Long id) {
		List<Catalog> menus = catalogMapper.loadMenuByPid(id);
		List<CatalogVO> voList = new ArrayList<>();
		for (Catalog c : menus) {
			CatalogVO vo = new CatalogVO();
			vo.setId(c.getId());
			vo.setLevel(c.getLevel());
			vo.setCode(c.getCode());
			vo.setName(c.getName());
			vo.setIsParent(true);
			vo.setpId(c.getParentCatalogId() == null ? -1 : c
					.getParentCatalogId());
			voList.add(vo);
		}
		return voList;
	}

//高级查询及分页
	@Override
	public PageResult query(ProductQueryObject qo) {
		int count = productMapper.queryForCount(qo);
		if (count == 0) {
			return PageResult.empty(1);
		} else {
			List<Product> listData = productMapper.query(qo);
			return new PageResult(listData, count, qo.getPage(), qo.getPageSize());
		}
	}

//qo对象查询

public class ProductQueryObject extends QueryObject {
	
	//名称关键字
	private String likeName;
	//商品创建开始时间
	private Date startCreatedDate;
	//商品创建截止时间
	private Date endCreatedDate;
	//商品上架下架状态
	private int state = -1;
	
	private Long catalogId= -1L;
	
	private Long brandId= -1L;
	
	@DateTimeFormat(pattern = "yyyy-MM-dd")
	public void setStartCreatedDate(Date startCreatedDate) {
		this.startCreatedDate = startCreatedDate;
	}

	@DateTimeFormat(pattern = "yyyy-MM-dd")
	public void setEndCreatedDate(Date endCreatedDate) {
		this.endCreatedDate = endCreatedDate;
	}

//mapper文件配置

<select id="queryForCount" resultType="int">
  	select count(p.id) from product p
  	<include refid="BaseWhere"/>
  </select>
  <select id="query" resultMap="BaseResultMap">
  	select p.id, p.catalogId, p.brandId, p.createTime, p.name, p.sn, p.image, p.marketPrice, p.basePrice, 
    p.shelve, p.recommend, p.keyword, p.state, p.recycle
    from product p
  	<include refid="BaseWhere"/>
  </select>

 <sql id="BaseWhere">
  	<where>
	  	<if test="likeName!=null">
  			and p.name like concat('%',#{likeName,jdbcType=VARCHAR},'%')
  		</if>
	  	<if test="startCreatedDate!=null">
  			and p.createTime >= #{startCreatedDate}
  		</if>
	  	<if test="endCreatedDate!=null">
  			and p.createTime <= #{endCreatedDate}
  		</if>
	  	<if test="state!=-1">
  			and p.state = #{state,jdbcType=INTEGER}
  		</if>
  	</where>
  </sql>

//Catalog接口方法
/**
	 * 一开始加载所有的父类
	 * @param id
	 * @return
	 */
	List<Catalog> loadMenuByPid(@Param("id")Long id);

//Catalog.xml文件配置
 <!-- 父分类菜单的加载 -->
  <select id="loadMenuByPid" resultMap="BaseResultMap">
	select id, version, name, createTime, lastModifiedTime, level, code, sequence, childrenCatalogs, 
    products, parentCatalogId,visible,catalogImg,state
  	from catalog 
  	<choose>
  		<when test="id == null">
  			where parentCatalogId is null
  		</when>
  		<otherwise>
  			where parentCatalogId = #{id}
  		</otherwise>
  	</choose>
  </select>



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值