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

咸阳个人兼职网站建设wordpress auto highslide

咸阳个人兼职网站建设,wordpress auto highslide,建站公司会有多大的坑,自媒体一号WordPress主题目录 一、使用mybatis的嵌套查询 二、添加表冗余字段#xff0c;减少联表查询需求 三、分表预处理#xff0c;前端再匹配 一、使用mybatis的嵌套查询 【场景说明】 前端需要展示一张列表#xff0c;其中的字段来源于多张表#xff0c;如何进行查询优化#xff1f; 【…目录 一、使用mybatis的嵌套查询 二、添加表冗余字段减少联表查询需求 三、分表预处理前端再匹配 一、使用mybatis的嵌套查询 【场景说明】 前端需要展示一张列表其中的字段来源于多张表如何进行查询优化 【需求分析】 传统的联表查询使用左外连接连接四张表整体查询从笛卡儿积开始优化效率着实是低我们可以使用mybatis 嵌套查询。所谓嵌套查询就是将 原来多表的联合查询语句拆成多个单表的查询再使用mybatis的语法嵌套在一起。 【实现方式】 首先你得了解Mybatis嵌套查询的一些语法情况 1. association 处理一对一、一对多嵌套、返回一个查询实体 2. collection处理多对多嵌套、返回多个查询实体 3. resultMap用于映射查询数据的实体类 【实现步骤】 分析该场景需求只需要通过id字段去其他表查找对应数据属于一对多模型使用association 其中由于设备表只需要一个统计数量的字段直接联表就好了 1. 编写实现基本功能的语句 SELECTn.id,n.node_name,n.address,n.business_type,n.region_id,n.partner_id,n.create_time,n.update_time,n.create_by,n.update_by,n.remark,COUNT(v.id) AS vm_count FROMtb_node nLEFT JOINtb_vending_machine v ON n.id v.node_id GROUP BYn.id; 2. 实现基本的Mybatis语句 注意不用resultType 而是使用 resultMap select idselectNodeVoList parameterTypeNode resultMapNodeVoResultSELECTn.id,n.node_name,n.address,n.business_type,n.region_id,n.partner_id,n.create_time,n.update_time,n.create_by,n.update_by,n.remark,COUNT(v.id) AS vm_countFROMtb_node nLEFT JOINtb_vending_machine v ON n.id v.node_idwhereif testnodeName ! null and nodeName ! and n.node_name like concat(%, #{nodeName}, %)/ifif testregionId ! null and n.region_id #{regionId}/ifif testpartnerId ! null and n.partner_id #{partnerId}/if/whereGROUP BYn.id/select 3. 编写resultMap resultMap idNodeVoResult typeNodeVoresult propertyid columnid /result propertynodeName columnnode_name /result propertyaddress columnaddress /result propertybusinessType columnbusiness_type /result propertyregionId columnregion_id /result propertypartnerId columnpartner_id /result propertycreateTime columncreate_time /result propertyupdateTime columnupdate_time /result propertycreateBy columncreate_by /result propertyupdateBy columnupdate_by /result propertyremark columnremark /result propertyvmCount columnvm_count /association propertyregion javaTypeRegion columnregion_id selectcom.dkd.manage.mapper.RegionMapper.selectRegionById/association propertypartner javaTypePartner columnpartner_id selectcom.dkd.manage.mapper.PartnerMapper.selectPartnerById//resultMap 4. VO对象说明 NodeVo对象包含了 Node实体、Region实体、Partner实体三个实体、vmCount设备数量字段 Data AllArgsConstructor NoArgsConstructor public class NodeVo extends Node{// 区域private Region region;// 合作商private Partner partner;// 设备数量private Integer vmCount; }二、添加表冗余字段减少联表查询需求 【场景说明】 前端还是需要展示这一张表包含了员工表、角色表、区域表等多表字段 【实现方式】 主体是员工数据对于其他两张表数据使用并不多。基于此我们这次可以做这样一种处理在设计数据表结构的时候将region表的归属区域字段、role表的角色字段以冗余字段的形式一并设计入emp表。这样原先需要联表的需求就退化成单表查询了 【实体说明】 /*** 人员列表对象 tb_emp* * author weizhicong* date 2024-10-21*/ public class Emp extends BaseEntity {private static final long serialVersionUID 1L;/** 主键 */private Long id;/** 人员名称 */Excel(name 人员名称)private String userName;/** 所属区域Id */private Long regionId;/** 归属区域 */Excel(name 归属区域)private String regionName;/** 角色id */private Long roleId;/** 角色编号 */private String roleCode;/** 角色名称 */Excel(name 角色名称)private String roleName;/** 联系电话 */Excel(name 联系电话)private String mobile;........... }【方法缺陷说明】数据一致性问题 这种实现方式虽然优化了查询效率问题。但提高了数据库表设计的耦合度。具体表现在当需要修改区域表名称字段、或者修改角色表的角色字段信息时可能会导致数据的不同步违反了数据一致性的问题。 【改进步骤】 为了解决这个问题我们需要进行同步更新操作具体地在每次更新区域表或角色表字段的同时调用更新员工表的方法进行同步更新同时注意事务的处理。 1. 在EmpMapper中定义好更新员工表的方法 /*** 根据区域ID更新区域信息*/Update(update tb_emp set region_name #{regionName} where region_id #{regionId})public int updateByRegionId(Param(regionName) String regionName, Param(regionId) Long regionId); 2. 在修改区域表的时候注入EmpMapper并调用该方法 注意添加事务注解 /*** 修改区域管理* * param region 区域管理* return 结果*/OverrideTransactional(rollbackFor Exception.class)public int updateRegion(Region region){// 1. 更新区域信息region.setUpdateTime(DateUtils.getNowDate());int result regionMapper.updateRegion(region);//2. 同步更新员工表的区域名称empMapper.updateByRegionId(region.getRegionName(),region.getId());return result;}3. 所以该方法适用于其余表字段修改较少的情况 三、分表预处理前端再匹配 【场景说明】 前端还是需要展示一张涉及多张表数据的列表 【实现方式】 这一次我们后端同学不服了凭啥老是让我们后端同学来处理这个问题于是问题丢给了前端。前端如何实现这个需求呢如果前端能像查字典一样匹配每张表的数据然后组装在一起如何呢显然可以。简单来说前端预先分别调用多张列表的查询接口将表数据预存到页面的响应式数据中形成字典在进行v-for展示时匹配字典得到数据。这样一来联表查询也被优化成单表查询了。 【实现步骤】 1. 预查询合作商表数据 import {listPartner} from /api/manage/partner; import {loadAllParams} from /api/page;// 定义 const partnerlist ref([]);/** 查询合作商列表 */ function getPartnerList() {listPartner(loadAllParams).then(respone {partnerlist.value respone.rows;}) }// 使用 getPartnerList(); 2. 预查询设备类型表 import {listVmType} from /api/manage/vmType; import {loadAllParams} from /api/page;// 定义 const vmTypeList ref([]);/** 查询设备类型列表 */ function getVmTypeList() {listVmType(loadAllParams).then(respone {vmTypeList.value respone.rows;}) }// 使用 getVmTypeList(); 3. 页面匹配调用 !--表格--el-table v-loadingloading :datavmList selection-changehandleSelectionChange!--省略--el-table-column label设备型号 aligncenter propvmTypeId!--字典--template #defaultscopediv v-foritem in vmTypeList :keyitem.idspan v-ifitem.id scope.row.vmTypeId{{ item.name }}/span/div/template/el-table-columnel-table-column label合作商 aligncenter proppartnerId!--字典--template #defaultscopediv v-foritem in partnerlist :keyitem.idspan v-ifitem.id scope.row.partnerId{{ item.partnerName }}/span/div/template/el-table-column!--省略--/el-table
http://www.hkea.cn/news/14319679/

