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