MyBatis collection 集合嵌套查询树形节点
<!-- 这样的实现原理,嵌套 SQL 执行,这里就存在一个性能上的问题。比如 10 万条数据,需要执行 10 万次 SELECT 语句。所以不推荐数据量级大的树形结构。 如果结构不经常改变,数量级还行,可以考虑加缓存。这样,读取的数据库的次数大大减少,比如省市区。 必备3个属性:id,name,childList. --> <resultMap id="BaseTreeResultMap" type="com.soyea.dto.DeptLevelDTO"> <id column="id" property="id" jdbcType="INTEGER"/> <result column="name" property="name" jdbcType="VARCHAR"/> <result column="parent_id" property="parentId" jdbcType="INTEGER"/> <result column="level" property="level" jdbcType="VARCHAR"/> <result column="seq" property="seq" jdbcType="INTEGER"/> <result column="remark" property="remark" jdbcType="VARCHAR"/> <result column="operator" property="operator" jdbcType="VARCHAR"/> <result column="operate_time" property="operateTime" jdbcType="TIMESTAMP"/> <result column="operate_ip" property="operateIp" jdbcType="VARCHAR"/> <!-- property:JavaBean中的属性名称 column:数据库中的字段名称,代表会拿父节点 id ,作为参数获取deptList对象 ofType 用来区分 JavaBean 属性类型和集合包含的类型 select 是用来执行循环哪个 SQL --> <collection column="id" property="deptList" ofType="com.soyea.dto.DeptLevelDTO" select="selectDeptChildrenById"/> </resultMap> <!-- 根据parent_id,先查出所有一级部门 --> <select id="queryDeptTreeList" resultMap="BaseTreeResultMap"> SELECT <include refid="Base_Column_List"/> from sys_dept where parent_id = 0; </select> <!-- 再递归查询出一级部门下的所有子部门 --> <select id="selectDeptChildrenById" resultMap="BaseTreeResultMap"> select <include refid="Base_Column_List"/> from sys_dept where parent_id= #{id} </select>
相关推荐
-
计算两个时间之间相差多少天,多少小时,多少分钟,多少秒 java
2019-1-13
-
applicationContext.xml配置文件模板 java
2019-1-12
-
读取a.txt和b.txt中有序的序列,合并有序序列保存成c.txt java
2019-1-13
-
java获取一天前的时间 java
2019-1-7
-
java反射实现的excel数据导出 java
2019-1-7
-
java获取用户真实IP地址 java
2019-1-13
-
web开发跨域请求头工具类 java
2019-1-13
-
JAVA限流工具类 java
2019-1-7
-
MongoDB增删改查 java
2019-1-7
-
mybatis-generator逆向工程 java
2019-1-13