mysql组织机构树迭代查询
组织机构表结构
建表语句
drop table if exists Organize;
/*==============================================================*/
/* Table: Organize */
/*==============================================================*/
create table Organize
(
ID smallint not null auto_increment,
ORG_NAME int,
UP_ID int,
ORG_CODE char(4),
primary key (ID)
);
初始化数据
迭代查询组织结构
oracle里面有迭代函数可用,
select XXX from table
start with XXX
connect by prior XXX
mysql没有类似的迭代函数,需要自己写
创建函数语句
CREATE FUNCTION `getChildLst`(rootId INT)
RETURNS varchar(1000)
BEGIN
DECLARE sTemp VARCHAR(1000);
DECLARE sTempChd VARCHAR(1000);
SET sTemp = ‘$’;
SET sTempChd =cast(rootId as CHAR);
WHILE sTempChd is not null DO
SET sTemp = concat(sTemp,’,’,sTempChd);
SELECT group_concat(id) INTO sTempChd FROM organize where FIND_IN_SET(up_id,sTempChd)>0;
END WHILE;
RETURN sTemp;
END
查询语句如下(增加模糊条件可以对迭代查询后的数据进行筛选)
select o.ID orgId,o.ORG_CODE orgCode,o.ORG_NAME orgName from organize o
where FIND_IN_SET(id, getChildLst(45)) and o.ORG_NAME like ‘%%’;
关键是mybatis如何实现动态sql
mybatis映射文件配置如下:
<resultMap id=”OrgInfoListPageMap” type=”com.znyq.wfCloud.service.pageModel.OrgInfolistPage” >
<result column=”orgId” property=”orgId” jdbcType=”SMALLINT” />
<result column=”orgName” property=”orgName” jdbcType=”VARCHAR” />
<result column=”orgCode” property=”orgCode” jdbcType=”CHAR” />
</resultMap>
<select id=”findOrgInfListPage” resultMap=”OrgInfoListPageMap” parameterType=”java.lang.String”>
select o.ID orgId,o.ORG_CODE orgCode,o.ORG_NAME orgName from organize o
<where>
<if test=”orgId != null and ” != orgId” >
FIND_IN_SET(id, getChildLst(#{orgId}))
</if>
<if test=”orgName != null and ” != orgName” >
and o.ORG_NAME like CONCAT(CONCAT(‘%’, #{orgName}), ‘%’)
</if>
</where>
</select>
映射的对象
public class OrgInfolistPage {
private String orgId;
private String orgCode;
private String orgName;
public String getOrgId() {
return orgId;
}
public void setOrgId(String orgId) {
this.orgId = orgId;
}
public String getOrgCode() {
return orgCode;
}
public void setOrgCode(String orgCode) {
this.orgCode = orgCode;
}
public String getOrgName() {
return orgName;
}
public void setOrgName(String orgName) {
this.orgName = orgName;
}
}
OrganizeMapper:
List<OrgInfolistPage> findOrgInfListPage(@Param(value=”orgId”)String orgId,@Param(value=”orgName”)String orgName);
mysql组织机构树迭代查询相关推荐
- mysql实现树状查询_MySQL实现树状所有子节点查询的方法
本文实例讲述了MySQL实现树状所有子节点查询的方法.分享给大家供大家参考,具体如下: 在Oracle 中我们知道有一个 Hierarchical Queries 通过CONNECT BY 我们可以方 ...
- B+树 范围查询_为什么 MySQL 使用 B+ 树,而不是 B 树或者 Hash?
Java技术栈 www.javastack.cn 关注优质文章 为什么 MySQL 使用 B+ 树是面试中经常会出现的问题,很多人对于这个问题可能都有一些自己的理解,但是多数的回答都不够完整和准确.大 ...
- 在 MySQL 中使用 explain 查询 SQL 的执行计划(转自: 数据分析与开发)
**来源:Oo若离oO my.oschina.net/ruoli/blog/1807394** 1.什么是MySQL执行计划 要对执行计划有个比较好的理解,需要先对MySQL的基础结构及查询基本原理有 ...
- 在MySQL中使用explain查询SQL的执行计划
1.什么是MySQL执行计划 要对执行计划有个比较好的理解,需要先对MySQL的基础结构及查询基本原理有简单的了解. MySQL本身的功能架构分为三个部分,分别是 应用层.逻辑层.物理层,不只是MyS ...
- mysql 统计查询总数_如何一眼识别MySQL选择哪种查询计划(上)
导读 我在<IN字段查询多少个值最合适?>中讲到:MySQL基于索引的查询成本分析主要包含两个方案:扫描索引树和索引统计.那么在这一章节中,我将详细讲解MySQL优化器是如何通过这两种方案 ...
- 组织机构树数据库表设计
公司需要做一个组织机构管理的系统,但是现有的数据库中存储的方式,机构之间的关联只是通过parent_id关联的,这样在查询的时候需要不断的递归查询表数据,性能很差,逻辑也不清晰.所以在网上找到了几种针 ...
- mysql b树子节点个数_MySQL 和 B 树的那些事-爱可生
原标题:MySQL 和 B 树的那些事-爱可生 在介绍B树之前,先来看另一棵神奇的树--二叉排序树(Binary Sort Tree),首先它是一棵树,"二叉"这个描述已经很明显了 ...
- 一种多层级机构数据库表设计的思路及组织机构树数据库表设计
在实际开发过程中,经常存在多个层级结构的设计,而且多个层级结构还需要排序.这里通过将多级结构的数据在同一张表中(无需多张表进行关联),并通过level的巧妙设计来实现单表查询. level的设计原则: ...
- MySQL多表关联查询效率高点还是多次单表查询效率高,为什么?
这里写目录标题 MySQL多表关联查询对比多次单表查询,哪个效率高? 疑问: 高手解答: <阿里巴巴JAVA开发手册>里面写超过三张表禁止join 这是为什么?这样的话那sql要怎么写? ...
最新文章
- SqlDataAdapter上调用存储过程
- python之路 mysql 博客园_Python之路(二十七):Mysql(下)
- 【渝粤题库】国家开放大学2021春3938管理英语2题目
- 数据结构两个月学完_这是我作为数据科学家两年来所学到的
- Booster 系列之——多线程优化
- LeetCode 第 207 场周赛(245/4115,前5.95%)
- linux驱动头文件查找目录,在Fedora 20中查找简单设备驱动程序的头文件
- 数据结构(Splay平衡树):COGS 339. [NOI2005] 维护数列
- Maven : has broken classes path unknown
- TCP/IP卷一实验之------EIGRP
- Java 使用 POI 对 Excel文件 进行读写操作
- IE6下绝对定位层不显示
- bip动作捕捉_Mocap动作捕捉系列
- 概率论与数理统计学习笔记(3)——Pearson相关系数与Spearman相关系数
- c# 基于BouncyCastle.Crypto的国密sm2,sm4封装,与java版本兼容
- PullToRefreshListView刷新2
- 原创 | DDD领域驱动设计第一话
- 3种性格容易焦虑 你知道吗
- Packet Tracer 6.0基础知识
- LSM-tree基本原理及应用