ext springmvc mysql_基于ExtJs6前台,SpringMVC-Spring-Mybatis,resteasy,mysql无限极表设计,实现树状展示数据(treepanel)...

先从后台讲起

1.表的设计

20180111002230878367.png

2.mysql查询很容易,关键是要把id,text,parentId查出来

/p>

"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

SELECT

bp.id,

bb.`name` brandName,

bp.`name` text,

bp.photo_url photoUrl,

bp.number,

bp.add_time addTime,

bp.modify_time modifyTime,

bp.parent_id parentId,

bp.photo_number photoNumber,

bp.`description`,

bp.`condition`,

bp.specification,

bp.version_name versionName

FROM

bs_photo bp INNER JOIN bs_brand bb ON bp.brand_id = bb.id

3.dao层

packagecom.xgt.dao.bs;importcom.xgt.bean.bs.PhotoBean;importcom.xgt.dao.entity.bs.Photo;importorg.jboss.resteasy.annotations.Query;importorg.mybatis.spring.SqlSessionTemplate;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.beans.factory.annotation.Qualifier;importorg.springframework.stereotype.Repository;importjava.util.List;/*** Created by Administrator on 2017/8/21.*/@Repositorypublic classPhotoDao {

@Autowired

@Qualifier("sqlSession")privateSqlSessionTemplate sqlSession;public ListqueryPhoto(PhotoBean photoBean){return sqlSession.selectList("bs.photo.queryPhoto",photoBean);

}

}

4.service逻辑层

关键逻辑在buildPhoto方法和getChildren方法,这里用了lamda表达式,lamda表达式可以参考我的博客:http://www.cnblogs.com/Java-Starter/p/7424229.html

packagecom.xgt.service.bs;importcom.xgt.bean.bs.PhotoBean;importcom.xgt.dao.bs.PhotoDao;importcom.xgt.dao.entity.bs.Brand;importcom.xgt.dao.entity.bs.Photo;importorg.apache.commons.collections.map.HashedMap;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.stereotype.Service;importjava.util.ArrayList;importjava.util.List;importjava.util.Map;/*** Created by Administrator on 2017/8/21.*/@Servicepublic classPhotoService {

@AutowiredprivatePhotoDao photoDao;private ListphotoList;public ListqueryPhotoArborescence(PhotoBean photoBean){

photoList=photoDao.queryPhoto(photoBean);returnbuildPhoto();

}/*** 构建资源数

*@returnlist*/

public ListbuildPhoto() {

List target = new ArrayList<>();if (!photoList.isEmpty()) {//根元素

photoList.stream().filter(photo -> photo.getParentId() == 0).forEach(photo -> { //根元素

List children =getChildren(photo);

photo.setChildren(children);

target.add(photo);

});

}returntarget;

}private ListgetChildren(Photo photo) {

List children = new ArrayList<>();if (!photoList.isEmpty()) {

photoList.stream().filter(child-> photo.getId().equals(child.getParentId())).forEach(child ->{

List tmp =getChildren(child);

child.setChildren(tmp);if(tmp.isEmpty()) {

child.setLeaf(true);

}

children.add(child);

});

}returnchildren;

}

}

5.Controller层

没什么操作

packagecom.xgt.controller;importcom.xgt.bean.bs.BrandBean;importcom.xgt.bean.bs.PhotoBean;importcom.xgt.common.BaseController;importcom.xgt.common.PcsResult;importcom.xgt.dao.entity.bs.Photo;importcom.xgt.exception.EnumPcsServiceError;importcom.xgt.service.bs.PhotoService;importorg.apache.shiro.authz.annotation.RequiresPermissions;importorg.jboss.resteasy.annotations.Form;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.stereotype.Controller;import javax.ws.rs.*;importjavax.ws.rs.core.MediaType;importjava.util.List;importjava.util.Map;/*** Created by Administrator on 2017/8/28.*/@Controller

@Path("/photo")public class PhotoController extendsBaseController{

@AutowiredprivatePhotoService photoService;/*** 遍历商品树状结构

*@paramaccessToken

*@paramkeyWord

*@return

*/@GET

@Path("/queryPhotoArborescence")

@Produces(MediaType.APPLICATION_JSON)public PcsResult queryPhotoArborescence(@QueryParam("keyWord") String keyWord) {

PhotoBean photoBean= newPhotoBean();

photoBean.setKeyWord(keyWord);

List list =photoService.queryPhotoArborescence(photoBean);if(list.size()==0){return newResult(false);

}return newResult(true).setData(list);

}}

前台部分

1.model层

数据声明,便于查看有哪些数据,少一些数据不设置也可以

/**

* Created by C on 2017/08/05.*/Ext.define(‘Admin.model.photoArborescence.PhotoArborescence‘, {

extend:‘Admin.model.Base‘,

idProperty:‘id‘,

fields: [

{name:‘id‘, type: ‘int‘},

{name:‘name‘, type: ‘string‘},

{name:‘parentId‘, type: ‘int‘}

]

});

