当前位置: 首页 > news >正文

外贸网站定制公司哪家好做最好的win7系统下载网站

外贸网站定制公司哪家好,做最好的win7系统下载网站,ppt设计制作,百度站长验证网站失败1. 树形结构 树形结构#xff0c;是指#xff1a;数据元素之间的关系像一颗树的数据结构。由树根延伸出多个树杈 它具有以下特点#xff1a; 每个节点都只有有限个子节点或无子节点#xff1b;没有父节点的节点称为根节点#xff1b;每一个非根节点有且只有一个父节点是指数据元素之间的关系像一颗树的数据结构。由树根延伸出多个树杈 它具有以下特点 每个节点都只有有限个子节点或无子节点没有父节点的节点称为根节点每一个非根节点有且只有一个父节点除了根节点外每个子节点可以分为多个不相交的子树树里面没有环路(cycle) 2. 常见问题 在实际开发中很多数据都是树形结构例如地区、页面上的菜单、上下级关系的组织等等这时就需要我们从数据源中读取到数据通过某些方式拼成树形结构 然后再给前端展示。对于一些不经常变化且使用频繁的数据可以考虑将拼好的树形结构数据放入缓存每次用的时候直接读取出来就可以使用。 3. 准备环境 springboot: 2.6.0 mysql: 5.7 CREATE TABLE t_region (id bigint(20) NOT NULL AUTO_INCREMENT,name varchar(100) DEFAULT NULL,region_type varchar(255) DEFAULT NULL,parent_id bigint(20) DEFAULT NULL,PRIMARY KEY (id) ) ENGINEInnoDB AUTO_INCREMENT1 DEFAULT CHARSETutf8;INSERT into t_region(name, region_type, parent_id) VALUES(山西省, province, 0); INSERT into t_region(name, region_type, parent_id) VALUES(临汾市, city, 1); INSERT into t_region(name, region_type, parent_id) VALUES(尧都区, district, 2);INSERT into t_region(name, region_type, parent_id) VALUES(北京, province, 0); INSERT into t_region(name, region_type, parent_id) VALUES(北京市, city, 4); INSERT into t_region(name, region_type, parent_id) VALUES(朝阳区, district, 5);INSERT into t_region(name, region_type, parent_id) VALUES(太原市, city, 1); INSERT into t_region(name, region_type, parent_id) VALUES(小店区, district, 7);pom.xml ?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdorg.example/groupIdartifactIdspring-test/artifactIdversion1.0-SNAPSHOT/versionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.6.0/versionrelativePath//parentpropertiesmaven.compiler.source8/maven.compiler.sourcemaven.compiler.target8/maven.compiler.targetproject.build.sourceEncodingUTF-8/project.build.sourceEncoding/propertiesdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactId/dependencydependencygroupIdcom.baomidou/groupIdartifactIdmybatis-plus-boot-starter/artifactIdversion3.5.2/version/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversion1.16.10/versionscopeprovided/scope/dependencydependencygroupIdcom.alibaba/groupIdartifactIddruid-spring-boot-starter/artifactIdversion1.1.10/version/dependencydependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactId/dependency!-- druid依赖 --dependencygroupIdcom.alibaba/groupIdartifactIddruid/artifactIdversion1.1.0/version/dependency/dependencies /projectspring:main:allow-circular-references: truedatasource: #定义数据源#127.0.0.1为本机测试的ip3306是mysql的端口号。serverTimezone是定义时区照抄就好mysql高版本需要定义这些东西#useSSL也是某些高版本mysql需要问有没有用SSL连接url: jdbc:mysql://192.168.1.141:3306/db_user?serverTimezoneGMT%2B8useSSLFALSEusername: root #数据库用户名root为管理员password: 123456 #该数据库用户的密码# 使用druid数据源type: com.alibaba.druid.pool.DruidDataSource mybatis-plus:# xml扫描多个目录用逗号或者分号分隔告诉 Mapper 所对应的 XML 文件位置mapper-locations: classpath:mapper/*.xml# 以下配置均有默认值,可以不设置global-config:db-config:#主键类型 AUTO:数据库ID自增 INPUT:用户输入ID,ID_WORKER:全局唯一ID (数字类型唯一ID), UUID:全局唯一ID UUID;id-type: auto#数据库类型db-type: MYSQLconfiguration:# 是否开启自动驼峰命名规则映射:从数据库列名到Java属性驼峰命名的类似映射map-underscore-to-camel-case: true# 如果查询结果中包含空值的列则 MyBatis 在映射的时候不会映射这个字段call-setters-on-nulls: true# 这个配置会将执行的sql打印出来在开发或测试的时候可以用log-impl: org.apache.ibatis.logging.stdout.StdOutImpl表对应的实体类 Data TableName(value t_region) public class Region {TableId(type IdType.AUTO)private Long id;/*** 名称*/private String name;/*** 类型*/private String regionType;/*** 父id*/private Long parentId; }返回给前端的实体类 Data public class RegionVO {private Long id;/*** 名称*/private String name;/*** 类型*/private String regionType;/*** 父id*/private Long parentId;private ListRegionVO children; }4.实现方式 1.基于xml RegionMapper.xml ?xml version1.0 encodingUTF-8? !DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//EN http://mybatis.org/dtd/mybatis-3-mapper.dtd mapper namespaceorg.example.mapper.RegionMapperresultMap idregionMap typeorg.example.dto.RegionVOid propertyid columnid/idresult propertyname columnname/resultresult propertyregionType columnregion_type/resultresult propertyparentId columnparent_id/resultcollection propertychildren ofTypeorg.example.dto.RegionVO javaTypejava.util.Listcolumnid selectgetById/collection/resultMapselect idgetById resultMapregionMap parameterTypemapSELECT*FROMt_regionwhere parent_id#{id}/selectselect idgetAll resultMapregionMapSELECT*FROMt_region where parent_id 0/select/mapper RegionMapper Mapper public interface RegionMapper extends BaseMapperRegion {ListRegionVO getAll(); }RegionService public interface RegionService extends IServiceRegion {ListRegionVO getAll(); }RegionServiceImpl Service public class RegionServiceImpl extends ServiceImplRegionMapper, Region implements RegionService {Overridepublic ListRegionVO getAll(){return baseMapper.getAll();} }这种方式按照上边添加的数据量(8条)共执行了9次查询 2.LambdaQueryWrapper RegionServiceImpl添加如下代码 Overridepublic ListRegionVO getAllWrapper(){LambdaQueryWrapperRegion wrapper new LambdaQueryWrapper();wrapper.eq(Region::getParentId, 0);//查询根级ListRegion regions baseMapper.selectList(wrapper);ListRegionVO list regions.stream().map(p - {RegionVO obj new RegionVO();BeanUtils.copyProperties(p, obj);return obj;}).collect(Collectors.toList());list.forEach(this::getChildren);return list;}private void getChildren(RegionVO item){LambdaQueryWrapperRegion wrapper new LambdaQueryWrapper();wrapper.eq(Region::getParentId, item.getId());//根据parentId查询ListRegion list baseMapper.selectList(wrapper);ListRegionVO voList list.stream().map(p - {RegionVO vo new RegionVO();BeanUtils.copyProperties(p, vo);return vo;}).collect(Collectors.toList());//写入到childrenitem.setChildren(voList);//如果children不为空继续往下找if (!CollectionUtils.isEmpty(voList)) {voList.forEach(this::getChildren);}}这种方式按照上边添加的数据量(8条)共执行了9次查询 3.递归方法 RegionServiceImpl添加如下代码 Override public ListRegionVO build(){//一次把所有的数据都查出来ListRegion regions baseMapper.selectList(null);ListRegionVO allList regions.stream().map(p - {RegionVO vo new RegionVO();BeanUtils.copyProperties(p, vo);return vo;}).collect(Collectors.toList());//指定根节点的parentIdreturn buildChildren(0L, allList); }private ListRegionVO buildChildren(Long parentId, ListRegionVO allList){ListRegionVO voList new ArrayList();for (RegionVO item : allList) {//如果相等if (Objects.equals(item.getParentId(), parentId)) {//递归自己调自己item.setChildren(buildChildren(item.getId(), allList));voList.add(item);}}return voList; }这种就不必说了一次查询所有数据出来一共执行一次查询 4.总结 查询方式有很多应该使用哪种需要猿们结合具体情况选择。 第一种情况当整体数据量特别大 层级不深 需要按照某个根节点查询时推荐使用第一、二种方式。 第二种情况当需要查询整个树时推荐使用第三种方式。
http://www.w-s-a.com/news/674263/

