ibatis高级特性,处理表与表之间的关联。ibatis中,提供了Statement嵌套支持,通过Statement嵌套,我们可以实现关联数据的操作。
1、一对多关联:
- <sqlMapnamespace="User">
- <typeAliasalias="user"type="com.ibatis.sample.User"/>
- <typeAliasalias="address"type="com.ibatis.sample.Address"/>
- <resultMapid="get-user-result"class="user">
- <resultproperty="id"column="id"/>
- <resultproperty="name"column="name"/>
- <resultproperty="sex"column="sex"/>
- <resultproperty="addresses"column="id"
- select="User.getAddressByUserId"/>
- </resultMap>
- <selectid="getUsers"
- parameterClass="java.lang.String"
- resultMap="get-user-result">
- <![CDATA[
- select
- id,name,
- sex
- fromt_user
- whereid=#id#
- ]]>
- </select>
- <selectid="getAddressByUserId"
- parameterClass="int"
- resultClass="address">
- <![CDATA[
- select
- address,
- zipcode
- fromt_address
- whereuser_id=#userid#
- ]]>
- </select>
- </sqlMap>
多表关联查询大量数据时建议采用存储过程来处理,来避免系统问题
2、一对一表关联:
- <resultMapid="get-user-result"class="user">
- <resultproperty="id"column="id"/>
- <resultproperty="name"column="name"/>
- <resultproperty="sex"column="sex"/>
- <resultproperty="address"column="t_address.address"/>
- <resultproperty="zipCode"column="t_address.zipcode"/>
- </resultMap>
- <selectid="getUsers"
- parameterClass="java.lang.String"
- resultMap="get-user-result">
- <![CDATA[
- select*
- fromt_user,t_address
- wheret_user.id=t_address.user_id
- ]]>
- </select>
在进行表关联的时候一定要注意:关联的2个pojo之间的联系,还有就是配置文件之间的关联。