2.store层

和后台连接的桥梁

/**

* Created by Cjy on 2017/08/05.*/Ext.define(‘Admin.store.photoArborescence.PhotoArborescence‘, {

extend:‘Ext.data.TreeStore‘,

requires: [‘Common.Config‘],

storeId:‘photoArborescence.PhotoArborescence‘,

root: {

id:0,

text:‘效果图‘},

proxy: {

type:‘ajax‘,

api: {

read: Common.Config.requestPath(‘Photo‘, ‘queryPhotoArborescence‘)

},

reader: {

type:‘json‘,

rootProperty:‘data‘}

}

});

3.View层

/**

* Created by Cjy on 2017/5/23.*/Ext.define(‘Admin.view.photoArborescence.PhotoArborescence‘, {

extend:‘Ext.container.Container‘,

xtype:‘photoArborescence‘,

requires: [‘Ext.tree.Panel‘,‘Admin.view.photoArborescence.PhotoArborescenceController‘],

controller:‘photoArborescence‘,

layout:‘fit‘,

listeners: {

beforerender:‘pictureBeforeRender‘},

defaults: {

height:‘100%‘},

autoHeight :true,//自动高度,默认false

animate : true,//展开动画

enableDrag : true,//是否可以拖动(效果上)

enableDD : true,//不进可以拖动,还可以改变节点层次结构

enableDrop : false,//仅仅drop

rootVisible : true,//是否显示根节点,默认true

height : 150,

items: [{

title:‘自主报价管理‘,

xtype:‘treepanel‘,

reference:‘photoTree‘,

valueField:‘name‘,

useArrows:true,

autoScroll:true,

height:1150,

store:‘photoArborescence.PhotoArborescence‘}]

});

4.Controller层

js动作,执行前加载

/**

* Created by Cjy on 2017/5/23.*/Ext.define(‘Admin.view.photoArborescence.PhotoArborescenceController‘, {

extend:‘Admin.view.BaseViewController‘,

alias:‘controller.photoArborescence‘,/**

* 界面 渲染的时候加载 菜单 tree*/pictureBeforeRender:function() {var store = this.lookupReference(‘photoTree‘).getStore();

console.log(store);

store.getRoot().set(‘expanded‘, true);

store.load();

}

});

结果

20180111002230889110.png

原文:http://www.cnblogs.com/Java-Starter/p/7454548.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/397576.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php说明代码怎么写,代码怎么写 - 起步 - PHP基础 - KK的小故事

起步 - 代码怎么写 作者&#xff1a;KK发表日期&#xff1a;2016.3.9要写PHP代码就需要建立.php后缀的文件,并且在文件里要以<?php 具体代码 ?>这样的形式来书写PHP代码我们在网站目录下新建一个叫index.php的文件,并在里面编写这样的代码:echo Hello World!;?>然后…

python中的计算符号

1、算数计算符号&#xff1a; - * /   //&#xff08;取整&#xff09;  %&#xff08;取余&#xff09;  **&#xff08;次方&#xff09; 1 >>> 682 143 >>> 9-34 65 >>> 3*46 127 >>> 16/28 8.09 >>> 9/2 10 4.5 11 >…

MySQL 索引优化全攻略

2019独角兽企业重金招聘Python工程师标准>>> 所谓索引就是为特定的mysql字段进行一些特定的算法排序,比如二叉树的算法和哈希算法,哈希算法是通过建立特征值,然后根据特征值来快速查找。而用的最多,并且是mysql默认的就是二叉树算法 BTREE,通过BTREE算法建立索引的字…

MyEclipse 14 设置文件特定的打开方式

2019独角兽企业重金招聘Python工程师标准>>> 打开windows -> preferences&#xff1b; 转载于:https://my.oschina.net/AaronDMC/blog/755481

安装安全狗后php5.5无法访问,关于安全狗的详细介绍

这篇文章主要介绍了win2008 R2安装网站安全狗提示HTTP 错误 500.21的解决方法,需要的朋友可以参考下WINDOWS 2008 R2系统IIS7.5&#xff0c;在没安装网站安全狗前一切正常&#xff0c;安装网站安全狗3.3版后&#xff0c;有部分php网站无法访问。提示如下错误&#xff1a;HTTP 错…

Android 里的数据储存

数据持久化关于数据储存,这个话题已经被反复讨论过很多次了,我是不建议把网络存储这种方式纳入到数据储存的范围的,因为这个和Android没多少关系,因此就有如下的分类: 本地储存(也称之为数据持久化,包含文件储存,SharedPreferences,SQLite储存和ContentProvider(内容提供者)) 内…

[故障解决]Mysql爆出ERROR 1044 (42000)的错误怎么办?

情况如图&#xff0c;使用dvlopenhls可以登陆到这个host&#xff0c;并且可以查看里面的tables&#xff0c;但是使用tables其中的op_flow就会报错&#xff0c;查看了很多地方&#xff0c;有人说要改密码&#xff0c;有人说要grant给权限。五花八门&#xff0c;乱七八糟。其实这…

