ibatis实现一对一关联查询中映射文件的注意事项

来源:互联网 发布:在vb集成开发环境中 编辑:程序博客网 时间:2024/04/30 18:09

在此主要记录作为初级用户感受比较深的地方,下面粗体的地方尤其注意!

<sqlMap namespace="Member">

    <typeAlias alias="Member"
        type="*.bean.Member" />
    <typeAlias alias="Volunteer"
        type=*.bean.VolunteerInfo" />
            
    <resultMap id="MemberResult" class="Member">
        <result property="memberId" column="MEMBER_ID" />
        <result property="memberName" column="MEMBER_NAME" />
        <result property="sex" column="SEX" />
        <result property="age" column="AGE" />
        <result property="mobile" column="MOBILE" />
        <result property="email" column="EMAIL" />
        <result property="volunteerInfo" column="MEMBER_ID" select="getVolunteerById"/>
    </resultMap>

        
    <resultMap id="VolunteerResult" class="Volunteer">
        <result property="memberId" column="MEMBER_ID" />
        <result property="participateOpt" column="PARTICIPATE_OPT" />
        <result property="participateOpt2" column="PARTICIPATE_OPT2" />
        <result property="homeAddr" column="HOME_ADDR" />
    </resultMap>

    <select id="getVolunteerById" resultMap="VolunteerResult"
        parameterClass="long">
        select participate_opt, participate_opt2,
         home_addr, job_interest, chin_med_level, chin_med_level_other,member_id
         from volunteer_info
         where member_id= #memberId#

    </select>

<!--本来以为上面的查询列中的member_id我用不到就不用写了,没想到总提示找不到此列,因为where条件中用到了该列,百思不得其解,杯具了我老半天!教训!!!-->


    <select id="selectMember" resultMap="MemberResult"
        parameterClass="map">
        select m.member_id, m.member_name, m.sex, m.age, m.mobile, m.email
         from member_base_info m  
        <dynamic prepend=" where ">
            <isPropertyAvailable prepend=" and "
                removeFirstPrepend="true" property="memberId">
                m.member_id = #memberId#
            </isPropertyAvailable>
            <isPropertyAvailable prepend=" and "
                removeFirstPrepend="true" property="memberName">
                m.member_name like #memberName#
            </isPropertyAvailable>
            <isNotNull prepend=" and " removeFirstPrepend="true"
                property="mobile">
                m.mobile like #mobile#
            </isNotNull>
           
        </dynamic>
      
    </select>