一对多关系的多表关联查询
2017-11-22 15:52
141 查看
情景描述
笔者在业务开发过程当中,遇到过一对多关系的多表关联查询这种情况,为了便于理解和描述,笔者脱离业务,模拟一个超市购物菜单,进行必要的说明;
一对多关系多表关联查询,超市购物菜单图如下:
笔者在业务开发过程当中,遇到过一对多关系的多表关联查询这种情况,为了便于理解和描述,笔者脱离业务,模拟一个超市购物菜单,进行必要的说明;
一对多关系多表关联查询,超市购物菜单图如下:
言归正传
了解上面的情景之后,我直接给各位看客端上如下文件和代码(来源于笔者实际的业务关系)实体类代码如下
实体类 KnowledgeBaseType.java
package com.bonc.bm.kownledgeBase.bo; import java.util.List; /** * 知识库文档栏目的实体类 * * @author 刘斌(qq:1522099825) * @create 2016-12-15 * @myblog http://blog.csdn.net/liubin5620 * */ public class KnowledgeBaseType { //知识库的模块类型 private String knowledge_type; //知识库的类型名称 private String type_name; //知识库模板文件的List集合 private List<KnowledgeBaseList> knowledgelist; public String getKnowledge_type() { return knowledge_type; } public void setKnowledge_type(String knowledge_type) { this.knowledge_type = knowledge_type; } public String getType_name() { return type_name; } public void setType_name(String type_name) { this.type_name = type_name; } public List<KnowledgeBaseList> getKnowledgelist() { return knowledgelist; } public void setKnowledgelist(List<KnowledgeBaseList> knowledgelist) { this.knowledgelist = knowledgelist; } }
实体类KnowledgeBaseList.java
package com.bonc.bm.kownledgeBase.bo; /** * 知识库模板文件的实体类 * * @author 刘斌(qq:1522099825) * @create 2016-12-15 * @myblog http://blog.csdn.net/liubin5620 * */ public class KnowledgeBaseList { //模板id private String modal_id; //模板名称 private String modal_name; //模板的附带图片 private String modal_picture; //模板的模块类型 private String modal_type; public String getModal_id() { return modal_id; } public void setModal_id(String modal_id) { this.modal_id = modal_id; } public String getModal_name() { return modal_name; } public void setModal_name(String modal_name) { this.modal_name = modal_name; } public String getModal_picture() { return modal_picture; } public void setModal_picture(String modal_pi 4000 cture) { this.modal_picture = modal_picture; } public String getModal_type() { return modal_type; } public void setModal_type(String modal_type) { this.modal_type = modal_type; } }
sqlmap.xml代码如下
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd"> <sqlMap namespace="bm.knowledgebase"> <!-- 获取知识库模块类型 --> <select id="getKnowledgeType" resultMap="knowledgeTypeList"> SELECT t.KNOWLEDGE_TYPE, t.TYPE_NAME FROM ${db_schema_pm_dm}.KNOWLEDGE_TYPE t </select> <!-- 知识库模块类型的实体类映射 --> <resultMap class="com.bonc.bm.kownledgeBase.bo.KnowledgeBaseType" id="knowledgeTypeList"> <result property="knowledge_type" column="KNOWLEDGE_TYPE"/> <result property="type_name" column="TYPE_NAME"/> <result property="knowledgelist" column="{knowledge_type=KNOWLEDGE_TYPE}" select="bm.knowledgebase.getKnowledgeInfo"/> </resultMap> <!-- 获取相应模块类型的文件模板 --> <select id="getKnowledgeInfo" parameterClass="java.util.HashMap" resultMap="knowledgeBaseListInfo"> SELECT MODAL_ID, MODAL_NAME, MODAL_PICTURE, MODAL_TYPE FROM ${db_schema_pm_dm}.KNOWLEDGE_BASE_UPDATE WHERE MODAL_TYPE = #knowledge_type# </select> <!-- 知识库每一个模块对应的文件实体类映射 --> <resultMap class="com.bonc.bm.kownledgeBase.bo.KnowledgeBaseList" id="knowledgeBaseListInfo"> <result property="modal_id" column="MODAL_ID"/> <result property="modal_name" column="MODAL_NAME"/> <result property="modal_picture" column="MODAL_PICTURE"/> <result property="modal_type" column="MODAL_TYPE"/> </resultMap> </sqlMap>
knowledge-base.jsp页面代码如下
<!DOCTYPE html> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <%@ taglib prefix="s" uri="/struts-tags"%> <%@ taglib prefix="b" uri="/bonc-tags"%> <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> <% String contextPath = request.getContextPath(); %> <style type="text/css"> .dropdown-submenu { position: relative; } .dropdown-submenu>.dropdown-menu { top: 0; left: 100%; margin-top: -6px; margin-left: -1px; -webkit-border-radius: 0 6px 6px 6px; -moz-border-radius: 0 6px 6px; border-radius: 0 6px 6px 6px; } .dropdown-submenu:hover>.dropdown-menu { display: block; } .dropdown-submenu>a:after { display: block; content: " "; float: right; width: 0; height: 0; border-color: transparent; border-style: solid; border-width: 5px 0 5px 5px; border-left-color: #ccc; margin-top: 5px; margin-right: -10px; } .dropdown-submenu:hover>a:after { border-left-color: #fff; } .dropdown-submenu.pull-left { float: none; } .dropdown-submenu.pull-left>.dropdown-menu { left: -100%; margin-left: 10px; -webkit-border-radius: 6px 0 6px 6px; -moz-border-radius: 6px 0 6px 6px; border-radius: 6px 0 6px 6px; } </style> <style> body { /* margin: 10px; */ background: #e0e9f1; } .col-md-3 { margin-left: 25px; } @media ( min-width : 320px) and (max-width: 452px) { .conth { font-size: 6px; padding: 0; text-align: center; } } </style> <div data-target="#table-example2" data-offset="50" data-spy="scroll" class="col-md-12" style="margin-left: 0px"> <div style="border: 0px green solid; background-color: white;"> <video controls="controls" autoplay="autoplay" style="border: 0px green solid;height:100%;width:100%;"> <source src="<%=request.getContextPath()%>/files/unibomsTrailer.mp4" type="video/mp4" /> <source src="<%=request.getContextPath()%>/files/unibomsTrailer.webm" type="video/webm" /> <object data="<%=request.getContextPath()%>/files/unibomsTrailer.mp4" > <embed src="<%=request.getContextPath()%>/files/unibomsTrailer.mp4" /> </object> </video> </div> <div class="index-wrap" style="background-color: #fff; border: 0px solid blue;"> <ul class="bd-report-list" style="border: 0px red solid"> <c:forEach items="${knowledgeTypeInfo}" var="a" varStatus="status"> <li style="border: 0px blue solid; height: 120px; background-color: #fff; margin-top: 40px;"> <a href="#${a.knowledge_type}" target="_blank" data-toggle="tab" style="color: #fff;"> <c:if test="${status.index==0}"> <img id="autoCheck" alt="focus" src="<%=request.getContextPath()%>/icons/external-marketing.png" style="width: 65px; height: 62px; position: relative; float: left; border: 0px solid blue; margin-left: 30px; margin-right: 25px;"> </c:if> <c:if test="${status.index==1}"> <img alt="focus" src="<%=request.getContextPath()%>/icons/external-product.png" style="width: 65px; height: 62px; position: relative; float: left; border: 0px solid blue; margin-right: 25px;"> </c:if> <c:if test="${status.index==2}"> <img alt="focus" src="<%=request.getContextPath()%>/icons/other-type.png" style="width: 65px; height: 62px; position: relative; float: left; border: 0px solid blue; margin-right: 25px;"> </c:if> <p class="index-head" style="text-align: left;style="color:#fff;">${a.type_name}</p> <!--对于栏目的描述,原本想在码表里追加描述字段,经询问暂时先在页面写死,后期如有新需求可在pm_dm.knowledge_base_update码表追加 --> <c:if test="${status.index==0}"> <div class="index-desc">联通对外宣传合作材料</div> </c:if> <c:if test="${status.index==1}"> <div class="index-desc" style="margin-right: 40px;">主要包含精准营销产品、征信产品、沃指数、能力开放平台等模板</div> </c:if> <c:if test="${status.index==2}"> <div class="index-desc">其他分类</div> </c:if> </a> </li> </c:forEach> </ul> </div> <div class="tab-content"> <!-- 知识库更新展示列表 --> <c:forEach items="${knowledgeTypeInfo}" var="a"> <div class="tab-pane fade" id="${a.knowledge_type}" style="border: 0px blue solid;"> <div class="book_sort" style="border: 1px #C0C0C0 solid;"> <div class="book_new" style="border: 0px blue solid;height: 40px;background-color:#8FBC8F"> <div class="book_left" style="border: 0px blue solid; margin-left: 20px; margin-top:5px;height: 40px; width: 150px;">${a.type_name}</div> <c:forEach items="${a.knowledgelist}" var="b" varStatus="status"> <c:if test="${status.count>=6}"> <div style="margin-right: 20px; border: 0px red solid; text-align: right;"> <i style="cursor: pointer" onclick="findMore(${a.knowledge_type})">更多》</i> </div> </c:if> </c:forEach> </div> <div class="book_class" style="height: 80px;"> <dl id="book_focus"> <c:forEach items="${a.knowledgelist}" var="b" varStatus="status"> <c:if test="${status.count<=5}"> <dt style="border: 0px red solid; margin-left: 20px;"> <img src="<%=request.getContextPath()%>/icons/${b.modal_picture}" alt="focus" style="width: 90px; height: 90px;" /> </dt> </c:if> </c:forEach> </dl> </div> <div class="book_class" style="height: 80px;"> <dl id="book_focus"> <c:forEach items="${a.knowledgelist}" var="b" varStatus="status"> <c:if test="${status.count<=5}"> <dd style="text-align: center; border: 0px red solid; margin-left: 20px;"> <a href="javascript:void(0);" onclick="downloadKnowledgeFile(${b.modal_id});" name="${b.modal_name}" class="blue">${b.modal_name} </a> </dd> </c:if> </c:forEach> </dl> </div> </div> </div> </c:forEach> </div> </div> <input type="hidden" name="identification" value="${params.checkLoginId}" id="identification"> <script> //页面加载的时候,默认点击第一个栏目,展示文件; window.onload=function(){ var i=$("#autoCheck"); i.click(); isExistButton(); }; //定义点击查看更多文件,一个栏目只展示5个文件; function findMore(knowledgeBaseId){ url=""; var modalType=knowledgeBaseId; var url="<%=request.getContextPath()%>/bm/business-management/kownledge-base!getMoreDetail.action?modalType="+ modalType; window.location.href=url; } //定义文件下载的function; function downloadKnowledgeFile(id){ var url = "<%=request.getContextPath()%>/bm/business-management/kownledge-base!downloadFile.action?modalId="+id; location.href = url; } </script>
相关文章推荐
- java的orm框架 mybatis 多对多 一对多关系的关联映射和查询--简单易懂,理解才是王道
- A/B表为1对多关系,要求联合查询B表只提取一条与A记录关联的记录
- 多对多关系的多表关联查询
- A/B表替1对多关系,要求联合查询B表只提取一条与A记录关联的记录
- hibernate关联表查询返回关系表数据问题
- 【JavaWeb-21】多对多关系、类和关联级别的加载策略、HQL查询详解、Hibernate连接池配置、Hibernate里悲观锁乐观锁使用
- ORACLE查询树型关系(connect by prior start with)
- UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现
- MyBatis学习总结(五)——实现关联表查询
- MyBatis学习总结——实现关联表查询
- 通过Mybatis拦截器巧妙实现通用查询打破实体与字段对应关系
- Hibernate关系映射(10)_多对多单向关联
- 教学思路SQL之入门习题《学生成绩》 四、多表连接关系查询
- laravel中的关联查询with问题
- UML类图关系(泛化 、继承、实现、依赖、关联、聚合、组合)总结
- UML中几种类间关系:继承、实现、依赖、关联、聚合、组合的联系与区别
- 基于关系数据库的VB通用查询编程技巧
- 使用INTERSECT来提高关联查询的效率
- MyBatis一对一关系映射:根据班级id查询班级信息并查出辅导员的信息
- UML关系(泛化,实现,依赖,关联(聚合,组合))