相关文章:

  • 网站开发那个好太原0元网站建设
  • WordPress生成网站地图中国设计师网效果图
  • 做二手车网站需要什么手续租用服务器做视频网站
  • 网站建设要会什么软件做seo网站的公司哪家好
  • 服装鞋帽商城网站建设做网页难吗
  • 可以做直播的游戏视频网站怎样制作一个微信小程序
  • 珠宝类网站建设可执行报告招聘网站哪个好用
  • 网站后台打开慢做智能网站软件下载
  • 蛙蛙写作网站徐州市铜山新区建设局网站
  • 帝国网站增加流量弥勒网站开发
  • 做网站怎么建站点wordpress搜索收录
  • interidea 做网站最版网站建设案例
  • 寿光网站建设哪家好新手如何做企业网站
  • 网站开发组织架构图网站地址栏图标文字
  • 重庆企业建站系统如何做网站的下载的二维码
  • 建设计公司网站要多少钱wordpress提交表单
  • 销售型网站怎么做如何做一起好的视频宣传自己的网站
  • 电商网站 服务器教做糕点的网站
  • vr技术在网站建设的应用成都高新区制作网站
  • 专做项目报告的网站什么是软件开发过程
  • 面试drupal网站开发岗位全国优秀施工企业查询
  • 网站跳转怎么做做网站建议
  • 营销型网站设计方针网站建设设计公司 知乎
  • 做微课常用的网站有哪些.net双拼做公司网站
  • 有什么网站可以做外贸出口信息网页设计制作与代码整体素材
  • wordpress it博客主题衡阳网站推广优化公司
  • wordpress导航类网站网站开发各个文件
  • 分类目录网站怎么做生鲜超市店面设计
  • 怎么做网站不会被屏蔽金山开发
  • 1688网站可以做全屏吗网站创建要多少钱