七、mybatis映射

mybatis映射

<!--
    mybatis对于处理简单的单表查询一般使用resultType就可以解决
    对于多表联合查询都需要使用resultMap进行详细的描述
    告诉mybatis怎么封装,自己定义规则
-->
<!--封装方式1 官方推荐-->
<resultMap id="userWithDetailMap" type="com.text.pojo.UserWithDetail">
    <!--先封装User对象-->
    <!--设置主键-->
    <!--property对应java的属性名,column对应数据库查询出来的列名-->
    <id property="uId" column="u_id"></id>
    <result property="phone" column="phone"/>
    <result property="createDate" column="create_date"/>
    <result property="status" column="status"/>
    <result property="password" column="password"/>
    <!--封装对象属性-->
    <association property="userDetail" javaType="com.text.pojo.UserDetail">
        <id property="id" column="ud_id"/>
        <result property="address" column="address"/>
        <result property="cid" column="cid"/>
    </association>
</resultMap>

<!--封装方式2-->
<resultMap id="userWithDetailMap2" type="com.text.pojo.UserWithDetail">
    <!--先封装User对象-->
    <!--设置主键-->
    <id property="uId" column="u_id"></id>
    <result property="phone" column="phone"/>
    <result property="createDate" column="create_date"/>
    <result property="status" column="status"/>
    <result property="password" column="password"/>
    <!--封装对象属性-->
    <result property="userDetail.id" column="ud_id"/>
    <result property="userDetail.address" column="address"/>
    <result property="userDetail.cid" column="cid"/>
</resultMap>
<resultMap id="userBaseMap" type="com.text.pojo.UserWithDetail">
    <!--先封装User对象-->
    <!--设置主键-->
    <id property="uId" column="u_id"></id>
    <result property="phone" column="phone"/>
    <result property="createDate" column="create_date"/>
    <result property="status" column="status"/>
    <result property="password" column="password"/>
</resultMap>

<!--
        封装方式3
        如果有的查询太复杂了,推荐使用分步查询
-->
<resultMap id="userWithDetailMap3" extends="userBaseMap" type="com.text.pojo.UserWithDetail">
    <!--封装对象属性-->
    <association property="userDetail" select="com.text.mapper.UserDetailMapper.queryByUserId" column="u_id">

    </association>
</resultMap>
<select id="queryByUserId" resultType="com.text.pojo.UserDetail">
    select * from user_detail
    where u_id = #{id}
</select>

一般使用association进行类的查询

如果结构过于复杂,使用分布查询

pojo内嵌list

<resultMap id="userWithBlog" extends="userBaseMap" type="com.text.pojo.UserBlog">
    <!--封装博客-->
    <!--ofType是描述集合当中元素的数据类型-->
    <collection property="blog" ofType="com.text.pojo.Blog">
        <id property="id" column="b_id"></id>
        <result property="title" column="title"/>
        <result property="summary" column="summary"/>
        <result property="content" column="blog_content"/>
        <!--博客里面还有评论-->
        <collection property="comment" ofType="com.text.pojo.Comment">
            <id property="id" column="cid"/>
            <result property="content" column="comment_content"/>
        </collection>
    </collection>
</resultMap>

使用collection标签进行封装

在pojo内注意用list<E>封装一对多的关系

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容