php如何拼接数组,PHP怎么合并数组

本篇文章主要给大家介绍PHP怎么实现两个数组合并&#xff0c;并且其中一个数组的值为下标&#xff0c;另一个数组的值为对应的值。PHP进行普通数组的合并&#xff0c;相信大家都已经有所掌握。但是对于新手朋友们来说&#xff0c;合并两个数组&#xff0c;新数组的下标和值分别…

php5 mongodb,ThinkPHP5之Mongodb使用技巧

安装composer require topthink/think-mongo目录结构实践安装完成之后&#xff0c;就根据文档中的介绍开始进行codeing了&#xff0c;但是……首先我们来看下官方的使用文档配置说明不要以为这样就能够正常的使用了&#xff0c;结果远比预想中的艰难直接爆了这样的错误&#xf…

spring boot 下载

spring boot 下载 posted on 2018-07-06 22:38 zhouixi 阅读(...) 评论(...) 编辑 收藏 转载于:https://www.cnblogs.com/1-Admin/p/9275802.html

15个Java多线程面试题

2019独角兽企业重金招聘Python工程师标准>>> 在任何Java面试当中多线程和并发方面的问题都是必不可少的一部分。如果你想获得任何股票投资银行的前台资讯职位&#xff0c;那么你应该准备很多关于多线程的问题。在投资银行业务中多线程和并发是一个非常受欢迎的话题&…

java 将3变为03,03 Java序列化引发的血案

1、前言《手册》第 9 页 “OOP 规约” 部分有一段关于序列化的约定【强制】当序列化类新增属性时&#xff0c;请不要修改 serialVersionUID 字段&#xff0c;以避免反序列失败&#xff1b;如果完全不兼容升级&#xff0c;避免反序列化混乱&#xff0c;那么请修改 serialVersion…

《The Pomodoro Technique》

番茄工作法&#xff0c;专注当下&#xff0c;远离拖延焦虑症 简介What to solveHow to useSome applications自我总结简介 番茄工作法是简单易行的时间管理方法&#xff0c;是由弗朗西斯科西里洛于1992年创立的一种相对于GTD更微观的时间管理方法。 What to solve 各种Deadline…

XCoreRedux框架:Android UI组件化与Redux实践

XCoreRedux框架:Android UI组件化与Redux实践 author: 莫川 https://github.com/nuptboyzhb/XCoreRedux源码Demo&#xff1a;https://github.com/nuptboyzhb/XCoreRedux使用android studio打开该项目。 目录结构 demo 基于xcore框架写的一个小demoxcore XCoreRedux核心代码库…

Gigaset ME/pure/pro体验:就是这个德味

Gigaset是何方神圣&#xff1f;可能大多数人都没有听过。但如果说起西门子&#xff0c;那各位肯定就会“哦”地一声明白了。实际上&#xff0c;Gigaset就是西门子旗下的手机品牌&#xff0c;当年世界上第一部数字无绳电话就是该品牌的产物&#xff0c;所以这次Gigaset在智能手机…

IOS 资料备份

2019独角兽企业重金招聘Python工程师标准>>> 利用本地服务器边下载视频边播放 目前还没有做好&#xff0c;下面是参考资料&#xff0c;做个备份&#xff1b; 参考资料&#xff1a; http://blog.csdn.net/wxw55/article/details/17557295 http://www.code4app.com/io…

BZOJ 1854: [Scoi2010]游戏( 二分图最大匹配 )

匈牙利算法..从1~10000依次找增广路, 找不到就停止, 输出答案. ----------------------------------------------------------------------------#include<bits/stdc.h>using namespace std;const int MAXL 10009, MAXR 1000009;struct edge {int to;edge* next;} E[MA…

Android下文件的压缩和解压(Zip格式)

Zip文件结构 ZIP文件结构如下图所示&#xff0c; File Entry表示一个文件实体,一个压缩文件中有多个文件实体。 文件实体由一个头部和文件数据组&#xff0c;Central Directory由多个File header组成&#xff0c;每个File header都保存一个文件实体的偏移&#xff0c;文件最后由…

MPI多机器实现并行计算

最近使用一个系统的分布式版本搭建测试环境&#xff0c;该系统是基于MPI实现的并行计算&#xff0c;MPI是传统基于msg的系统&#xff0c;这个框架非常灵活&#xff0c;对程序的结构没有太多约束&#xff0c;高效实用简单&#xff0c;下面是MPI在多台机器上实现并行计算的过程。…

Jenkins_获取源码编译并启动服务(二)

一、创建Maven项目二、设置SVN信息三、设置构建触发器四、设置Maven命令五、设置构建后发邮件信息&#xff08;参考文章一&#xff09;六、设置构建后拷贝文件到远程机器并执行命令来自为知笔记(Wiz)