今天遇到的原因是因为下面红底id没有,导致关联查询没有条件(id字段没传),所以一直没有执行。
<?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.***.abc.dao.CompanyMapper" >
<resultMap id="BaseResultMap" type="com.***.abc.bean.Company" >
<id column="id" property="id" jdbcType="BIGINT" />
<result column="company_name" property="companyName" jdbcType="VARCHAR" />
//一个公司包含多个员工,根据公司id可以查出一个公司 所有员工,一对多的关系。
<collection property="empList" fetchType="lazy" ofType="com.***.abc.bean.Emp" column="id"
javaType="ArrayList" select="com.***.abc.dao.EmpMapper.queryListByCompanyId"/>
</resultMap>
//根据id去查询公司
<select id="getCompany" resultMap="BaseResultMap">
select id,company_name,empList from company where id=#{id}
</select>
</mapper>
定义一个员工接口
public interface EmpMapper {
List<Emp> queryListByCompanyId(Long companyId);
}
//emp的xml
<?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.***.abc.dao.EmpMapper"> <select id="queryListByCompanyId" parameterType="long" resultType="com.***.abc.bean.Emp"> SELECT * FROM emp WHERE f.company=#{id} </select> </mapper>