相关文章:

  • 我做夫人那些年网站登录wordpress 扫码付费
  • 网站关键词代码怎么做公司 网站建设
  • 哈尔滨多语言网站建设wordpress分类链接
  • 购物网站项目介绍软件开发流程的五大步骤
  • 做的网站怎么放在网上2008 iis搭建网站
  • 网站维护服务公司上海兼职网站制作
  • 企业做网站需要多少钱湘潭九华网站
  • 嘉兴建站服务微营销官网
  • 比较好的网页模板网站浦项建设(中国)有限公司网站
  • 有趣的个人网站网页设计与制作的岗位职责
  • 有建设网站的软件吗长沙做网站的公司对比
  • 网站的外链接数中铝长城建设有限公司网站
  • 北京建设网站公司网站建设费用 无形资产
  • 适合seo的建站系统如何建立网页
  • 我想自己建立一个网站给大家分享个永久免费的云服务器
  • 怎样做网站和网站的友情链接官网优化 报价
  • 购买网站空间大小聊城网站空间公司
  • 做像美团淘宝平台网站多少钱开发网站企业
  • 网站建设前期费用二手购物网站策划书
  • dede学校网站百度联盟是什么
  • 献县网站建设网站开发专业定制
  • 龙华做网站yihe kj安徽六安彩礼一般给多少
  • flash网站建设公司我的小程序在哪里找
  • 建网站需要数据库吗如何制作简单的网页链接
  • 杭州设计企业网站高端公司上虞做网站公司
  • 做网站能赚钱么用wordpress搭建知名网站
  • 阿里云服务器网站开发青岛做网站找哪家
  • 凡科做的网站为什么打不开织梦cms仿某作文网站整站源码(带采集)安装数据库
  • 免费h5模板网站模板汽车报价网址
  • 蔡甸网站建设烟台网站建设yt