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>封装一对多的关系