mySql+Hibernate 单表上下级关系数据整理
来源:互联网 发布:亿赛通加密软件 编辑:程序博客网 时间:2024/05/26 02:55
table
id classname parent_id
1 服装 null
2 男装 1
3 女装 1
4 男裤 2
5 男上衣 2
…….
/** * 商品分类实体类 */@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)@Entity@Table(name = "wemall_goodsclass")public class GoodsClass extends IdEntity { private static final long serialVersionUID = 1L; //分类名称 private String className; //商品子分类 @OneToMany(mappedBy = "parent") @OrderBy("sequence asc") private List<GoodsClass> childs = new ArrayList<GoodsClass>(); //商品父类 @ManyToOne(fetch = FetchType.LAZY) private GoodsClass parent; private int sequence; //等级等级 private int level; .......省略其他字段以及get set方法@Autowired private IGoodsClassService goodsClassService; @RequestMapping({ "/user/goodsclass.htm" }) private void getGoodsClass(HttpServletRequest request, HttpServletResponse response) { Map<String, String> resultMap = new HashMap<>(); Map params = new HashMap(); params.put("display", Boolean.valueOf(true)); List<GoodsClass> gcs = this.goodsClassService.query( "select obj from GoodsClass obj where obj.parent.id is null and obj.display=:display order by obj.sequence asc", params, -1, -1); if (gcs.size() < 0) { resultMap.put("code", "102"); resultMap.put("msg", "查无数据"); writeResponse(response, resultMap); } else { stringify(response, gcs); } } /** * 把对象转换为json字符串 输出 * @param goodsClass 商品类型对象 */ private void stringify(HttpServletResponse response,List<GoodsClass> goodsClass) { // 商品 // ---> 商品子分类 // ---> 商品子分类 JSONArray list = new JSONArray(); for (GoodsClass firstGoodsClass : goodsClass) { // 迭代第一层商品类型 JSONObject firstMap = new JSONObject(); // 存储第一层商品类型 firstMap.put("id", firstGoodsClass.getId()); firstMap.put("className", firstGoodsClass.getClassName()); List<GoodsClass> sencondGoodsClassList = firstGoodsClass.getChilds(); // 获取第一层商品类型的子分类 JSONArray sencondList = new JSONArray(); for (GoodsClass sencondGoodsClass : sencondGoodsClassList) {// 迭代第一层子分类 JSONObject sencondMap = new JSONObject(); sencondMap.put("id", sencondGoodsClass.getId()); sencondMap.put("className", sencondGoodsClass.getClassName()); List<GoodsClass> thirdGoodsClassList = sencondGoodsClass.getChilds(); // 获取第二层子分类 JSONArray thirdList = new JSONArray(); for (GoodsClass thirdGoodsClass : thirdGoodsClassList) { // 迭代第二层子分类 JSONObject thirdMap = new JSONObject(); thirdMap.put("id", thirdGoodsClass.getId()); thirdMap.put("className", thirdGoodsClass.getClassName()); thirdList.add(thirdMap); // 将每个第二层的子分类存储到第二层子分类列表中 } sencondMap.put("childGoodsClass", thirdList); // 将第二层子分类列表存储在第一层子分类中 sencondList.add(sencondMap); // 将第一层子分类存储在第一层子分类列表 } firstMap.put("childGoodsClass", sencondList); // 将第二层子分类列表存储在第一层商品分类中 list.add(firstMap); } Gson gson = new Gson(); PrintWriter writer = getPrintWriter(response); writer.print(gson.toJson(list)); } /** * * @param response * @param map */ private void writeResponse(HttpServletResponse response, Map<String, String> map) { Gson gson = new Gson(); PrintWriter writer = getPrintWriter(response); writer.print(gson.toJson(map)); } private PrintWriter getPrintWriter(HttpServletResponse response) { response.setContentType("text/plain"); response.setHeader("Cache-Control", "no-cache"); response.setCharacterEncoding("UTF-8"); try { return response.getWriter(); } catch (IOException e) { e.printStackTrace(); } return null; }-----------------------------------------------分割线递归循环获取方法 @RequestMapping(value = "/DagTree") public void tree(HttpServletRequest request, HttpServletResponse response) throws Exception { Map params = HtmlUtil.getParameterMap(request); List<Map<String, Object>> lst = getCJtreeList(params); List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); Map kqgz_map = new HashMap(); kqgz_map.put("children", lst); kqgz_map.put("id", "-1"); kqgz_map.put("text", "库房结构树"); kqgz_map.put("state", "open"); kqgz_map.put("sfkf", "0"); list.add(kqgz_map); HtmlUtil.writerJson(response, list); } private List<Map<String, Object>> getCJtreeList(Map paramMap) throws Exception { List<Map<String, Object>> result = new ArrayList<Map<String, Object>>(); result = baseService.selectList("com.kq.dagl.dakgl.DAGL_DagTree", paramMap); List<Map<String, Object>> LIST_CJ = result; result = this.iteration("", LIST_CJ);//上级ID为0 表示最高级别 LIST_CJ = result; return LIST_CJ; }
阅读全文
0 0
- mySql+Hibernate 单表上下级关系数据整理
- 上下级关系
- Hibernate对同表中存在上下级关联关系的映射处理
- MySQL语句之or/in 对于上下级关系sql用法
- 中国城市数据 上下级关系 区号 邮编 entity by jpa
- Spread.js 上下级关系
- Hibernate 关系映射整理
- windowsAPI验证上下级证书关系
- 数据库处理用户上下级关系
- 根据tree绑定数据的上下级关系,实现无限制的分支等级[flex][arraycollection][tree]
- 拯救mysql单表数据
- Hibernate 关系映射 总结整理
- Hibernate 关系映射 总结整理
- Hibernate 关系映射 总结整理
- Hibernate 关系映射 总结整理
- Hibernate 关系映射 总结整理
- Hibernate 关系映射 总结整理
- Hibernate 关系映射 总结整理
- VS2017卸载相关
- npm link命令的作用浅析
- centos7 服务器开启防火墙
- EventBus的使用
- 拨号上网、ISDN、ADSL、光纤上网比较
- mySql+Hibernate 单表上下级关系数据整理
- Leetcode Combinations问题总结
- Sublime Text3 注册码
- Unity3d 游戏被强制暂停的判断与处理
- 邮件安全风险高发,公安部、工信部、国家保密局联发预警
- Mysqldump备份脚本for slave
- eclipse 中文乱码
- solr学习总结(一)
- APP升级测试