CategoryDao
1 //把一个map中的数据映射到category中 2 private Category toCategory(Map<String,Object> map) 3 { 4 5 Category category=CommonUtils.toBean(map, Category.class); 6 String pid=(String) map.get("pid"); 7 if(pid!=null) //如果父分类id不为空 8 { 9 Category parent=new Category(); 10 parent.setCid(pid); 11 category.setParent(parent); 12 } 13 return category; 14 15 } 16 17 //可以把多个Map<List<Map>> 映射成多个Category 18 private List<Category> toCategoryList(List<Map<String,Object>> mapList) 19 { 20 List<Category> categoryList=new ArrayList<Category>(); 21 for(Map<String,Object> map:mapList) 22 { 23 Category c=toCategory(map); 24 categoryList.add(c); 25 26 } 27 return categoryList; 28 29 } 30 //通过父分类查询子分类 31 public List<Category> findByparent(String pid) throws SQLException 32 { 33 34 String sql="select * from t_category where pid=?"; 35 List<Map<String,Object>> mapList=qr.query(sql, new MapListHandler(),pid); 36 return toCategoryList(mapList); 37 38 } 39
//得到所有一级分类的List 40 public List<Category> findAll() throws SQLException 41 { 42 /* 43 * 1、查询所有的一级分类 得到List<Category> 44 * 2、循环遍历每一个一级分类,为每个一级分类加载它的所有二级分类 } 45 * 3、返回所有的积极分类 46 */ 47 //1、查询所有的一级分类 48 String sql="select * from t_category where pid is null"; 49 //为防止丢掉pid 所以不用BeanListHandler 先把他放到一个Maplist中 50 List<Map<String,Object>> mapList=qr.query(sql, new MapListHandler()); 51 List<Category> parents=toCategoryList(mapList); 52 53 //2、循环遍历所有的一级分类 为每个一级分类加载他的所有的二级分类 54 55 for(Category parent:parents) 56 { 57 //查询出当前父分类的所有子分类 58 List<Category> children = findByparent(parent.getCid()); 59 parent.setChildren(children); 60 61 } 62 63 return parents; 64 65 }
前端的left.jsp用的js小工具加载 具体的看mymenu.js文件
1 <script type="text/javascript" src="<c:url value='/menu/mymenu.js'/>"></script> 2 <link rel="stylesheet" href="<c:url value='/menu/mymenu.css'/>" type="text/css" media="all"> 3 <link rel="stylesheet" type="text/css" href="<c:url value='/jsps/css/left.css'/>"> 4 <script language="javascript"> 5 /* 6 * 1. 对象名必须与第一个参数相同! 7 2. 第二个参数是显示在菜单上的大标题 8 */ 9 var bar = new Q6MenuBar("bar", "网上书城"); 10 $(function() { 11 bar.colorStyle = 4;//指定配色样式,一共0,1,2,3,4 12 bar.config.imgDir = "<c:url value='/menu/img/'/>";//小工具所需图片的路径 13 bar.config.radioButton=true;//是否排斥,多个一级分类是否排斥 14 15 /* 16 1. 程序设计:一级分类名称 17 2. Java Javascript:二级分类名称 18 3. /goods/jsps/book/list.jsp:点击二级分类后链接到的URL 19 4. body:链接的内容在哪个框架页中显示 20 */ 21 <c:forEach items="${parents}" var="parent"> 22 <c:forEach items="${parent.children}" var="child"> 23 bar.add("${parent.cname}", "${child.cname}", "/goods/jsps/book/list.jsp", "body"); 24 </c:forEach> 25 </c:forEach> 26 27 $("#menu").html(bar.toString()); 28 }); 29 30 </script>