Mybatis collections应用 获取包含多个List

来源:互联网 发布:python网络爬虫实战 编辑:程序博客网 时间:2024/06/07 23:04

这是Mybatis的一个小例子,模糊查询
Dao层

package com.dao;import java.util.List;import java.util.Map;import com.domain.Dept;public interface DeptMapper {    public List<Dept> getDeptList(Map<String, Object> param);}

Mapper

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" ><mapper namespace="com.dao.SystemDeptMapper">    <resultMap id="DeptMap" type="com.domain.Dept">        <id column="id" property="deptId" />        <result column="name" property="name" />        <result column="parentId" property="parentId" />        <result column="sortNo" property="sortNo" />        <collection property="childList" ofType="com.domain.Dept"            javaType="ArrayList" column="{parentId=id}" select="getDeptList" />        <collection property="leaders" javaType="java.util.List"            column="id" select="getLeaderList" />    </resultMap>    <select id="getDeptList" parameterType="map" resultMap="DeptMap">        SELECT        abd.id AS id,        abd. NAME AS 'name',        abd.parent_id AS parentId,        abd.sort_no AS sortNo        FROM        abd        WHERE        parent_id =        #{parentId}        <if test="fuzzyName != null">            AND            abd. NAME like CONCAT('%','#{keyword}','%')        </if>    </select>    <select id="getLeaderList" parameterType="java.lang.Integer" resultType="java.lang.String">        SELECT DISTINCT        au.`name`        FROM        au        LEFT JOIN        aa ON au.user_id = aa.user_id        WHERE        aa.dept_id = #{deptId}    </select></mapper>

实体类

package com.domain;import java.util.Date;import java.util.List;/** 1. @Description: 实体类 2. @Title Dept 3. @Package com.domain */public class Dept {private Integer deptId;private String name;private Integer parentId;private Integer sortNo;private List<Dept> childList;private List<String> leaders;public Integer getDeptId() {return deptId;}public void setDeptId(Integer deptId) {this.deptId = deptId;}public String getName() {return name;}public void setName(String name) {this.name = name == null ? null : name.trim();}public Integer getParentId() {return parentId;}public void setParentId(Integer parentId) {this.parentId = parentId;}public Integer getSortNo() {return sortNo;}public void setSortNo(Integer sortNo) {this.sortNo = sortNo;}public List<Dept> getChildList() {return childList;}public void setChildList(List<Dept> childList) {this.childList = childList;}public List<String> getLeaders() {return leaders;}public void setLeaders(List<String> leaders) {this.leaders = leaders;}}

小结:

  1. resultMap中可以添加多个collections标签,返回结果中可以套多个list
  2. 若返回结果为一列,并且想让其转换为list,使resultType为resultType=”java.lang.String”
  3. 模糊查询要使用concat,例如:
    <if test="keyword != null">
    AND
    name like CONCAT('%','#{keyword}','%')
    </if>

后语:
初出茅庐,如有不足,请留言赐教。

0 0
原创粉丝点击