页面:
<script type="text/javascript" src="plugins/angularjs/angular.min.js"></script>
<script type="text/javascript" src="js/service/userService.js"></script>
<script type="text/javascript" src="js/controller/userController.js"></script>
<div class="item bo" ng-repeat="entity in list">
<!-- 去重 -->
<h3><a href="" ng-hide="list[$index].catOneName == list[$index+1].catOneName">{{entity.catOneName}}</a></h3>
<div class="item-list clearfix">
<div class="subitem">
<dl class="fore">
<!-- 去重 -->
<dt><a href="" ng-hide="list[$index].catTwoName == list[$index+1].catTwoName">{{entity.catTwoName}}</a></dt>
<dd><em><a href="">{{entity.catThreeName}}</a></em></dd>
</dl>
</div>
</div>
</div>
实体类:
public class TbItemCat implements Serializable{
private Long id;
private Long parentId;
private String name;
private Long typeId;
sql做自连接查询:
mapper.xml
<select id="selectAll" resultType="java.util.HashMap">
SELECT
cat1.`id` catOneId,cat1.`name` catOneName,cat1.`parent_id` parentIdOne,cat2.id catTwoId,cat2.`name` catTwoName,cat2.`parent_id` parentIdTwo,cat3.id catThreeId,cat3.`name` catThreeName,cat3.`parent_id` parentIdThree
FROM tb_item_cat cat1,tb_item_cat cat2,tb_item_cat cat3
WHERE cat1.`id`=cat2.`parent_id` AND cat2.id=cat3.`parent_id`
</select>
mapper接口:
List<Map<String,TbItemCat>> selectAll();
impl实现类:
@Override
public List<Map<String,TbItemCat>> selectAll() {
List<Map<String,TbItemCat>> selectAll = itemCatMapper.selectAll();
return selectAll;
}
controller控制层:
@RequestMapping("/findAll")
public List<Map<String,TbItemCat>> findAll(){
List<Map<String,TbItemCat>> selectAll = itemCatService.selectAll();
return selectAll;
}
contentController.js
app.controller("contentController",function($scope,contentService){
$scope.list = [];
$scope.findAll=function(){
contentService.findAll().success(function(response){
//将相应的数据放到list里面
$scope.list = response;
});
}
});
contentService.js
app.service("contentService",function($http){
this.findAll = function(){
return $http.get("content/findAll.do");
}
});
控制层获取的数据和数据库的数据一样,一条一条的用list集合接收,但是发现页面经过去重之后,数据不对,换了另一种思路
创建一级分类的实体类
public class TbItemCatOneExample implements Serializable {
private Long id;
private Long parentId;
private String name;
private Long typeId;
private List<TbItemCat> tbItemCats2;
创建二级分类的实体类
public class TbItemCatTwoExample implements Serializable{
private Long id;
private Long parentId;
private String name;
private Long typeId;
private List<TbItemCat> tbItemCats3;
创建三级分类实体类
public class TbItemCat implements Serializable{
private Long id;
private Long parentId;
private String name;
private Long typeId;
控制层controller
@RequestMapping("/findAll")
public List<TbItemCatOneExample> findAll(){
List<TbItemCatOneExample> selectAll = itemCatService.selectAll();
System.out.println(selectAll);
return selectAll;
}
service接口
/**
* 首页三级分类
* @return
*/
public List<TbItemCatOneExample> selectAll();
serviceImpl实现类
@Override
public List<TbItemCatOneExample> selectAll() {
//从库中获取的数据
List<TbItemCatOneExample> selectAll = itemCatMapper.selectAll();
return selectAll;
}
mapper接口
List<TbItemCatOneExample> selectAll();
mapper.xml
<resultMap id="BaseResultMap1" type="com.pinyougou.pojo.TbItemCatOneExample" >
<id column="catOneId" property="id" jdbcType="BIGINT" />
<result column="parentIdOne" property="parentId" jdbcType="BIGINT" />
<result column="catOneName" property="name" jdbcType="VARCHAR" />
<collection property="tbItemCats2" ofType="com.pinyougou.pojo.TbItemCatTwoExample" javaType="java.util.ArrayList">
<id column="catTwoId" property="id" jdbcType="BIGINT" />
<result column="parentIdTwo" property="parentId" jdbcType="BIGINT" />
<result column="catTwoName" property="name" jdbcType="VARCHAR" />
<collection property="tbItemCats3" ofType="com.pinyougou.pojo.TbItemCat" javaType="java.util.ArrayList">
<id column="catThreeId" property="id" jdbcType="BIGINT" />
<result column="parentIdThree" property="parentId" jdbcType="BIGINT" />
<result column="catThreeName" property="name" jdbcType="VARCHAR" />
</collection>
</collection>
</resultMap>
<select id="selectAll" resultMap="BaseResultMap1">
SELECT
cat1.`id` catOneId,cat1.`name` catOneName,cat1.`parent_id` parentIdOne,cat2.id catTwoId,cat2.`name` catTwoName,cat2.`parent_id` parentIdTwo,
cat3.id catThreeId,cat3.`name` catThreeName,cat3.`parent_id` parentIdThree
FROM tb_item_cat cat1,tb_item_cat cat2,tb_item_cat cat3
WHERE cat1.`id`=cat2.`parent_id` AND cat2.id=cat3.`parent_id`
</select>
在控制台获取到想要的数据了
但是页面展示发现angularjs不能再class中传递,需要修改样式,去除class,有点小尴尬
页面
<div ng-repeat="entity in list">
<h3><a href="" >{{entity.name}}</a></h3>
<div ng-repeat="cat2 in entity.tbItemCats2" >
<div >
<dl >
<dt><a href="" >{{cat2.name}}</a></dt>
<dd ng-repeat="cat3 in cat2.tbItemCats3"><em><a href="">{{cat3.name}}</a></em></dd>
</dl>
</div>
</div>
</div>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?