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之间的联系,还有就是配置文件之间的关联。