Mybatis是新多表查询的方式也有二种 :
第一种是 : 编写多表关联查询的SQL语句 , 使用ResultMap建立结果集映射 , 在ResultMap中建立多表结果集映射的标签有association和collection
<resultMap id="Account_User_Map" type="com.heima.entity.Account"> <id property="id" column="id"></id> <result property="uid" column="uid"></result> <result property="money" column="money"></result> <association property="user"> <id property="id" column="uid"></id> <result property="username" column="username"></result> <result property="birthday" column="birthday"></result> <result property="sex" column="sex"></result> <result property="address" column="address"></result> </association> </resultMap> <!--public Account findByIdWithUser(Integer id);--> <select id="findByIdWithUser" resultMap="Account_User_Map"> select a.*, username, birthday, sex, address from account a , user u where a.UID = u.id and a.ID = #{id} ; </select>
第二种是 : 将多表查询分解为多个单表查询, 使用ResultMap表的子标签association和collection标签的select属性指定另外一条SQL的定义去执行, 然后执行结果会被自动封装
<resultMap id="Account_User_Map" type="com.heima.entity.Account" autoMapping="true"> <id property="id" column="id"></id> <association property="user" select="com.heima.dao.UserDao.findById" column="uid" fetchType="lazy"></association> </resultMap> <!--public Account findByIdWithUser(Integer id);--> <select id="findByIdWithUser" resultMap="Account_User_Map"> select * from account where id = #{id} </select>